Satellite 클러스터에서 글로벌 풀 시크릿 업데이트
Satellite 클러스터를 설정한 후, quay.io 또는 icr.io 이외의 프라이빗 컨테이너 레지스트리에서 가져오도록 클러스터의 글로벌 풀 시크릿을 업데이트할 수 있습니다. 예를 들어 Cloud Pak 제목이 지정된 레지스트리(cp.icr.io) 또는 자체 비공개 레지스트리에서 이미지를 가져올 수 있습니다.
Satellite 클러스터에서 글로벌 풀 시크릿을 업데이트하는 두 가지 방법이 있습니다.
- 글로벌 가져오기 시크릿 업데이트.
- 유지보수할 클러스터가 하나 이상 있는 경우 이 방법을 사용하십시오. 시크릿을 적용할 각 클러스터에 대해 이러한 단계를 반복해야 합니다.
- 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 콘솔에서 구성 및 구독을 보고 관리할 수도 있습니다.