Estrazione di immagini da Container Registry durante la distribuzione Kubernetes

Scopri come creare un segreto del registro Docker. Scopri anche come specificare l'immagine da estrarre da Container Registry (insieme al segreto Docker da utilizzare) durante la distribuzione di un'applicazione in un cluster.

Durante la distribuzione di un'applicazione in un cluster Kubernetes, in genere si desidera che una o più immagini vengano estratte da un registro Docker. Nel file manifesto dell'applicazione si specificano le immagini da estrarre, il registro da cui estrarle e le credenziali da utilizzare quando si estraggono le immagini. Il file manifesto viene comunemente indicato anche come specifica pod o come file deployment.yaml (anche se sono consentiti altri nomi di file).

Se desideri che l'applicazione estragga le immagini che risiedono in Oracle Cloud Infrastructure Registry (noto anche come Container Registry), devi eseguire le due operazioni riportate di seguito.

  • È necessario utilizzare kubectl per creare un segreto di registro Docker. Il segreto contiene le credenziali di Oracle Cloud Infrastructure da utilizzare durante il pull dell'immagine. Quando si creano segreti, Oracle consiglia di utilizzare la versione più recente di kubectl (consultare la documentazione di kubectl).
  • È necessario specificare l'immagine da estrarre da Container Registry, inclusa la posizione del repository e il segreto di registro Docker da utilizzare, nel file manifesto dell'applicazione.
Nota

Container Registry è un registro conforme a Open Container Initiative. Di conseguenza, è possibile memorizzare tutti gli artifact conformi alle specifiche di Open Container Initiative, ad esempio immagini Docker, elenchi di manifesti (a volte noti come immagini multi-architettura) e grafici Helm. Le istruzioni riportate in questo argomento presuppongono la memorizzazione delle immagini Docker e l'utilizzo dell'interfaccia CLI Docker.

Per creare un segreto di registro Docker, effettuare le operazioni riportate di seguito.

  1. Se non lo si è già fatto, seguire la procedura per impostare il file di configurazione kubeconfig del cluster e (se necessario) impostare la variabile di ambiente KUBECONFIG in modo che punti al file. Si noti che è necessario impostare il proprio file kubeconfig. Non è possibile accedere a un cluster utilizzando un file kubeconfig impostato da un altro utente. Vedere Impostazione dell'accesso al cluster.
  2. In una finestra del terminale, immettere:

    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>

    Dove:

    • <secret-name> è un nome a scelta, che verrà utilizzato nel file manifesto per fare riferimento al segreto. Ad esempio ocirsecret
    • <registry-domain> include una chiave area o un identificativo area per l'area Container Registry in uso. Ad esempio, ocir.us-ashburn-1.oci.oraclecloud.com. Vedere dominio di registro.
    • <tenancy-namespace> è la stringa dello spazio di nomi dello storage degli oggetti generata automaticamente della tenancy contenente il repository da cui l'applicazione deve estrarre l'immagine (come mostrato nella pagina Informazioni sulla tenancy). Ad esempio, lo spazio di nomi della tenancy acme-dev potrebbe essere ansh81vru1zp. Tenere presente che per alcune tenancy meno recenti, la stringa dello spazio di nomi potrebbe essere uguale al nome della tenancy in tutte le lettere minuscole (ad esempio, acme-dev).
    • <oci-username> è il nome utente da utilizzare per estrarre l'immagine. Il nome utente deve avere accesso alla tenancy specificata da <tenancy-namespace>. Ad esempio, jdoe@acme.com

      Se la tenancy è federata con Oracle Identity Cloud Service, utilizzare il formato <domain-name>/<oci-username>. Per gli utenti federati, <domain-name>/<oci-username> viene visualizzato nel menu Profilo Icona menu Profilo nella console. Ad esempio, se la tenancy è federata con Oracle Identity Cloud Service e il nome utente è jdoe@acme.com, immettere oracleidentitycloudservice/jdoe@acme.com

    • '<oci-auth-token>' è il token di autenticazione dell'utente specificato da <oci-username>. Ad esempio, k]j64r{1sJSSF-;)K8 . Se il token di autenticazione contiene alcuni caratteri speciali (ad esempio le parentesi in questo esempio), che spesso si verifica, racchiudere il token di autenticazione tra apici. In caso contrario, le virgolette singole non sono necessarie.
    • <email-address> è un indirizzo e-mail. È richiesto un indirizzo e-mail, ma non importa cosa si specifica. Ad esempio, jdoe@acme.com

    Tenere presente che le stringhe contenenti alcuni caratteri speciali, ad esempio le parentesi, devono essere racchiuse tra apici.

    Ad esempio, combinando gli esempi precedenti, è possibile immettere:

    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

    Dopo aver creato il segreto Docker, è ora possibile farvi riferimento nel file manifest dell'applicazione.

Per specificare l'immagine da estrarre da Container Registry, insieme al segreto Docker da utilizzare, durante la distribuzione di un'applicazione in un cluster:

  1. Aprire il file manifesto dell'applicazione in un editor di testo.
  2. Aggiungere le seguenti sezioni al file manifesto:

    1. Aggiungere una sezione containers che specifichi il nome e la posizione del contenitore che si desidera estrarre da Container Registry, insieme ad altri dettagli di distribuzione.
    2. Aggiungere una sezione imagePullSecrets al file manifesto che specifichi il nome del segreto Docker creato per accedere al Container Registry.

    Di seguito è riportato un esempio dell'aspetto del file manifesto quando sono state aggiunte le sezioni containers e 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. Salvare e chiudere il file manifesto.