Acceso a clústeres clásicos a través del punto final de servicio en la nube privado

En el caso de los clústeres clásicos de IBM Cloud Kubernetes Service que solo tienen habilitado el punto de conexión del servicio de nube privada, es necesario exponer el punto de conexión maestro a través de un NLB privado y estar conectado a la red privada clásica de IBM Cloud mediante una conexión VPN para acceder al clúster.

Antes de empezar

  1. Instala las herramientas de la interfaz de línea de comandos(CLI)necesarias.
  2. Configurar una conexión Virtual Private Network (VPN) for VPC a la red privada clásica de IBM Cloud.
  3. Comprueba que tu clúster funciona correctamente: ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID.

Exposición del punto final maestro a través de un NLB privado

Antes de poder conectarte al maestro del clúster a través de la red privada, debes exponer el punto final del servicio en la nube privada mediante un NLB privado.

  1. Obtenga el puerto y el URL de punto final de servicio en la nube privado para el clúster.

    ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID
    

    En esta salida de ejemplo, el URL de punto final de servicio privado es 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. Cree un archivo YAML denominado kube-api-via-nlb.yaml. Este archivo YAML crea un servicio LoadBalancer privado y expone el punto final de servicio en la nube privado a través de ese NLB. Sustituya <private_service_endpoint_port> por el puerto que ha encontrado en el paso anterior.

    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. Para crear el NLB privado, debe estar conectado al nodo maestro del clúster. Dado que todavía no es posible conectarse a través del punto de conexión del servicio en la nube privada desde una VPN o un IBM Cloud Direct Link o, debe conectarse al clúster maestro y crear el NLB utilizando el punto de conexión del servicio en la nube pública o un panel de control.

    • Si solo ha habilitado el punto final del servicio de nube privada, puede utilizar el panel de control de Headlamp para crear el NLB. Headlamp redirige todas las solicitudes al punto final del servicio en la nube privada del servidor maestro.

      1. En la página Clústeres, haz clic en el clúster al que quieras acceder.
      2. Consigue tu subdominio de Ingress: ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID | grep "Ingress Subdomain".
      3. Ábrelo en https://headlamp.<ingress_subdomain> un navegador, inicia sesión y ve a + > Subir YAML.
      4. Sube el archivo kube-api-via-nlb.yaml y haz clic en Aplicar.
      5. Vaya a Red > Servicios, compruebe que el servicio kube-api-via-nlb se ha creado y anote la dirección **IP externa **10.x.x.x. Esta dirección IP expone el punto final de servicio en la nube privado para el nodo maestro de Kubernetes en el puerto que ha especificado en el archivo YAML.
    • Si también ha habilitado el punto final de servicio en la nube público, ya tiene acceso al nodo maestro.

      1. Descargue y añada el archivo de configuración kubeconfig correspondiente a su clúster a kubeconfig en ~/.kube/config o al último archivo de la variable de entorno KUBECONFIG.
        ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID
        
      2. Cree el NLB y el punto final.
        kubectl apply -f kube-api-via-nlb.yaml
        
      3. Verifique que se ha creado el NLB kube-api-via-nlb. En la salida, anote la dirección 10.x.x.x EXTERNAL-IP. Esta dirección IP expone el punto final de servicio en la nube privado para el nodo maestro de Kubernetes en el puerto que ha especificado en el archivo YAML.
        kubectl get svc -o wide
        
        En esta salida de ejemplo, la dirección IP correspondiente al punto final de servicio en la nube privado del nodo maestro de Kubernetes es 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. En las máquinas cliente en las que usted o sus usuarios ejecutan mandatos kubectl, añada la dirección IP de NLB y el URL de punto final de servicio en la nube privado al archivo /etc/hosts. No incluya ningún puerto en la dirección IP y el URL y no incluya https:// en el URL.

    • Para usuarios de macOS y Linux:
        sudo nano /etc/hosts
        ```
    * Para usuarios de Windows:
    ```sh {: pre}
        notepad C:\Windows\System32\drivers\etc\hosts
        ```
        En función de los permisos de la máquina local, es posible que tenga que ejecutar el Bloc de notas como administrador para poder editar el archivo hosts.
    
        ```sh {: codeblock}
        10.186.92.42  c1.private.us-east.containers.cloud.ibm.com
        ```
    
  5. Verifique que está conectado a la red privada a través de una VPN o de una conexión de IBM Cloud Direct Link.

  6. Descargue y añada el archivo de configuración kubeconfig correspondiente a su clúster a kubeconfig en ~/.kube/config o al último archivo de la variable de entorno KUBECONFIG.

    ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID --endpoint private
    
  7. Verifique que los mandatos kubectl se ejecutan correctamente y que el contexto de Kubernetes establecido es su clúster.

    kubectl config current-context
    

    Salida de ejemplo

    <cluster_name>/<cluster_ID>