Configuración del acceso a los clusters

Para acceder a un cluster mediante kubectl, debe configurar un archivo de configuración de Kubernetes (normalmente denominado archivo "kubeconfig") para el cluster. El archivo kubeconfig (por defecto denominado config y almacenado en el directorio $HOME/.kube) proporciona los detalles necesarios para acceder al cluster. Una vez configurado el archivo kubeconfig, puede empezar a utilizar kubectl para gestionar el cluster.

Los pasos que se deben seguir al configurar el archivo kubeconfig dependen de cómo desee acceder al cluster:

  • Para acceder al cluster mediante kubectl en Cloud Shell, ejecute un comando de la CLI de Oracle Cloud Infrastructure en una ventana de Cloud Shell para configurar el archivo kubeconfig.

    Consulte Configuración del acceso de Cloud Shell a los clusters.

  • Para acceder al cluster mediante una instalación local de kubectl:

    • Genere un par de claves de firma de API (si aún no tiene uno).
    • Cargue la clave pública del par de claves de firma de API.
    • Instale y configure la CLI de Oracle Cloud Infrastructure.
    • Configure el archivo kubeconfig.

    Consulte Configuración del acceso local a los clusters.

Configuración del acceso de Cloud Shell a los clusters

Cuando el punto final de API de Kubernetes de un cluster tiene una dirección IP pública, puede acceder al cluster en Cloud Shell configurando un archivo kubeconfig.

Nota

Para acceder a un cluster con un punto final de API de Kubernetes privado en Cloud Shell, puede configurar un bastión mediante el servicio Bastión de Oracle Cloud Infrastructure. Para obtener más información, consulte Setting Up a Bastion for Cluster Access.

Para configurar el archivo kubeconfig:

Paso 1: Configurar el archivo kubeconfig
  1. En la consola, abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores, haga clic en Clusters de Kubernetes (OKE).
  2. Seleccione un compartimento en el que tenga permiso para trabajar.
  3. En la página Lista de clusters, haga clic en el nombre del cluster al que desea acceder mediante kubectl. La página Cluster muestra detalles del cluster.
  4. Haga clic en el botón Acceder a cluster para mostrar el cuadro de diálogo Acceso a su cluster.
  5. Haga clic en Acceso a Cloud Shell.
  6. Haga clic en Iniciar Cloud Shell para mostrar la ventana de Cloud Shell. Para obtener más información sobre Cloud Shell (incluida la política de IAM necesaria), consulte Cloud Shell.
  7. Ejecute el comando de la CLI de Oracle Cloud Infrastructure para configurar el archivo kubeconfig y guardarlo en una ubicación accesible para kubectl.

    Por ejemplo, introduzca el siguiente comando (o cópielo y péguelo en el cuadro de diálogo Acceso a su cluster) en la ventana de Cloud Shell:

    oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.phx.aaaaaaaaae... --file $HOME/.kube/config  --region us-phoenix-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT

    donde:

    • ocid1.cluster.oc1.phx.aaaaaaaaae... es el OCID del cluster actual. Para mayor comodidad, el comando del cuadro de diálogo Acceso a su cluster ya incluye el OCID del cluster.
    • --kube-endpoint PUBLIC_ENDPOINT especifica agregar la dirección IP pública del punto final de la API de Kubernetes del cluster al archivo kubeconfig. Para obtener más información, consulte Plano de control de cluster de Kubernetes y API de Kubernetes.

    Tenga en cuenta que si ya existe un archivo kubeconfig en la ubicación que especifique, los detalles del cluster se agregarán como un nuevo contexto al archivo kubeconfig existente. El elemento current-context: del archivo kubeconfig se definirá para que apunte al contexto recién agregado.

    Consejo

    Para las operaciones del portapapeles en la ventana de Cloud Shell, los usuarios de Windows pueden utilizar Ctrl-C o Ctrl-Insert para copiar y Mayús-Insert para pegar. Los usuarios del sistema operativo Mac pueden utilizar Cmd-C para copiar y Cmd-V para pegar.
  8. Si no guarda el archivo kubeconfig en la ubicación por defecto ($HOME/.kube) o con el nombre por defecto (config), defina el valor de la variable de entorno KUBECONFIG para que apunte al nombre y la ubicación del archivo kubeconfig. Por ejemplo, introduzca el siguiente comando en la ventana Cloud Shell:

    export KUBECONFIG=$HOME/.kube/config
Paso 2: Verificar que kubectl puede acceder al cluster

Verifique que kubectl se pueda conectar al cluster introduciendo el siguiente comando en la ventana de Cloud Shell:

$ kubectl get nodes

