Images während des Kubernetes-Deployments aus der Container Registry abrufen
Erfahren Sie, wie Sie ein Docker-Registry Secret erstellen. Erfahren Sie außerdem, wie Sie das Image angeben, das (zusammen mit dem zu verwendenden Docker Secret) beim Deployment einer Anwendung in ein Cluster aus Container Registry abgerufen werden soll.
Beim Deployment einer Anwendung in ein Kubernetes-Cluster soll in der Regel mindestens ein Image aus einer Docker Registry abgerufen werden. In der Manifestdatei der Anwendung geben Sie die abzurufenden Images an, die Registry, aus der die Images abgerufen werden sollen, sowie die Anmeldedaten, die beim Abrufen der Images verwendet werden sollen. Die Manifestdatei wird im Allgemeinen auch als Pod-Spezifikation oder deployment.yaml-Datei (obwohl andere Dateinamen zulässig sind) bezeichnet.
Wenn die Anwendung Images abrufen soll, die sich in Oracle Cloud Infrastructure Registry (auch als Container Registry bezeichnet) befinden, müssen Sie zwei Schritte ausführen:
- Sie müssen mit kubectl ein Docker Registry Secret erstellen. Das Secret enthält die Oracle Cloud Infrastructure-Zugangsdaten, die beim Abrufen des Images verwendet werden sollen. Oracle empfiehlt unbedingt, dass Sie beim Erstellen von Secrets die neueste Version von kubectl verwenden (siehe kubectl-Dokumentation).
- In der Manifestdatei der Anwendung müssen Sie das Image angeben, das aus Container Registry abgerufen werden soll, einschließlich dem Repository-Speicherort und dem Docker Registry Secret.
Container Registry ist eine Registry, die mit der Open Container Initiative konform ist. Daher können Sie Artefakte speichern, die den Spezifikationen der Open Container Initiative entsprechen, wie Docker-Images, Manifestlisten (manchmal auch als Images mit mehreren Architekturen bezeichnet) und Helm-Diagramme. Bei den Anweisungen in diesem Thema wird davon ausgegangen, dass Sie Docker-Images speichern und die Docker-CLI verwenden.
So erstellen Sie ein Docker Registry Secret:
- Falls noch nicht geschehen, führen Sie die Schritte zum Einrichten der kubeconfig-Konfigurationsdatei des Clusters aus, und legen Sie gegebenenfalls die Umgebungsvariable KUBECONFIG so fest, dass sie auf die Datei verweist. Beachten Sie, dass Sie Ihre eigene kubeconfig-Datei einrichten müssen. Der Zugriff auf ein Cluster mittels einer kubeconfig-Datei, die von einem anderen Benutzer eingerichtet wurde, ist nicht möglich. Siehe Clusterzugriff einrichten.
-
Geben Sie in einem Terminalfenster Folgendes ein:
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>
Dabei gilt:
<secret-name>
ist ein Name Ihrer Wahl, den Sie in der Manifestdatei verwenden, um das Secret zu referenzieren. Beispiel:ocirsecret
<registry-domain>
enthält einen Regionsschlüssel oder eine Regions-ID für die von Ihnen verwendete Container-Registry-Region. Beispiel:ocir.us-ashburn-1.oci.oraclecloud.com
. Siehe Registry-Domain.<tenancy-namespace>
ist die automatisch generierte Object Storage Namespace-Zeichenfolge des Mandanten, der das Repository enthält, aus dem die Anwendung das Image abrufen soll (wie auf der Seite Mandanteninformationen angezeigt). Beispiel: Der Namespace des acme-dev-Mandanten kannansh81vru1zp
lauten. Bei einigen älteren Mandanten kann die Namespace-Zeichenfolge mit dem Mandantennamen in Kleinbuchstaben identisch sein (Beispiel:acme-dev
).<oci-username>
ist der Benutzername, der beim Abrufen des Images verwendet werden soll. Der Benutzername muss Zugriff auf den durch<tenancy-namespace>
angegebenen Mandanten haben. Beispiel:jdoe@acme.com
Wenn Ihr Mandant mit Oracle Identity Cloud Service föderiert ist, verwenden Sie das Format
<domain-name>/<oci-username>
. Für föderierte Benutzer wird die<domain-name>/<oci-username>
im Menü Profilin der Konsole angezeigt. Beispiel: Wenn Ihr Mandant mit Oracle Identity Cloud Service föderiert ist und Ihr Benutzername
jdoe@acme.com
lautet, geben Sieoracleidentitycloudservice/jdoe@acme.com
ein.'<oci-auth-token>'
ist das Authentifizierungstoken des durch<oci-username>
angegebenen Benutzers. Beispiel:k]j64r{1sJSSF-;)K8
. Wenn das Authentifizierungstoken einige Sonderzeichen enthält (z.B. die Klammer in diesem Beispiel), was häufig der Fall ist, setzen Sie das Authentifizierungstoken in einfache Anführungszeichen. Andernfalls sind keine einfachen Anführungszeichen erforderlich.<email-address>
ist eine E-Mail-Adresse. Eine E-Mail-Adresse ist erforderlich, aber es spielt keine Rolle, was Sie angeben. Beispiel:jdoe@acme.com
Zeichenfolgen, die Sonderzeichen enthalten (z.B. Klammern), müssen in einfache Anführungszeichen gesetzt werden.
Beispiel: Wenn Sie die obigen Beispiele kombinieren, könnten Sie Folgendes eingeben:
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
Nachdem Sie das Docker Secret erstellt haben, können Sie es in der Manifestdatei der Anwendung referenzieren.
So geben Sie das aus Container Registry abzurufende Image zusammen mit dem zu verwendenden Docker Secret beim Deployment einer Anwendung in ein Cluster an:
- Öffnen Sie die Manifestdatei der Anwendung in einem Texteditor.
-
Fügen Sie der Manifestdatei die folgenden Abschnitte hinzu:
- Fügen Sie einen Abschnitt
containers
hinzu, der den Namen und Speicherort des Containers angibt, den Sie aus Container Registry abrufen möchten, zusammen mit anderen Deployment-Details. - Hinzufügen eines
imagePullSecrets
-Abschnitts zu der Manifestdatei, der den Namen des Docker Secrets angibt, das Sie für den Zugriff auf die Container Registry erstellt haben.
Nachfolgend finden Sie ein Beispiel dafür, wie das Manifest aussehen kann, wenn Sie die Abschnitte
containers
undimagePullSecrets
hinzugefügt haben: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
- Fügen Sie einen Abschnitt
- Speichern und schließen Sie die Manifestdatei.