Accesso ai cluster Classic tramite l'endpoint del servizio cloud privato

Per i cluster Classic di IBM Cloud Kubernetes Service in cui è abilitato solo l'endpoint del servizio cloud privato, è necessario esporre l'endpoint master tramite un NLB privato ed essere connessi alla rete privata Classic di IBM Cloud tramite una connessione VPN per accedere al cluster.

Prima di iniziare

  1. Installare gli strumenti CLI necessari.
  2. Configurare una Virtual Private Network (VPN) for VPC connessione alla rete privata classica di IBM Cloud.
  3. Verifica che il tuo cluster funzioni correttamente: ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID.

Esposizione dell'endpoint master tramite un NLB privato

Prima di potersi connettere al master del cluster tramite la rete privata, è necessario rendere accessibile l'endpoint del servizio cloud privato tramite un NLB privato.

  1. Ottieni l'endpoint del servizio cloud privato URL e la porta corrispondente al tuo cluster.

    ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID
    

    In questo output di esempio, l'URL dell'endpoint del servizio privato è https://c1.private.us-east.containers.cloud.ibm.com:25073.

    NAME:                           setest
    ID:                             b8dcc56743394fd19c9f3db7b990e5e3
    State:                          normal
    Status:                         healthy cluster
    Created:                        2019-04-25T16:03:34+0000
    Location:                       wdc04
    Master URL:                     https://c1.private.us-east.containers.cloud.ibm.com:25073
    Public Service Endpoint URL:    -
    Private Service Endpoint URL:   https://c1.private.us-east.containers.cloud.ibm.com:25073
    Master Location:                Washington D.C.
    ...
    
  2. Crea un file YAML denominato “ kube-api-via-nlb.yaml ”. Questo file YAML crea un servizio LoadBalancer privato ed espone l'endpoint del servizio cloud privato tramite tale NLB. Sostituisci <private_service_endpoint_port> con la porta che hai individuato nel passaggio precedente.

    apiVersion: v1
    kind: Service
    metadata:
      name: kube-api-via-nlb
      annotations:
        service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: private
      namespace: default
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: 8080 # Or, the <private_service_endpoint_port> that you found earlier.
        targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise.
    ---
    kind: Endpoints
    apiVersion: v1
    metadata:
      name: kube-api-via-nlb
    subsets:
      - addresses:
          - ip: 172.20.0.1
        ports:
          - port: 2040
    
  3. Per creare l'NLB privato, è necessario essere connessi al master cluster. Poiché non è ancora possibile connettersi tramite l'endpoint del servizio cloud privato da una VPN o dall' IBM Cloud Direct Link, è necessario connettersi al master del cluster e creare l'NLB utilizzando l'endpoint del servizio cloud pubblico o una dashboard.

    • Se hai abilitato solo l'endpoint del servizio cloud privato, puoi utilizzare la dashboard di Headlamp per creare l'NLB. Headlamp inoltra tutte le richieste all'endpoint del servizio cloud privato del master.

      1. Nella pagina " Cluster ", fare clic sul cluster a cui si desidera accedere.
      2. Ottieni il tuo sottodominio Ingress: ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID | grep "Ingress Subdomain".
      3. Apri https://headlamp.<ingress_subdomain> in un browser, effettua l'accesso e vai su + > Carica YAML.
      4. Carica il file “ kube-api-via-nlb.yaml ” e fai clic su “Applica ”.
      5. Accedere a Rete > Servizi, verificare che il servizio " kube-api-via-nlb " sia stato creato e prendere nota dell'indirizzo IP esterno " 10.x.x.x ". Questo indirizzo IP rende accessibile l'endpoint del servizio cloud privato per il master di Kubernetes sulla porta specificata nel file YAML.
    • Se hai abilitato anche l'endpoint del servizio cloud pubblico, hai già accesso al master.

      1. Scarica il file di configurazione kubeconfig per il tuo cluster e aggiungilo al tuo file kubeconfig esistente in ~/.kube/config o all'ultimo file nella variabile di ambiente KUBECONFIG.
        ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID
        
      2. Crea l'NLB e l'endpoint.
        kubectl apply -f kube-api-via-nlb.yaml
        
      3. Verifica che l'NLB kube-api-via-nlb venga creato. Nell'output, annota l'indirizzo 10.x.x.x EXTERNAL-IP. Questo indirizzo IP rende accessibile l'endpoint del servizio cloud privato per il master di Kubernetes sulla porta specificata nel file YAML.
        kubectl get svc -o wide
        
        In questo esempio di output, l'indirizzo IP dell'endpoint del servizio cloud privato del master di Kubernetes è 10.186.92.42.
        NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)          AGE   SELECTOR
        kube-api-via-nlb         LoadBalancer   172.21.150.118   10.186.92.42     443:32235/TCP    10m   <none>
        ...
        
  4. Sui computer client su cui voi o i vostri utenti eseguite i comandi di “ kubectl ”, aggiungete l’indirizzo IP NLB e l’endpoint del servizio cloud privato URL al file /etc/hosts. Non includere alcuna porta nell'indirizzo IP e in URL e non includere https:// in URL.

    • Per gli utenti di macOS e Linux:
        sudo nano /etc/hosts
        ```
    * Per gli utenti Windows:
    ```sh {: pre}
        notepad C:\Windows\System32\drivers\etc\hosts
        ```
        A seconda delle autorizzazioni della tua macchina locale, potresti dover eseguire Blocco note come amministratore, per modificare il file degli host.
    
        ```sh {: codeblock}
        10.186.92.42  c1.private.us-east.containers.cloud.ibm.com
        ```
    
  5. Verifica di essere connesso alla rete privata tramite una connessione VPN o IBM Cloud Direct Link.

  6. Scarica il file di configurazione kubeconfig per il tuo cluster e aggiungilo al tuo file kubeconfig esistente in ~/.kube/config o all'ultimo file nella variabile di ambiente KUBECONFIG.

    ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID --endpoint private
    
  7. Verifica che i comandi kubectl vengano eseguiti correttamente e che il contesto Kubernetes sia impostato sul tuo cluster.

    kubectl config current-context
    

    Output di esempio

    <cluster_name>/<cluster_ID>