Se muestra información sobre los nodos del cluster.

Ahora puede utilizar kubectl para realizar operaciones en el cluster.

Configuración del acceso local a los clusters

Cuando el punto final de API de Kubernetes de un cluster no tiene una dirección IP pública, puede acceder al cluster desde un terminal local si la red está conectada con la VCN del cluster.

Nota

Para acceder a un cluster con un punto final de API de Kubernetes privado desde un terminal local, también puede configurar un bastión mediante el servicio Base de Oracle Cloud Infrastructure. Para obtener más información, consulte Setting Up a Bastion for Cluster Access.

Para configurar el archivo kubeconfig:

Paso 1: generar un par de claves de firma de API

Si ya tiene un par de claves de firma de API, vaya directamente al siguiente paso. Si no:

  1. Utilice los comandos OpenSSL para generar el par de claves en el formato PEM necesario. Si está utilizando Windows, necesitará instalar Git Bash para Windows y ejecutar los comandos con esa herramienta. Consulte Generación de una clave de firma de API.
  2. Copie el contenido de la clave pública en el portapapeles (tendrá que pegar el valor en la Consola más tarde).

Paso 2: cargar la clave pública del par de claves de firma de API
  1. En la esquina superior derecha de la Consola, abra el menú Perfil (Icono de menú de usuario) y, a continuación, haga clic en Configuración de usuario para ver los detalles.

  2. Haga clic en Agregar clave pública.

  3. Pegue el valor de la clave pública en la ventana y haga clic en Agregar.

    Se carga la clave y se muestra su huella (por ejemplo, d1:b2:32:53:d3:5f:cf:68:2d:6f:8b:5f:77:8f:07:13).

Paso 3: instalar y configurar la CLI de Oracle Cloud Infrastructure
  1. Instale la versión 2.6.4 (o posterior) de la CLI de Oracle Cloud Infrastructure. Consulte Inicio rápido.

  2. Configure la CLI de Oracle Cloud Infrastructure. Consulte Configuración de CLI.
Paso 4: Configurar el archivo kubeconfig
  1. En la consola, abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores, haga clic en Clusters de Kubernetes (OKE).
  2. Seleccione un compartimento en el que tenga permiso para trabajar.
  3. En la página Lista de clusters, haga clic en el nombre del cluster al que desea acceder mediante kubectl. La página Cluster muestra detalles del cluster.
  4. Haga clic en el botón Acceder a cluster para mostrar el cuadro de diálogo Acceso a su cluster.

  5. Haga clic en Acceso local.
  6. Cree un directorio para colocar el archivo kubeconfig. Por defecto, el nombre de directorio esperado es $HOME/.kube.

    Por ejemplo, en Linux, introduzca el siguiente comando (o cópielo y péguelo del cuadro de diálogo Acceso a su cluster) en una ventana de terminal local:

    mkdir -p $HOME/.kube
  7. Ejecute el comando de la CLI de Oracle Cloud Infrastructure para configurar el archivo kubeconfig y guardarlo en una ubicación accesible para kubectl.

    Por ejemplo, en Linux, introduzca el siguiente comando (o cópielo y péguelo del cuadro de diálogo Acceso a su cluster) en una ventana de terminal local:

    oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.phx.aaaaaaaaae... --file $HOME/.kube/config  --region us-phoenix-1 --token-version 2.0.0 --kube-endpoint PRIVATE_ENDPOINT|PUBLIC_ENDPOINT

    donde:

    • ocid1.cluster.oc1.phx.aaaaaaaaae... es el OCID del cluster actual. Para mayor comodidad, el comando del cuadro de diálogo Acceso a su cluster ya incluye el OCID del cluster.
    • --kube-endpoint PRIVATE_ENDPOINT|PUBLIC_ENDPOINT especifica si se debe agregar la dirección IP privada o la dirección IP pública del punto final de la API de Kubernetes del cluster al archivo kubeconfig. Para obtener más información, consulte Plano de control de cluster de Kubernetes y API de Kubernetes.

    Tenga en cuenta que si ya existe un archivo kubeconfig en la ubicación que especifique, los detalles del cluster se agregarán como un nuevo contexto al archivo kubeconfig existente. El elemento current-context: del archivo kubeconfig se definirá para que apunte al contexto recién agregado.

  8. Si no guarda el archivo kubeconfig en la ubicación por defecto ($HOME/.kube) o con el nombre por defecto (config), defina el valor de la variable de entorno KUBECONFIG para que apunte al nombre y la ubicación del archivo kubeconfig. Por ejemplo, en Linux, introduzca el siguiente comando (o cópielo y péguelo del cuadro de diálogo Acceso a su cluster) en una ventana de terminal local:

    export KUBECONFIG=$HOME/.kube/config
