Globalen geheimen Schlüssel für Pull-Operationen in Satellite-Clustern aktualisieren
Nachdem Sie einen Satellite-Cluster eingerichtet haben, können Sie das globale Pull-Geheimnis in Ihrem Cluster aktualisieren, um von einer anderen privaten Container-Registry als quay.io oder icr.io zu ziehen. Sie können
zum Beispiel Bilder aus der Cloud Pak Entitled Registry (cp.icr.io) oder aus Ihrer eigenen privaten Registry beziehen.
Es gibt zwei Möglichkeiten, den globalen geheimen Pull-Schlüssel in Satellite-Clustern zu aktualisieren.
- Globalen geheimen Pull-Schlüssel aktualisieren.
- Verwenden Sie diese Methode, wenn Sie einen oder wenige Cluster verwalten müssen. Sie müssen diese Schritte für jeden Cluster wiederholen, auf den der geheime Schlüssel angewendet werden soll.
- Globalen geheimen Schlüssel für Pull-Operationen mithilfe der Satellite-Konfiguration aktualisieren.
- Verwenden Sie diese Methode, wenn Sie mehrere Satellite-Cluster und Clustergruppen verwalten. Mithilfe der Konfiguration von Satellite können Sie die Änderungen an geheimen Schlüsseln auf Ihre Satellite-Cluster und Clustergruppen anwenden.
Globalen geheimen Schlüssel für Pull-Operationen aktualisieren
Führen Sie die folgenden Schritte aus, um den geheimen Schlüssel für globale Pull-Operationen in Ihrem Satellite-Cluster zu aktualisieren.
- Erstellen Sie einen geheimen Schlüssel mit den Berechtigungsnachweisen für die Registry, die Sie verwenden möchten.
Beispiel für einenoc create secret docker-registry docker-auth-secret \ --docker-server=REGISTRY \ --docker-username=USERNAME \ --docker-password=PASSWORD \ --namespace kube-systemcreate secret-Befehl zur Verwendung der berechtigten Registry von Cloud Pak.oc create secret docker-registry docker-auth-secret \ --docker-server=cp.icr.io \ --docker-username=cp \ --docker-password=ENTITLEMENT-KEY \ --namespace kube-system - Erstellen Sie ein DaemonSet, um den geheimen Schlüssel auf alle Workerknoten 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 - Überprüfen Sie, ob die Pods laufen.
oc get daemonset -n kube-system update-docker-config
Globalen geheimen Schlüssel für Pull-Operationen mithilfe der Konfiguration Satellite aktualisieren
Führen Sie die folgenden Schritte aus, um die Konfiguration Satellite zu verwenden, um den globalen geheimen Schlüssel für Pull-Operationen auf Ihre Satellite-Cluster und Clustergruppen anzuwenden.
-
Erstellen Sie in einem Ihrer Satellite-Cluster einen geheimen Schlüssel. Beachten Sie, dass dieser geheime Schlüssel später gelöscht wird.
oc create secret docker-registry docker-auth-secret \ --docker-server=REGISTRY \ --docker-username=USERNAME \ --docker-password=PASSWORD \ --namespace kube-systemBeispiel für einen
create secret-Befehl zur Verwendung der berechtigten Registry von Cloud Pak.oc create secret docker-registry docker-auth-secret \ --docker-server=cp.icr.io \ --docker-username=cp \ --docker-password=ENTITLEMENT-KEY \ --namespace kube-system -
Informieren Sie sich über die Einzelheiten Ihres Geheimnisses. Kopieren Sie den Abschnitt base64 encoded
dockerconfigjsonund speichern Sie ihn.oc get secret docker-auth-secret -o yaml -
Löschen Sie den geheimen Schlüssel.
oc delete secret docker-auth-secret -n kube-system -
Erstellen Sie eine Konfigurationsdatei mit dem Namen
secret.yaml, die Ihre Registry-Berechtigungsnachweise enthält. Fügen Sie den Abschnitt base64 encodeddockerconfigjsonein, den Sie im vorherigen Schritt gespeichert haben.kind: Secret apiVersion: v1 metadata: name: docker-auth-secret namespace: kube-system data: .dockerconfigjson: >- BASE64-ENCODED-SECRET type: kubernetes.io/dockerconfigjson -
Erstellen Sie eine Satellite config. Geben Sie in der Option
--data-locationdie Region Verwaltet von Ihres Standorts an.ibmcloud sat config create --data-location wdc --name my-config -
Fügen Sie Ihrer Konfiguration eine Version hinzu. Geben Sie den Dateipfad zu dem zuvor erstellten
secret.yamlan.ibmcloud sat config version create --name 1 --config my-config --file-format yaml --read-config /Users/username/Desktop/secret.yaml -
Erstellen Sie eine Subskription, um das DaemonSet auf eine Clustergruppe anzuwenden.
ibmcloud sat subscription create --name my-subscription --config my-config --group GROUP -
Speichern Sie das folgende DaemonSet in einer Datei namens
ds.yaml.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 -
Erstellen Sie eine Satellite config. Geben Sie in der Option
--data-locationdie Region Verwaltet von Ihres Standorts an, z. B.wdc.ibmcloud sat config create --data-location wdc --name my-ds -
Fügen Sie Ihrer Konfiguration eine Version hinzu. Geben Sie den Dateipfad zu dem zuvor erstellten
ds.yamlan.ibmcloud sat config version create --name 1 --config my-ds --file-format yaml --read-config /Users/username/Desktop/ds.yaml -
Erstellen Sie eine Subskription, um das DaemonSet auf eine Clustergruppe anzuwenden.
ibmcloud sat subscription create --name my-subscription --config my-ds --group GROUP -
Überprüfen Sie, ob der geheime Schlüssel und DaemonSet in Ihren Clustern bereitgestellt werden.
oc get secret docker-auth-secret -n kube-systemoc get ds update-docker-config -n kube-system
Sie können Ihre Konfigurationen und Abonnements auch über die Konsole Satellite einsehen und verwalten.