Images während des Deployments aus der Registry abrufen

Erfahren Sie, wie Sie ein Docker-Registry Secret erstellen und das Image angeben, das (zusammen mit dem zu verwendenden Docker Secret) beim Deployment einer Anwendung in ein mit der Kubernetes Engine (OKE) erstelltes Cluster aus der Oracle Cloud Infrastructure 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. Sie geben in der Manifestdatei der Anwendung die abzurufenden Images, die Registry, aus der die Images abgerufen werden sollen, sowie die Zugangsdaten, die beim Abrufen der Images verwendet werden sollen, an. Die Manifestdatei wird im Allgemeinen auch als "Pod Spec" oder als deployment.yaml-Datei bezeichnet (obwohl andere Dateinamen zulässig sind).

Wenn die Anwendung Images abrufen soll, die sich in Oracle Cloud Infrastructure Registry befinden, müssen Sie zwei Schritte ausführen:

  • Sie müssen kubectl verwenden, um ein Docker Registry Secret zu erstellen. Das Secret enthält die Oracle Cloud Infrastructure-Zugangsdaten, die beim Abrufen des Images verwendet werden sollen. Beim Erstellen von Secrets empfiehlt Oracle unbedingt, dass Sie die neueste Version von kubectl verwenden (siehe kubectl-Dokumentation).
  • In der Manifestdatei der Anwendung müssen Sie das Image angeben, das aus Oracle Cloud Infrastructure Registry abgerufen werden soll, einschließlich dem Repository-Speicherort und dem Docker Registry Secret.

Hinweis: Sie können Cluster konfigurieren, um nur das Abrufen von Images aus Oracle Cloud Infrastructure Registry zuzulassen, die mit bestimmten in einer Imageverifizierungs-Policy enthaltenen Masterschlüsselungsschlüsseln signiert wurden (siehe Verwendung von signierten Images aus Registry erzwingen).

So erstellen Sie ein Docker Registry Secret:

  1. 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. Sie können nicht mit einer kubeconfig-Datei, die von einem anderen Benutzer eingerichtet wurde, auf ein Cluster zugreifen. Siehe Clusterzugriff einrichten.
  2. Geben Sie in einem Terminalfenster Folgendes ein:

    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>

    Hierbei gilt:

    • <secret-name> ist ein Name Ihrer Wahl, den Sie in der Manifestdatei verwenden, um das Secret zu referenzieren. Beispiel: ocirsecret.
    • <region-key> ist der Schlüssel für die Oracle Cloud Infrastructure Registry-Region, die Sie verwenden. Beispiel: iad. Siehe Verfügbarkeit nach Region.
    • ocir.io ist der Oracle Cloud Infrastructure Registry-Name.
    • <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 kann ansh81vru1zp 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 von <tenancy-name> 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ü Profil Symbol für Profilmenü in der Konsole angezeigt. Beispiel: Wenn Ihr Mandant mit Oracle Identity Cloud Service föderiert ist und Ihr Benutzername jdoe@acme.com lautet, geben Sie oracleidentitycloudservice/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, es ist jedoch egal, welche 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=phx.ocir.io --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 jetzt in der Manifestdatei der Anwendung referenzieren.

So geben Sie das aus Oracle Cloud Infrastructure Registry abzurufende Image zusammen mit dem zu verwendenden Docker Secret beim Deployment einer Anwendung in ein Cluster an:

  1. Öffnen Sie die Manifestdatei der Anwendung in einem Texteditor.
  2. Fügen Sie der Manifestdatei die folgenden Abschnitte hinzu:

    1. Fügen Sie einen containers-Abschnitt hinzu, der den Namen und Speicherort des Containers angibt, den Sie aus Oracle Cloud Infrastructure Registry abrufen möchten, zusammen mit anderen Deployment-Details.
    2. Fügen Sie einen imagePullSecrets-Abschnitt zu der Manifestdatei hinzu, der den Namen des Docker Secrets angibt, das Sie für den Zugriff auf die Oracle Cloud Infrastructure Registry erstellt haben.

    Nachfolgend finden Sie ein Beispiel dafür, wie das Manifest aussehen kann, wenn Sie die Abschnitte containers und imagePullSecrets hinzugefügt haben:

    
    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
  3. Speichern und schließen Sie die Manifestdatei.