Actualización del secreto de extracción global en clústeres de Satellite
Después de configurar un clúster Satellite, puede actualizar el secreto de extracción global en su clúster para extraer desde un registro de contenedor privado que no sea quay.io o icr.io. Por ejemplo, puede que desee
extraer imágenes del Cloud Pak Entitled Registry (cp.icr.io) o de su propio registro privado.
Hay dos formas de actualizar el secreto de extracción global en los clústeres de Satellite.
- Actualización del secreto de extracción global.
- Utilice este enfoque si tiene uno o varios clústeres para mantener. Debe repetir estos pasos para cada clúster donde desee aplicar el secreto.
- Actualización del secreto de extracción global utilizando la configuración de Satellite.
- Utilice este enfoque si mantiene varios clústeres y grupos de clústeres de Satellite. Utilizando la configuración de Satellite, puede aplicar los cambios secretos en los clústeres y grupos de clústeres de Satellite.
Actualización del pull secret global
Realice los pasos siguientes para actualizar el secreto de extracción global en el clúster Satellite.
- Cree un secreto que tenga las credenciales para el registro que desea utilizar.
Mandatooc create secret docker-registry docker-auth-secret \ --docker-server=REGISTRY \ --docker-username=USERNAME \ --docker-password=PASSWORD \ --namespace kube-systemcreate secretde ejemplo para utilizar el registro autorizado de 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 - Cree un DaemonSet para aplicar el secreto en todos los nodos de trabajador.
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 - Compruebe que los pods se están ejecutando.
oc get daemonset -n kube-system update-docker-config
Actualización del secreto de extracción global utilizando la configuración de Satellite
Realice los pasos siguientes para utilizar la configuración de Satellite para aplicar el secreto de extracción global en los clústeres y grupos de clústeres de Satellite.
-
Asegúrese de activar Satellite config.
-
Cree un secreto en uno de los clústeres de Satellite. Tenga en cuenta que este secreto se suprimirá más adelante.
oc create secret docker-registry docker-auth-secret \ --docker-server=REGISTRY \ --docker-username=USERNAME \ --docker-password=PASSWORD \ --namespace kube-systemMandato
create secretde ejemplo para utilizar el registro autorizado de 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 -
Consigue los detalles de tu secreto. Copie y guarde la sección base64 codificada
dockerconfigjson.oc get secret docker-auth-secret -o yaml -
Suprima el secreto.
oc delete secret docker-auth-secret -n kube-system -
Cree un archivo de configuración denominado
secret.yamlque tenga sus credenciales de registro. Pegue la sección base64 codificadadockerconfigjsonque ha guardado en el paso anterior.kind: Secret apiVersion: v1 metadata: name: docker-auth-secret namespace: kube-system data: .dockerconfigjson: >- BASE64-ENCODED-SECRET type: kubernetes.io/dockerconfigjson -
Cree una configuración en Satellite. En la opción
--data-location, especifique la región Gestionado desde de la ubicación.ibmcloud sat config create --data-location wdc --name my-config -
Añada una versión a la configuración. Especifique la vía de acceso al archivo
secret.yamlque ha creado anteriormente.ibmcloud sat config version create --name 1 --config my-config --file-format yaml --read-config /Users/username/Desktop/secret.yaml -
Cree una suscripción para aplicar el DaemonSet a un grupo de clústeres.
ibmcloud sat subscription create --name my-subscription --config my-config --group GROUP -
Guarde el siguiente DaemonSet en un archivo denominado
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 -
Cree una configuración en Satellite. En la opción
--data-location, especifique la región Gestionado desde de la ubicación, por ejemplo,wdc.ibmcloud sat config create --data-location wdc --name my-ds -
Añada una versión a la configuración. Especifique la vía de acceso al archivo
ds.yamlque ha creado anteriormente.ibmcloud sat config version create --name 1 --config my-ds --file-format yaml --read-config /Users/username/Desktop/ds.yaml -
Cree una suscripción para aplicar el DaemonSet a un grupo de clústeres.
ibmcloud sat subscription create --name my-subscription --config my-ds --group GROUP -
Verifique que el secreto y DaemonSet se despliegan en los clústeres.
oc get secret docker-auth-secret -n kube-systemoc get ds update-docker-config -n kube-system
También puedes ver y gestionar tus configuraciones y suscripciones desde la consola Satellite.