Extraction d'images à partir de Container Registry lors du déploiement Kubernetes
Découvrez comment créer une clé secrète de registre Docker. Découvrez également comment spécifier l'image à extraire à partir de Container Registry (et de la clé secrète Docker à utiliser) lors du déploiement d'une application vers un cluster.
Lors du déploiement d'une application vers un cluster Kubernetes, vous voulez généralement extraire des images à partir d'un registre Docker. Dans le fichier manifeste de l'application, vous indiquez les images à extraire, le registre à partir duquel les extraire et les informations d'identification à utiliser lors de leur extraction. Le fichier manifeste est couramment appelé fichier podspec ou fichier deployment.yaml (bien que d'autres noms de fichier soient autorisés).
Pour que l'application extraie des images résidant dans Oracle Cloud Infrastructure Registry (également connu sous le nom de Container Registry), vous devez effectuer deux étapes :
- Vous devez utiliser kubectl pour créer une clé secrète de registre Docker. La clé secrète contient les informations d'identification Oracle Cloud Infrastructure à utiliser lors de l'extraction de l'image. Lors de la création de clés secrètes, Oracle vous recommande vivement d'utiliser la dernière version de kubectl (reportez-vous à la documentation kubectl).
- Vous devez spécifier l'image à extraire à partir de Container Registry, y compris l'emplacement du référentiel et la clé secrète de registre Docker à utiliser, dans le fichier manifeste de l'application.
Container Registry est un registre conforme à l'Open Container Initiative. Par conséquent, vous pouvez stocker tous les artefacts conformes aux spécifications d'Open Container Initiative, tels que des images Docker, des listes de manifestes (parfois appelées images à architecture multiple) et des graphiques Helm. Les instructions de cette rubrique supposent que vous stockez des images Docker et que vous utilisez la CLI Docker.
Pour créer une clé secrète de registre Docker, procédez comme suit :
- Si vous ne l'avez pas encore fait, suivez les étapes permettant de configurer le fichier de configuration Kubeconfig du cluster et (si nécessaire) de définir la variable d'environnement KUBECONFIG de sorte qu'elle pointe vers le fichier. Vous devez configurer votre propre fichier Kubeconfig. Vous ne pouvez pas accéder à un cluster à l'aide d'un fichier Kubeconfig configuré par un autre utilisateur. Reportez-vous à Configuration de l'accès à un cluster.
-
Dans une fenêtre de terminal, saisissez :
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>
où :
<secret-name>
est un nom de votre choix, que vous utilisez dans le fichier manifeste pour faire référence à la clé secrète. Par exemple,ocirsecret
.<registry-domain>
inclut une clé de région ou un identificateur de région pour la région Container Registry que vous utilisez. Par exemple,ocir.us-ashburn-1.oci.oraclecloud.com
. Reportez-vous à domaine de registre.<tenancy-namespace>
est la chaîne d'espace de noms Object Storage générée automatiquement de la location qui contient le référentiel à partir duquel l'application doit extraire l'image (comme indiqué sur la page Informations sur la location). Par exemple, l'espace de noms de la location acme-dev peut êtreansh81vru1zp
. Pour certaines anciennes locations, la chaîne d'espace de noms peut être identique au nom de la location en minuscules (par exemple,acme-dev
).<oci-username>
est le nom utilisateur à employer lors de l'extraction de l'image. Le nom utilisateur doit avoir accès à la location indiquée par<tenancy-namespace>
. Par exemple,jdoe@acme.com
Si votre location est fédérée avec Oracle Identity Cloud Service, utilisez le format
<domain-name>/<oci-username>
. Pour les utilisateurs fédérés,<domain-name>/<oci-username>
est affiché dans le menu Profilde la console. Par exemple, si votre location est fédérée avec Oracle Identity Cloud Service et que votre nom utilisateur est
jdoe@acme.com
, entrezoracleidentitycloudservice/jdoe@acme.com
.'<oci-auth-token>'
est le jeton d'authentification de l'utilisateur indiqué par<oci-username>
. Par exemple,k]j64r{1sJSSF-;)K8
. Si le jeton d'authentification contient des caractères spéciaux (tels que les parenthèses dans cet exemple), ce qui est souvent le cas, placez le jeton d'authentification entre apostrophes. Sinon, les apostrophes ne sont pas obligatoires.<email-address>
est une adresse électronique. Une adresse électronique est requise, mais ce que vous spécifiez n'a pas d'importance. Par exemple,jdoe@acme.com
.
Notez que les chaînes contenant des caractères spéciaux (par exemple, des parenthèses) doivent être placées entre apostrophes.
Par exemple, en combinant les exemples précédents, vous pouvez entrer :
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
Une fois la clé secrète Docker créée, vous pouvez y faire référence dans le fichier manifeste de l'application.
Pour spécifier l'image à extraire à partir de Container Registry et la clé secrète Docker à utiliser lors du déploiement d'une application vers un cluster, procédez comme suit :
- Ouvrez le fichier manifeste de l'application dans un éditeur de texte.
-
Ajoutez les sections suivantes au fichier manifeste :
- Ajoutez une section
containers
indiquant le nom et l'emplacement du conteneur à extraire à partir de Container Registry, ainsi que d'autres détails de déploiement. - Ajoutez au fichier manifeste une section
imagePullSecrets
indiquant le nom de la clé secrète Docker que vous avez créée pour accéder à Container Registry.
L'exemple ci-dessous illustre la forme que peut prendre le fichier manifeste une fois que vous avez ajouté les sections
containers
etimagePullSecrets
: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
- Ajoutez une section
- Enregistrez et fermez le fichier manifeste.