Aktualisierung des globalen Bild-Pull-Schlüssels für IBM Software Hub auf Red Hat OpenShift on IBM Cloud

Wenn Ihr Red Hat OpenShift on IBM Cloud Cluster Worker-Knoten Red Hat Enterprise Linux® CoreOS enthält, müssen Sie ein Image-Pull-Secret erstellen und dieses Secret auf alle Worker-Knoten im Cluster anwenden.

Das globale Image-Pull-Passwort ist für Komponenten erforderlich, die nur OLM die Installation unterstützen. Sie müssen das globale Image-Pull-Secret erstellen, um sicherzustellen, dass alle Komponenten, die es verwenden, Zugriff auf die Anmeldedaten OLM zum Abrufen von Images haben.

Installationsphase
  • Du bist nicht hier. Einrichten eines Client-Arbeitsplatzes
  • Du bist nicht hier. Cluster einrichten
  • Du bist nicht hier. Erfassung der erforderlichen Informationen
  • Du bist nicht hier. Vorbereitung der Installation in einem eingeschränkten Netzwerk
  • Du bist nicht hier. Vorbereitung für die Ausführung von Installationen aus einer privaten Container-Registry
  • Sie befinden sich hier. Vorbereitung des Clusters für IBM Software Hub
  • Du bist nicht hier. Vorbereitung der Installation einer Instanz von IBM Software Hub
  • Du bist nicht hier. Installation einer Instanz von IBM Software Hub
  • Du bist nicht hier. Einrichten der control plane
  • Du bist nicht hier. Installation von Lösungen und Dienstleistungen
Wer muss diese Aufgabe erledigen?

Cluster-Administrator Diese Aufgabe muss von einem Cluster-Administrator ausgeführt werden.

Bis wann müssen Sie diese Aufgabe erledigen?

Einmalige Einrichtung: Sie müssen diese Aufgabe ausführen, bevor Sie das Programm zum IBM Software Hub ersten Mal installieren.

Führen Sie diese Task nur aus, wenn die folgenden Anweisungen 'true' sind:
  • Du läufst Red Hat OpenShift on IBM Cloud.
  • Auf Ihrem Cluster läuft Red Hat OpenShift Container Platform Version 4.18 oder höher.
  • Ihr Cluster enthält Red Hat Enterprise Linux CoreOS Worker-Knoten.

Falls die vorstehenden Anweisungen nicht auf Ihre Umgebung zutreffen, führen Sie stattdessen die Anleitung „Aktualisieren des globalen Image-Pull-Secrets für IBM “ unter Software Hub aus.

Informationen zu dieser Task

Wenn Ihr Red Hat OpenShift on IBM Cloud Cluster Worker-Knoten Red Hat Enterprise Linux CoreOS enthält, müssen Sie im kube-system Projekt ein Image-Pull-Secret erstellen.

Nachdem Sie das Secret erstellt haben, müssen Sie eine erstellen DaemonSet , um das Secret auf alle Worker-Knoten im Cluster anzuwenden.

Vorgehensweise

  1. Melden Sie sich cpd-cli beim Red Hat OpenShift Container Platform Cluster an:
    ${CPDM_OC_LOGIN}
    Beachte: CPDM_OC_LOGIN ist ein Alias für den cpd-cli manage login-to-ocp Befehl.
  2. Erstellen Sie ein Geheimnis, das die entsprechenden Anmeldedaten enthält, basierend auf der Registry, aus der Ihr Cluster Images abruft:

    IBM Entitled Registry

    Führen Sie den folgenden Befehl aus, um ein Secret zu erstellen, das Ihren API-Schlüssel für die „ IBM “-Berechtigung enthält:

    oc create secret docker-registry docker-auth-secret \
    --docker-server=cp.icr.io \
    --docker-username=cp \
    --docker-password=${IBM_ENTITLEMENT_KEY} \
    --namespace kube-system

    Private Container-Registry

    Führen Sie den folgenden Befehl aus, um ein Secret zu erstellen, das die Anmeldedaten eines Benutzers enthält, der Images aus dem Registry abrufen kann:

    oc create secret docker-registry docker-auth-secret \
    --docker-server=${PRIVATE_REGISTRY_LOCATION} \
    --docker-username=${PRIVATE_REGISTRY_PULL_USER} \
    --docker-password=${PRIVATE_REGISTRY_PULL_PASSWORD} \
    --namespace kube-system

  3. Erstellen Sie einen DaemonSet benannten, update-docker-config um das Geheimnis auf die Clusterknoten anzuwenden:
    cat << EOF | oc create -f -
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: update-docker-config
      namespace: kube-system
      labels:
        app: update-docker-config
    spec:
      selector:
        matchLabels:
          name: update-docker-config
      template:
        metadata:
          labels:
            name: update-docker-config
        spec:
          initContainers:
            - command: ["/bin/sh", "-c"]
              args:
                - >
                  echo "Checking if RHEL or RHCOS host";
                  [[ -s /docker-config/.docker/config.json  ]] && CONFIG_PATH=/docker-config/.docker || CONFIG_PATH=/docker-config/root/.docker;
                  echo "Backing up or restoring config.json";
                  [[ -s \$CONFIG_PATH/config.json ]] && cp \$CONFIG_PATH/config.json \$CONFIG_PATH/config.json.bak || cp \$CONFIG_PATH/config.json.bak \$CONFIG_PATH/config.json;
                  echo "Merging secret with config.json";
                  /host/usr/bin/jq -s '.[0] * .[1]' \$CONFIG_PATH/config.json /auth/.dockerconfigjson > \$CONFIG_PATH/config.tmp;
                  mv \$CONFIG_PATH/config.tmp \$CONFIG_PATH/config.json;
                  echo "Sending signal to reload crio config";
                  pidof crio;
                  kill -1 \$(pidof crio)
              image: icr.io/ibm/alpine:latest
              imagePullPolicy: IfNotPresent
              name: updater
              resources: {}
              securityContext:
                privileged: true
              volumeMounts:
                - name: docker-auth-secret
                  mountPath: /auth
                - name: docker
                  mountPath: /docker-config
                - name: bin
                  mountPath: /host/usr/bin
                - name: lib64
                  mountPath: /lib64
          containers:
            - resources:
                requests:
                  cpu: 0.01
              image: icr.io/ibm/alpine:latest
              name: sleepforever
              command: ["/bin/sh", "-c"]
              args:
                - >
                  while true; do
                    sleep 100000;
                  done
          hostPID: true
          volumes:
            - name: docker-auth-secret
              secret:
                secretName: docker-auth-secret
            - name: docker
              hostPath:
                path: /
            - name: bin
              hostPath:
                path: /usr/bin
            - name: lib64
              hostPath:
                path: /lib64
                hostPathType: Directory
    EOF
  4. Überprüfen Sie, ob die DaemonSet Pods auf allen Worker-Knoten laufen:
    oc get daemonset update-docker-config \
    --namespace kube-system
    Stellen Sie sicher, dass die Anzahl der Knoten in jeder der folgenden Spalten gleich ist:
    • DESIRED
    • CURRENT
    • READY
    • UP-TO-DATE
    • AVAILABLE
Sollten bei der Ausführung dieser Aufgabe Probleme auftreten, lesen Sie bitte den Abschnitt „Aktualisieren des globalen Image-Pull-Secrets“ in der Red Hat OpenShift on IBM Cloud Dokumentation.