Paso 5: Verificar que kubectl puede acceder al cluster
  1. Verifique que kubectl esté disponible introduciendo el siguiente comando en una ventana de terminal local:

    kubectl version

    La respuesta muestra:

    • la versión de kubectl instalada y en ejecución local
    • la versión de Kubernetes (estrictamente hablando, la versión de kube-apiserver) que se ejecuta en los nodos de plano de control del cluster

    Tenga en cuenta que la versión de kubectl debe ser una versión secundaria (más antigua o posterior) a la versión de Kubernetes que se ejecuta en los nodos de plano de control. Si kubectl es más de una versión secundaria más antigua o moderna, instale una versión adecuada de kubectl. Consulte Versión de Kubernetes y política de soporte de sesgo de versión en la documentación de Kubernetes.

    Si el comando devuelve un error que indica que kubectl no está disponible, instale kubectl (consulte la documentación de kubectl) y repita este paso.

  2. Verifique que kubectl se pueda conectar al cluster introduciendo el siguiente comando en una ventana de terminal local:

    kubectl get nodes

    Se muestra información sobre los nodos del cluster.

    Ahora puede utilizar kubectl para realizar operaciones en el cluster.

Notas sobre los archivos Kubeconfig

Tenga en cuenta lo siguiente sobre los archivos kubeconfig:

  • Un único archivo kubeconfig puede incluir los detalles de varios clusters, como varios contextos. El cluster en el que se van a realizar las operaciones lo especifica el elemento current-context: en el archivo kubeconfig.
  • Un archivo kubeconfig incluye un comando de la CLI de Oracle Cloud Infrastructure que genera dinámicamente un token de autenticación y lo inserta cuando ejecuta un comando kubectl. La CLI de Oracle Cloud Infrastructure debe estar disponible en la ruta ejecutable de su shell (por ejemplo, $PATH en Linux).
  • Los tokens que genera el comando de la CLI de Oracle Cloud Infrastructure en el archivo kubeconfig son de corta duración, con ámbito de cluster y específicos de usuarios individuales. Como resultado, no puede compartir archivos kubeconfig entre usuarios para acceder a los clusters de Kubernetes.
  • El comando de la CLI de Oracle Cloud Infrastructure del archivo kubeconfig usa el perfil de la CLI actual al generar un token de autenticación. Si ha definido varios perfiles en diferentes arrendamientos en el archivo de configuración de la CLI (por ejemplo, en ~/.oci/config), especifique el perfil que se utilizará al generar el token de autenticación de la siguiente manera. En ambos casos, <profile-name> es el nombre del perfil definido en el archivo de configuración de la CLI:

    • Agregue --profile a la sección args: del archivo kubeconfig de la siguiente manera:

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          - --profile
          - <profile-name>
          command: oci
          env: []
    • Configure la variable de entorno OCI_CLI_PROFILE con el nombre del perfil definido en el archivo de configuración de la CLI antes de ejecutar los comandos de kubectl. Por ejemplo:

      
      export OCI_CLI_PROFILE=<profile-name>
      
      kubectl get nodes
      
  • Los tokens de autenticación generados por el comando de la CLI de Oracle Cloud Infrastructure en el archivo kubeconfig son adecuados para autenticar usuarios individuales que acceden al cluster mediante kubectl. Sin embargo, los tokens de autenticación generados no son adecuados si desea que otros procesos y herramientas accedan al cluster, como las herramientas de integración y entrega continuas (CI/CD). En este caso, considere crear una cuenta de servicio de Kubernetes y agregar su token de autenticación asociado al archivo kubeconfig. Para obtener más información, consulte Adición de un token de autenticación de cuenta de servicio a un archivo Kubeconfig.
  • Es posible que se haya definido una política de IAM para restringir el acceso de cluster solo a los usuarios que se han verificado con autenticación multifactor (MFA). Si existe esta política, debe agregar argumentos --profile y --auth al archivo kubeconfig para permitir que un usuario verificado con MFA acceda al cluster mediante kubectl, de la siguiente manera. En ambos casos, <profile-name> es el nombre del perfil de usuario verificado por MFA definido en el archivo de configuración de la CLI de Oracle Cloud Infrastructure:

    • Agregue los siguientes argumentos a la sección args: del archivo kubeconfig:

      
          - --profile
          - <profile-name>
          - --auth
          - security_token

      Por ejemplo:

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          - --profile
          - <profile-name>
          - --auth
          - security_token
          command: oci
          env: []
    • Configure la variable de entorno OCI_CLI_PROFILE con el nombre del perfil de usuario verificado con MFA definido en el archivo de configuración de la CLI antes de ejecutar los comandos de kubectl. Por ejemplo:

      
      export OCI_CLI_PROFILE=<profile-name>
      
      kubectl get nodes
      

    Después de actualizar el archivo kubeconfig, el usuario que utiliza para acceder al cluster debe estar verificado con MFA. Si intenta acceder al cluster mediante un usuario que no se ha verificado mediante MFA, se muestra el mensaje error: You must be logged in to the server (Unauthorized).

    Para obtener más información sobre los usuarios verificados con MFA, consulte Gestión de autenticación multifactor.

