Extraction d'images à partir du registre lors du déploiement
Découvrez comment créer une clé secrète de registre Docker et comment spécifier l'image à extraire à partir d'Oracle Cloud Infrastructure Registry (et de la clé secrète Docker à utiliser) lors du déploiement d'une application vers un cluster créé à l'aide de Kubernetes Engine (OKE).
Lors du déploiement d'une application vers un cluster Kubernetes, vous pouvez extraire des images à partir d'un registre Docker. Dans le fichier manifeste de l'application, vous devez indiquer les images à extraire, le registre à partir duquel les extraire et les informations d'identification à utiliser lors de l'extraction des images. Le fichier manifeste est également appelé couramment spécifications du pod ou fichier deployment.yaml (bien qu'autres noms de fichier soient autorisés).
Pour que l'application extraie des images résidant dansOracle Cloud Infrastructure 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 d' Oracle Cloud Infrastructure 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.
Vous pouvez configurer des clusters de sorte à autoriser uniquement l'extraction d'images signées par des clés de cryptage maître spécifiques incluses dans une stratégie de vérification d'image d'Oracle Cloud Infrastructure Registry (reportez-vous à Mise en application de l'utilisation des images signées à partir du registre).
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 le code suivant :
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>
où :
<secret-name>
est un nom de votre choix, que vous utiliserez dans le fichier manifeste pour faire référence à la clé secrète. Par exemple,ocirsecret
.<region-key>
est la clé de la région Oracle Cloud Infrastructure Registry que vous utilisez. Par exemple,iad
. Reportez-vous à Disponibilité par région.ocir.io
est le nom d'Oracle Cloud Infrastructure Registry.<tenancy-namespace>
est la chaîne d'espace de nommage Object Storage générée automatiquement de la location qui comporte le référentiel à partir duquel l'application doit extraire l'image (comme indiqué sur la page Informations sur la localisation). Par exemple, l'espace de noms de la location acme-dev peut êtreansh81vru1zp
. Pour certaines anciennes locations, la chaîne de l'espace de noms peut être identique au nom de location en minuscules (par exemple,acme-dev
).<oci-username>
est le nom utilisateur à utiliser lors de l'extraction de l'image. Le nom utilisateur doit avoir accès à la location indiquée par<tenancy-name>
. 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 la commande suivante :
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
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 d'Oracle Cloud Infrastructure Registry, ainsi que 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 d'Oracle Cloud Infrastructure 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 à Oracle Cloud Infrastructure Registry.
Voici ce à quoi votre fichier manifeste pourra ressembler une fois les sections
containers
etimagePullSecrets
ajoutées :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
- Ajoutez une section
- Enregistrez et fermez le fichier manifeste.