Per abilitare l'accesso da Internet pubblico per un servizio Kubernetes in esecuzione in un cluster di Tanzu Kubernetes Grid, pubblicare il servizio internamente, quindi assegnargli un indirizzo IP pubblico e creare una regola DNAT che esponga il servizio pubblicato a un indirizzo IP nel CIDR in ingresso.
L'accesso Internet ai servizi del cluster viene gestito da un bilanciamento del carico tramite un indirizzo IP pubblico con DNAT nel blocco CIDR in ingresso specificato al momento dell'attivazione di Tanzu Kubernetes Grid. In VMware Cloud on AWS, il servizio di bilanciamento del carico viene implementato da NSX Container Plug-in, che viene configurato automaticamente per ogni cluster di SDDC in cui si attiva Tanzu Kubernetes Grid. Per ulteriori informazioni, vedere Panoramica di NSX Container Plug-in.
I passaggi seguenti illustrano un workflow tipico che è possibile utilizzare per rendere un servizio Kubernetes accessibile da Internet pubblico. L'articolo di VMware Cloud Tech Zone Configurazione dell'accesso pubblico ai cluster Tanzu Kubernetes in VMware Cloud on AWS spiega questo workflow in modo più dettagliato.
Procedura
- Accedere a VMware Cloud Services all'indirizzo https://vmc.vmware.com.
- Utilizzare l'API VMware Cloud on AWS per pubblicare il servizio internamente.
Distribuirlo come servizio di tipo LoadBalancer specificando lo spazio dei nomi e le porte dei nodi, come indicato qui.
apiversion: v1
kind: service
metadata:
name: example-svc
namespace: ns1
labels:
app: hardtop-example
spec:
ports:
port:80
targetPort: 8080
type: LoadBalancer
selector:
app: example-app
Se si distribuisce un servizio Kubernetes di
type: LoadBalancer
, il servizio viene pubblicato e reso accessibile all'interno del cluster in corrispondenza della porta specificata (in questo esempio
port: 80
) e la porta di un nodo per il servizio viene mappata a una porta casuale superiore a 30000.
- Creare una regola del firewall del gateway di elaborazione VMware Cloud on AWS che consenta l'accesso alla macchina virtuale nell'IP esterno e nella porta del nodo mappato (in questo esempio viene utilizzata la porta 31552).
Utilizzare un comando
kubectl come questo per restituire le proprietà del servizio necessarie per la regola del firewall.
kubectl get service example-svc -n ns1
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
example-svc LoadBalancer 10.96.249.36 10.130.1.9 80:31552/TCP
Eseguire la procedura descritta in
Aggiunta o modifica delle regole del firewall del gateway di gestione nella guida di
Rete e sicurezza di VMware Cloud on AWS per creare una regola con parametri come i seguenti:
Opzione |
Descrizione |
Fonti |
Qualsiasi |
Destinazioni |
IP EXTERNAL del servizio (10.130.1.9 in questo esempio) |
Servizi |
HTTP |
Azione |
Consenti |
- Richiedere un indirizzo IP pubblico per la macchina virtuale che fornisce il servizio.
- Creare una regola DNAT per questo IP pubblico.
Seguire la procedura descritta in
Creazione o modifica di regole NAT nella guida di
Rete e sicurezza di VMware Cloud on AWS per creare una regola DNAT che corrisponda all'IP pubblico per l'IP interno. Se la regola specifica
Corrispondenza con indirizzo interno, sarà necessario creare anche una regola del firewall che consenta l'accesso all'indirizzo
IP pubblico nell'interfaccia Internet.