Satellite クラスターでグローバル・プル・シークレットを更新する
Satellite クラスタをセットアップした後、 quay.io または icr.io 以外のプライベートコンテナレジストリからプルするように、クラスタのグローバルプルシークレットを更新できます。 例えば、 Cloud Pak Entitled Registry (cp.icr.io)や、あなた自身のプライベートレジストリから画像を取り出したいかもしれません。
Satellite ・クラスターでグローバル・プル・シークレットを更新するには、2 つの方法があります。
- グローバル・プル・シークレットの更新。
- 保守するクラスターが 1 つまたは少数の場合は、この方法を使用します。 シークレットを適用するクラスターごとに、これらの手順を繰り返す必要があります。
- Satellite config を使用してグローバル・プル・シークレットを更新します。
- 複数の 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-systemcreate 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 - ポッドが動作していることを確認する。
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-systemCloud 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-systemoc get ds update-docker-config -n kube-system
また、 Satellite コンソールからコンフィギュレーションとサブスクリプションを表示および管理することもできます。