Accès aux clusters classiques via le noeud final de service cloud privé

Pour les clusters IBM Cloud Kubernetes Service Classic sur lesquels seul le point de terminaison du service de cloud privé est activé, vous devez exposer le point de terminaison maître via un NLB privé et être connecté au réseau privé classique d' IBM Cloud via une connexion VPN pour accéder au cluster.

Avant de commencer

  1. Installez les outils CLI requis.
  2. Configurer une connexion Virtual Private Network (VPN) for VPC au réseau privé classique d’ IBM Cloud.
  3. Vérifiez que votre cluster fonctionne correctement : ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID.

Exposition du point de terminaison maître via un NLB privé

Avant de pouvoir vous connecter au maître du cluster via le réseau privé, vous devez exposer le point de terminaison du service cloud privé via un NLB privé.

  1. Obtenez l'URL et le port de noeud final de service cloud privé pour votre cluster.

    ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID
    

    Dans cet exemple de sortie, l'URL de noeud final de service privé est 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. Créez le fichier YAML kube-api-via-nlb.yaml. Ce fichier YAML crée un service LoadBalancer privé et exposé le noeud final de service cloud privé via cet équilibreur de charge de réseau. Remplacez <private_service_endpoint_port> par le port que vous avez trouvé à l'étape précédente.

    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. Pour créer le NLB privé, vous devez être connecté au maître cluster. Comme il n'est pas encore possible de se connecter via le point de terminaison du service cloud privé à partir d'un VPN ou d' IBM Cloud Direct Link, vous devez vous connecter au maître du cluster et créer le NLB à l'aide du point de terminaison du service cloud public ou d'un tableau de bord.

    • Si vous avez activé uniquement le point de terminaison du service de cloud privé, vous pouvez utiliser le tableau de bord Headlamp pour créer le NLB. Headlamp achemine toutes les requêtes vers le point de terminaison du service cloud privé du maître.

      1. Sur la page Clusters, cliquez sur le cluster auquel vous souhaitez accéder.
      2. Obtenez votre sous-domaine d'entrée : ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID | grep "Ingress Subdomain".
      3. Ouvrez-le dans https://headlamp.<ingress_subdomain> un navigateur, connectez-vous, puis accédez à + > Importer un fichier YAML.
      4. Téléchargez le fichier kube-api-via-nlb.yaml et cliquez sur Appliquer.
      5. Accédez à Réseau > Services, vérifiez que le service kube-api-via-nlb a bien été créé, puis notez l'adresse **IP externe **10.x.x.x. Cette adresse IP expose le noeud final de service cloud privé pour le maître Kubernetes sur le port que vous avez spécifié dans votre fichier YAML.
    • Si vous avez également activé le noeud final de service cloud public, vous avez déjà accès au maître.

      1. Téléchargez et ajoutez le fichier de configuration kubeconfig pour votre cluster à votre kubeconfig existant dans ~/.kube/config ou le dernier fichier dans la variable d'environnement KUBECONFIG.
        ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID
        
      2. Créez le NLB et le noeud final.
        kubectl apply -f kube-api-via-nlb.yaml
        
      3. Vérifiez que le NLB kube-api-via-nlb est créé. Dans le résultat, notez l'adresse 10.x.x.xEXTERNAL-IP. Cette adresse IP expose le noeud final de service cloud privé pour le maître Kubernetes sur le port que vous avez spécifié dans votre fichier YAML.
        kubectl get svc -o wide
        
        Dans cet exemple de sortie, l'adresse IP du noeud final de service cloud privé du maître Kubernetes est 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. Sur les machines client où vous et vos utilisateurs exécutent des commandes kubectl, ajoutez l'adresse IP NLB et l'URL de noeud final de service cloud privé au fichier /etc/hosts. N'incluez aucun port dans l'adresse IP et l'URL et n'incluez pas https:// dans l'URL.

    • Pour les utilisateurs macOS et Linux :
        sudo nano /etc/hosts
        ```
    * Pour les utilisateurs Windows :
    ```sh {: pre}
        notepad C:\Windows\System32\drivers\etc\hosts
        ```
        En fonction des droits de votre machine locale, vous devrez peut-être exécuter Notepad en tant qu'administrateur pour éditer le fichier hosts.
    
        ```sh {: codeblock}
        10.186.92.42  c1.private.us-east.containers.cloud.ibm.com
        ```
    
  5. Vérifiez que vous êtes connecté au réseau privé via une connexion VPN ou IBM Cloud Direct Link.

  6. Téléchargez et ajoutez le fichier de configuration kubeconfig pour votre cluster à votre kubeconfig existant dans ~/.kube/config ou le dernier fichier dans la variable d'environnement KUBECONFIG.

    ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID --endpoint private
    
  7. Vérifiez que les commandes kubectl s'exécutent correctement et que le contexte Kubernetes est défini sur votre cluster.

    kubectl config current-context
    

    Exemple de sortie

    <cluster_name>/<cluster_ID>