Actualización de archivos kubeconfig de la versión 1.0.0 a la versión 2.0.0

Actualmente, Container Engine for Kubernetes soporta archivos kubeconfig de la versión 2.0.0 y ya no soporta archivos kubeconfig de la versión 1.0.0.

Las mejoras de los archivos de kubeconfig versión 2.0.0 aumentan la seguridad para el entorno de Kubernetes, incluidos los tokens de corta duración, en ámbito de cluster con actualización automática y soportan principales de instancia para acceder a los clusters de Kubernetes. Además, los tokens de autenticación se generan a petición para cada cluster, por lo que los archivos kubeconfig versión 2.0.0 no se pueden compartir entre usuarios para acceder a los clusters de Kubernetes (a diferencia de los archivos kubeconfig versión 1.0.0).

Tenga en cuenta que los archivos kubeconfig de la versión 2.0.0 no son compatibles con versiones de kubectl anteriores a la versión 1.11.9. Si está ejecutando la versión de kubectl 1.10.x o anterior, actualice kubectl a la versión 1.11.9 o posterior. Para obtener más información sobre la compatibilidad entre diferentes versiones de kubernetes y kubectl, consulte la documentación de Kubernetes.

Siga las instrucciones que aparecen a continuación para determinar la versión actual de los archivos kubeconfig y cómo actualizar los archivos kubeconfig restantes de la versión 1.0.0 a la versión 2.0.0.

Determinar la versión del archivo kubeconfig

Para determinar la versión del archivo kubeconfig de un cluster:

1. En una ventana de terminal (la ventana de Cloud Shell o una ventana de terminal local, según corresponda), introduzca el siguiente comando para ver el formato del archivo kubeconfig al que apunta actualmente la variable de entorno KUBECONFIG:

kubectl config view

2. Si el archivo kubeconfig es de la versión 1.0.0, verá una respuesta con el siguiente formato:

users:
- name: <username>
  user:
    token: <token-value>

Si ve una respuesta en el formato anterior, debe actualizar el archivo kubeconfig. Consulte Cambio de versión de los archivos kubeconfig de la versión 1.0.0 a la versión 2.0.0 .

3. Si el archivo kubeconfig es de la versión 2.0.0, verá una respuesta con el siguiente formato:

user:
  exec:
    apiVersion: client.authentication.k8s.io/v1beta1
    args:
    - ce
    - cluster
    - generate-token
    - --cluster-id
    - <cluster ocid>
    command: oci
    env: []

Si ve una respuesta en el formato anterior, no es necesaria ninguna acción.

Actualización de un archivo kubeconfig versión 1.0.0 a la versión 2.0.0

Para actualizar un archivo kubeconfig versión 1.0.0:

  1. En el caso de una instalación local de kubectl, confirme que la versión 2.6.4 (o posterior) de la CLI de Oracle Cloud Infrastructure esté instalada introduciendo lo siguiente:

    oci -version

    Si la versión de la CLI de Oracle Cloud Infrastructure es anterior a la versión 2.6.4, actualice la CLI a una versión posterior. Consulte Actualización de la CLI.

  2. Siga las instrucciones adecuadas para configurar el archivo kubeconfig para utilizarlo en Cloud Shell o localmente (consulte Configuración del acceso de Cloud Shell a los clusters o Configuración del acceso local a los clusters). Al ejecutar el comando oci ce cluster create-kubeconfig que se muestra en el cuadro de diálogo Acceso a su cluster, se actualiza el archivo kubeconfig versión 1.0.0 existente. Si cambia el nombre o la ubicación del archivo kubeconfig, defina la variable de entorno KUBECONFIG para que apunte al nuevo nombre y ubicación del archivo.

  3. Confirme que el archivo kubeconfig es ahora de la versión 2.0.0:
    1. En una ventana de terminal (la ventana de Cloud Shell o una ventana de terminal local, según corresponda), introduzca:

      kubectl config view
    2. Confirme que la respuesta tiene el siguiente formato:

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          command: oci
          env: []