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

  1. Accedere a VMware Cloud Services all'indirizzo https://vmc.vmware.com.
  2. 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.
  3. 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
  4. Richiedere un indirizzo IP pubblico per la macchina virtuale che fornisce il servizio.
    Seguire la procedura descritta in Richiesta o rilascio di un indirizzo IP pubblico nella guida di Rete e sicurezza di VMware Cloud on AWS:
  5. 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.