Estrazione delle immagini dal registro durante la distribuzione
Scopri come creare un segreto di registro Docker e come specificare l'immagine da estrarre da Oracle Cloud Infrastructure Registry (insieme al segreto Docker da utilizzare) durante la distribuzione di un'applicazione in un cluster creato utilizzando Kubernetes Engine (OKE).
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 vuoi che l'applicazione estragga le immagini che risiedono in Oracle Cloud Infrastructure Registry, devi eseguire due passaggi:
- È 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 Oracle Cloud Infrastructure Registry, inclusa la posizione del repository e il segreto del registro Docker da utilizzare, nel file manifesto dell'applicazione.
Tenere presente che è possibile configurare i cluster in modo da consentire solo il pull delle immagini da Oracle Cloud Infrastructure Registry firmate da specifiche chiavi di cifratura master incluse in un criterio di verifica delle immagini (vedere Applicazione dell'uso delle immagini firmate dal registro).
Per creare un segreto di registro Docker, effettuare le operazioni riportate di seguito.
-
Se non è già stato fatto, attenersi alla 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.
-
In una finestra del terminale, immettere:
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>
Dove:
<secret-name>
è un nome a scelta, che verrà utilizzato nel file manifesto per fare riferimento al segreto. Ad esempioocirsecret
<region-key>
è la chiave per l'area Oracle Cloud Infrastructure Registry che stai utilizzando. Ad esempio,iad
. Vedere Disponibilità per area.ocir.io
è il nome di Oracle Cloud Infrastructure Registry.<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 essereansh81vru1zp
. 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-name>
. 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 Profilonella console. Ad esempio, se la tenancy è federata con Oracle Identity Cloud Service e il nome utente è
jdoe@acme.com
, immettereoracleidentitycloudservice/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=phx.ocir.io --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 Oracle Cloud Infrastructure Registry, insieme al segreto Docker da utilizzare, durante la distribuzione di un'applicazione in un cluster:
- Aprire il file manifesto dell'applicazione in un editor di testo.
-
Aggiungere le seguenti sezioni al file manifesto:
- Aggiungere una sezione
containers
che specifichi il nome e la posizione del contenitore che si desidera estrarre da Oracle Cloud Infrastructure Registry, insieme ad altri dettagli di distribuzione. - Aggiungere una sezione
imagePullSecrets
al file manifest che specifichi il nome del segreto Docker creato per accedere a Oracle Cloud Infrastructure Registry.
Di seguito è riportato un esempio dell'aspetto del file manifesto quando sono state aggiunte le sezioni
containers
eimagePullSecrets
.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
- Aggiungere una sezione
- Salvare e chiudere il file manifesto.