Extracción de imágenes de Registro durante el despliegue

Descubra cómo crear un secreto de registro de Docker y cómo especificar la imagen que desea extraer de Oracle Cloud Infrastructure Registry (junto con el secreto de Docker que utilizar) durante el despliegue de una aplicación en un cluster creado mediante Container Engine for Kubernetes (OKE).

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 a extraer, el registro del que extraerlas y las credenciales que utilizar al extraer las imágenes. Es común referirse al archivo de manifiesto también como a una especificación de pod o como a un archivo deployment.yaml (aunque se permiten otros nombres de archivo).

Si desea que la aplicación extraiga imágenes que residen en Oracle Cloud Infrastructure Registry, debe llevar a cabo dos pasos:

  • Tiene que 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 Oracle Cloud Infrastructure 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.

Tenga en cuenta que puede configurar clusters para permitir que se extraigan de Oracle Cloud Infrastructure Registry solo las imágenes que se han firmado mediante claves de cifrado maestras concretas incluidas en una política de verificación de imágenes (consulte Aplicación del uso de imágenes firmadas del registro).

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 utilizando un archivo kubeconfig que haya configurado 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=<region-key>.ocir.io --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
    • <region-key> es la clave de la región de Oracle Cloud Infrastructure Registry que está utilizando. Por ejemplo, iad. Consulte Disponibilidad por región.
    • ocir.io es el nombre de Oracle Cloud Infrastructure Registry.
    • <tenancy-namespace> es la cadena de espacio de nombre de Almacenamiento de objetos 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 nombre del arrendamiento acme-dev puede ser ansh81vru1zp. Tenga en cuenta que para algunos arrendamientos más antiguos, la cadena de espacio de nombre puede ser la misma que el nombre de 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-name>. Por ejemplo, jdoe@acme.com. Si su arrendamiento está federado con Oracle Identity Cloud Service, utilice el formato oracleidentitycloudservice/<username>
    • '<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 combina los ejemplos anteriores, podría introducir:

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

    Una vez haya creado el secreto de Docker, puede hacer referencia a él en el archivo de manifiesto de aplicación.

Para especificar la imagen que extraer de Oracle Cloud Infrastructure Registry, junto con el secreto de Docker que utilizar, mientras se despliega 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 Oracle Cloud Infrastructure Registry, junto con otros detalles de despliegue.
    2. Agregue una sección imagePullSecrets al archivo de manifiesto que especifica el nombre del secreto de Docker que creó para acceder a Oracle Cloud Infrastructure Registry.

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

    
    apiVersion: v1
    kind: Pod
    metadata:
      name: ngnix-image
    spec:
      containers:
        - name: ngnix
          image: phx.ocir.io/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.