Extracción de imágenes de Container Registry durante el despliegue de Kubernetes

Descubra cómo crear un secreto de registro de Docker. Descubra también cómo especificar la imagen que extraer de Container Registry (junto con el secreto de Docker que utilizar) durante el despliegue de una aplicación en un cluster.

Durante el despliegue de una aplicación en un cluster de Kubernetes, normalmente deseará que se extraigan una o más imágenes de un registro de Docker. En el archivo de manifiesto de la aplicación, especifique las imágenes que desea extraer, el registro del que desea extraerlas y las credenciales que se van a utilizar al extraer las imágenes. El archivo de manifiesto se suele denominar también especificación pod o archivo deployment.yaml (aunque se permiten otros nombres de archivo).

Si desea que la aplicación recupere imágenes que residen en Oracle Cloud Infrastructure Registry (también conocido como Container Registry), debe seguir dos pasos:

  • Debe utilizar kubectl para crear un secreto de registro de Docker. El secreto contiene las credenciales de Oracle Cloud Infrastructure que se utilizarán al extraer la imagen. Al crear secretos, Oracle recomienda utilizar la última versión de kubectl (consulte la documentación de kubectl).
  • Debe especificar la imagen que extraer de Container Registry, incluida la ubicación del repositorio y el secreto del registro de Docker que se debe utilizar en el archivo de manifiesto de la aplicación.
Nota

Container Registry es un registro compatible con la iniciativa de contenedor abierto. Como resultado, puede almacenar cualquier artefacto que cumpla con las especificaciones de Open Container Initiative, como imágenes de Docker, listas de manifiestos (a veces conocidas como imágenes de arquitectura múltiple) y gráficos de Helm. En las instrucciones de este tema se supone que está almacenando imágenes de Docker y utilizando la CLI de Docker.

Para crear un secreto de registro de Docker:

  1. Si todavía no lo ha hecho, siga los pasos para configurar el archivo de configuración kubeconfig del cluster y, si es necesario, defina la variable de entorno KUBECONFIG para que apunte al archivo. Tenga en cuenta que debe configurar su propio archivo kubeconfig. No puede acceder a un cluster mediante un archivo kubeconfig configurado por un usuario diferente. Consulte Configuración del acceso a los clusters.
  2. En una ventana de terminal, introduzca:

    kubectl create secret docker-registry <secret-name> --docker-server=<registry-domain> --docker-username=<tenancy-namespace>/<oci-username> --docker-password='<oci-auth-token>' --docker-email=<email-address>

    donde:

    • <secret-name> es un nombre de su elección que utilizará en el archivo de manifiesto para hacer referencia al secreto. Por ejemplo, ocirsecret
    • <registry-domain> incluye una clave de región o un identificador de región para la región de Container Registry que está utilizando. Por ejemplo, ocir.us-ashburn-1.oci.oraclecloud.com. Consulte dominio de registro.
    • <tenancy-namespace> es la cadena de espacio de nombre de Object Storage generada automáticamente del arrendamiento que contiene el repositorio desde el que la aplicación va a extraer la imagen (como se muestra en la página Información de arrendamiento). Por ejemplo, el espacio de nombres del arrendamiento acme-dev puede ser ansh81vru1zp. Tenga en cuenta que para algunos arrendamientos más antiguos, la cadena de espacios de nombres puede ser la misma que el nombre del arrendamiento en letras minúsculas (por ejemplo, acme-dev).
    • <oci-username> es el nombre de usuario que se va a utilizar al extraer la imagen. El nombre de usuario debe tener acceso al arrendamiento especificado por <tenancy-namespace>. Por ejemplo, jdoe@acme.com

      Si su arrendamiento está federado con Oracle Identity Cloud Service, utilice el formato <domain-name>/<oci-username>. Para los usuarios federados, <domain-name>/<oci-username> se muestra en el menú Perfil Icono de menú de perfil de la consola. Por ejemplo, si su arrendamiento está federado con Oracle Identity Cloud Service y su nombre de usuario es jdoe@acme.com, introduzca oracleidentitycloudservice/jdoe@acme.com

    • '<oci-auth-token>' es el token de autorización del usuario especificado por <oci-username>. Por ejemplo, k]j64r{1sJSSF-;)K8 . . Si el token de autenticación contiene algunos caracteres especiales (como el paréntesis de este ejemplo), que suele ser el caso, rodee el token de autenticación con comillas simples. De lo contrario, las comillas simples no son necesarias.
    • <email-address> es una dirección de correo electrónico. Se necesita una dirección de correo electrónico, pero no importa la que especifique. Por ejemplo, jdoe@acme.com

    Tenga en cuenta que las cadenas que contienen algunos caracteres especiales (como paréntesis) deben estar entre comillas simples.

    Por ejemplo, si se combinan los ejemplos anteriores, podría introducir:

    kubectl create secret docker-registry ocirsecret --docker-server=ocir.us-ashburn-1.oci.oraclecloud.com --docker-username=ansh81vru1zp/jdoe@acme.com --docker-password='k]j64r{1sJSSF-;)K8' --docker-email=jdoe@acme.com

    Al haber creado el secreto de Docker, ahora puede hacer referencia al mismo en el archivo de manifiesto de la aplicación.

Para especificar la imagen que extraer de Container Registry, junto con el secreto de Docker que utilizar, durante el despliegue de una aplicación en un cluster:

  1. Abra el archivo de manifiesto de la aplicación en un editor de texto.
  2. Agregue las siguientes secciones al archivo de manifiesto:

    1. Agregue una sección containers que especifique el nombre y la ubicación del contenedor que desea extraer de Container Registry, junto con otros detalles del despliegue.
    2. Agregue una sección imagePullSecrets al archivo de manifiesto que especifica el nombre del secreto de Docker que creó para acceder a Container Registry.

    A continuación, se muestra un ejemplo del aspecto que podría tener el manifiesto cuando se han agregado las secciones containers y imagePullSecrets:

    
    apiVersion: v1
    kind: Pod
    metadata:
      name: ngnix-image
    spec:
      containers:
        - name: ngnix
          image: ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/ngnix-lb:latest
          imagePullPolicy: Always
          ports:
          - name: nginx
            containerPort: 8080
            protocol: TCP
      imagePullSecrets:
        - name: ocirsecret
  3. Guarde y cierre el archivo de manifiesto.