Atualizando o segredo de extração global em clusters do Satellite
Depois de configurar um cluster Satellite, você pode atualizar o segredo de extração global no seu cluster para extrair de um registro de contêiner privado que não seja quay.io ou icr.io. Por exemplo, talvez você queira
extrair imagens do Cloud Pak Entitled Registry (cp.icr.io) ou do seu próprio registro particular.
Há duas maneiras de atualizar o segredo de pull global em clusters do Satellite.
- Atualizando o segredo de pull global.
- Use essa abordagem se você tiver um ou poucos clusters para manter.. Você deve repetir essas etapas para cada cluster no qual deseja aplicar o segredo.
- Atualizando o segredo de extração global usando Satellite config.
- Use essa abordagem se você manter vários clusters e grupos de clusters do Satellite. Usando a configuração do Satellite, é possível aplicar as mudanças secretas em seus clusters e grupos de clusters do Satellite.
Atualização do segredo global de pull
Conclua as etapas a seguir para atualizar o segredo de extração global em seu cluster do Satellite.
- Crie um segredo que tenha as credenciais para o registro que deseja usar.
Exemplo de comandooc create secret docker-registry docker-auth-secret \ --docker-server=REGISTRY \ --docker-username=USERNAME \ --docker-password=PASSWORD \ --namespace kube-systemcreate secretpara usar o Cloud Pak Entitled Registryoc create secret docker-registry docker-auth-secret \ --docker-server=cp.icr.io \ --docker-username=cp \ --docker-password=ENTITLEMENT-KEY \ --namespace kube-system - Crie um DaemonSet para aplicar o segredo em todos os nós do trabalhador
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 - Verifique se os pods estão em execução.
oc get daemonset -n kube-system update-docker-config
Atualizando o segredo de extração global usando a configuração do Satellite
Conclua as etapas a seguir para usar a configuração do Satellite para aplicar o segredo de extração global em seus clusters e grupos de clusters do Satellite.
-
Crie um segredo em um dos clusters do Satellite. Observe que esse segredo será excluído mais tarde
oc create secret docker-registry docker-auth-secret \ --docker-server=REGISTRY \ --docker-username=USERNAME \ --docker-password=PASSWORD \ --namespace kube-systemExemplo de comando
create secretpara usar o Cloud Pak Entitled Registryoc create secret docker-registry docker-auth-secret \ --docker-server=cp.icr.io \ --docker-username=cp \ --docker-password=ENTITLEMENT-KEY \ --namespace kube-system -
Obtenha os detalhes de seu segredo. Copie e salve a seção base64
dockerconfigjsonoc get secret docker-auth-secret -o yaml -
Excluir o segredo.
oc delete secret docker-auth-secret -n kube-system -
Crie um arquivo de configuração chamado
secret.yamlque tenha as suas credenciais de registro Cole a seção base64 codificadadockerconfigjsonque você salvou na etapa anterior.kind: Secret apiVersion: v1 metadata: name: docker-auth-secret namespace: kube-system data: .dockerconfigjson: >- BASE64-ENCODED-SECRET type: kubernetes.io/dockerconfigjson -
Crie uma configuração Satellite. Na opção
--data-location, especifique a região Gerenciado de de seu Local.ibmcloud sat config create --data-location wdc --name my-config -
Inclua uma versão em sua configuração Especifique o caminho de arquivo para o
secret.yamlcriado anteriormente.ibmcloud sat config version create --name 1 --config my-config --file-format yaml --read-config /Users/username/Desktop/secret.yaml -
Crie uma assinatura para aplicar o DaemonSet a um grupo de clusters
ibmcloud sat subscription create --name my-subscription --config my-config --group GROUP -
Salve o seguinte DaemonSet em um arquivo chamado
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 -
Crie uma configuração Satellite. Na opção
--data-location, especifique a região Gerenciado de de seu Local, por exemplo,wdc.ibmcloud sat config create --data-location wdc --name my-ds -
Inclua uma versão em sua configuração Especifique o caminho de arquivo para o
ds.yamlcriado anteriormente.ibmcloud sat config version create --name 1 --config my-ds --file-format yaml --read-config /Users/username/Desktop/ds.yaml -
Crie uma assinatura para aplicar o DaemonSet a um grupo de clusters
ibmcloud sat subscription create --name my-subscription --config my-ds --group GROUP -
Verifique o segredo e DaemonSet sejam implementados em seus clusters.
oc get secret docker-auth-secret -n kube-systemoc get ds update-docker-config -n kube-system
Você também pode visualizar e gerenciar suas configurações e assinaturas no console Satellite.