在 Satellite 叢集裡更新廣域取回密碼
設定 Satellite 叢集之後,您可以更新叢集裡的廣域取回密碼,以從 quay.io
或 icr.io
以外的專用容器登錄取回。 例如,您可能想要從 Cloud Pak Entitled Registry (cp.icr.io
) 或您自己的專用登錄取回映像檔。
有兩種方法可以更新 Satellite 叢集裡的廣域取回密碼。
- 更新廣域取回密碼。
- 如果您要維護一個或幾個叢集,請使用此方法。 您必須針對要套用密碼的每一個叢集重複這些步驟。
- 使用 Satellite 配置 來更新廣域取回密鑰。
- 如果您維護數個 Satellite 叢集和叢集群組,請使用此方法。 透過使用 Satellite 配置,您可以在 Satellite 叢集和叢集群組之間套用密碼變更。
更新全域拉取秘密
完成下列步驟,以更新 Satellite 叢集裡的廣域取回密碼。
- 建立具有您要使用之登錄認證的密鑰。
使用 Cloud Pak Entitled Registry 的oc create secret docker-registry docker-auth-secret \ --docker-server=REGISTRY \ --docker-username=USERNAME \ --docker-password=PASSWORD \ --namespace kube-system
create secret
指令範例。oc create secret docker-registry docker-auth-secret \ --docker-server=cp.icr.io \ --docker-username=cp \ --docker-password=ENTITLEMENT-KEY \ --namespace kube-system
- 建立 DaemonSet 以將密碼套用至所有工作者節點。
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
- 驗證 Pod 是否在執行中。
oc get daemonset -n kube-system update-docker-config
使用 Satellite 配置來更新廣域取回密鑰
請完成下列步驟,以使用 Satellite 配置,在 Satellite 叢集和叢集群組之間套用廣域取回密碼。
-
在其中一個 Satellite 叢集裡建立密鑰。 請注意,稍後將刪除此密鑰。
oc create secret docker-registry docker-auth-secret \ --docker-server=REGISTRY \ --docker-username=USERNAME \ --docker-password=PASSWORD \ --namespace kube-system
使用 Cloud Pak Entitled Registry 的
create secret
指令範例。oc create secret docker-registry docker-auth-secret \ --docker-server=cp.icr.io \ --docker-username=cp \ --docker-password=ENTITLEMENT-KEY \ --namespace kube-system
-
取得密鑰的詳細資料。 複製並儲存 base64 編碼
dockerconfigjson
區段。oc get secret docker-auth-secret -o yaml
-
刪除密鑰。
oc delete secret docker-auth-secret -n kube-system
-
建立一個稱為
secret.yaml
的配置檔,其中含有您的登錄認證。 貼上您在先前步驟中儲存的 base64 已編碼dockerconfigjson
區段。kind: Secret apiVersion: v1 metadata: name: docker-auth-secret namespace: kube-system data: .dockerconfigjson: >- BASE64-ENCODED-SECRET type: kubernetes.io/dockerconfigjson
-
建立一個Satellite配置。 在
--data-location
選項中,指定「位置」的 受管理來源 區域。ibmcloud sat config create --data-location wdc --name my-config
-
將版本新增至您的配置。 指定您先前建立之
secret.yaml
的檔案路徑。ibmcloud sat config version create --name 1 --config my-config --file-format yaml --read-config /Users/username/Desktop/secret.yaml
-
建立訂閱以將 DaemonSet 套用至叢集群組。
ibmcloud sat subscription create --name my-subscription --config my-config --group GROUP
-
將下列 DaemonSet 儲存至稱為
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
-
建立一個Satellite配置。 在
--data-location
選項中,指定「位置」的 受管理來源 區域,例如wdc
。ibmcloud sat config create --data-location wdc --name my-ds
-
將版本新增至您的配置。 指定您先前建立之
ds.yaml
的檔案路徑。ibmcloud sat config version create --name 1 --config my-ds --file-format yaml --read-config /Users/username/Desktop/ds.yaml
-
建立訂閱以將 DaemonSet 套用至叢集群組。
ibmcloud sat subscription create --name my-subscription --config my-ds --group GROUP
-
驗證密鑰及 DaemonSet 已跨叢集部署。
oc get secret docker-auth-secret -n kube-system
oc get ds update-docker-config -n kube-system
您也可以從 Satellite 主控台檢視及管理您的配置和訂閱。