Búsqueda de sitios web

Agregar el secreto de extracción del registro de imágenes de Harbour a Kubernetes/OpenShift |


Ahora tengo configurado el registro de imágenes de Harbor. ¿Cómo puedo extraer imágenes del registro de Harbor en Kubernetes/OpenShift con un secreto de extracción? Harbor es un proyecto certificado por CNCF que ayuda en el almacenamiento de imágenes OCI y cartas Helm. Como Harbor proporciona un sistema de autenticación y RBAC, es probable que deba agregar un secreto de extracción para una cuenta de usuario o robot en su Kubernetes u OpenShift Cluster.

Paso 1: inicie sesión en Harbour en la estación de trabajo con Docker/Podman

Comience iniciando sesión en su registro de Harbor desde Docker CLI o Podman CLI. Si su registro está en un puerto personalizado, por ejemplo, 5000, entonces su URL será como miregistro.ejemplo.com:5000.

Si su registro de Harbour no es seguro. Agréguelo a la lista de registros inseguros.

### Podman ###
$ sudo vim /etc/containers/registries.conf
...
[registries.insecure]
registries = ['myregistry.example.com']

### Docker ###
$ sudo vim /etc/docker/daemon.json
{
  "insecure-registries" : ["myregistry.example.com"]
}

## Restart docker
sudo systemctl restart docker
docker info

Inicio de sesión en Docker:

$ docker login myregistry.example.com
Username: jkmutai
Password:
Login Succeeded!

Inicio de sesión de Podman:

$ docker login myregistry.example.com
Username: jkmutai
Password:
Login Succeeded!

Docker almacenará su información de acceso al registro en ~/.docker/config.json.

cat ~/.docker/config.json

Mientras Podman almacena en /run/user/UserID/containers/auth.json

cat /run/user/`id -u`/containers/auth.json

Es posible que necesites copiar las credenciales de acceso en formato json al servidor con el comando kubectl o oc .

Paso 2: Agregar el secreto del registro de Harbor a Kubernetes/OpenShift

A continuación, debemos agregar los detalles de acceso al registro de Harbour como secreto en Kubernetes/OpenShift.

kubectl create secret generic harbor-registry-secret \
    --from-file=.dockerconfigjson=./harbor-k8s.json \
    --type=kubernetes.io/dockerconfigjson \
    -n demo

Dónde :

  • ./harbor-k8s.json es la ruta a su archivo json de Docker/Podman. Cámbielo en consecuencia.
  • demo es el nombre del espacio de nombres donde se creará el secreto.

Confirmar creación secreta:

$ oc get secrets harbor-registry-secret
NAME                     TYPE                             DATA   AGE
harbor-registry-secret   kubernetes.io/dockerconfigjson   1      30s

Si alguna vez desea descifrar un secreto agregado para confirmar los valores, puede usar el comando:

kubectl get secret harbor-registry-secret --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode

Paso 3: Confirme que puede implementar la aplicación desde la imagen en el registro de Harbor

Cargue una imagen en el registro de Harbour: primero deberá crear un proyecto en Harbour.

$ podman pull docker.io/jmutai/kuard-amd64:blue
$ podman tag docker.io/jmutai/kuard-amd64:blue myregistry.example.com/myproject/kuard-amd64:blue
$ docker push myregistry.example.com/myproject/kuard-amd64:blue
Getting image source signatures
Copying blob bcf2f368fe23 done
Copying blob 656e9c47289e done
Copying config 1db936caa6 done
Writing manifest to image destination
Storing signatures

Dónde :

  • myregistry.example.com es la URL del registro del puerto
  • myproject es el proyecto al que el usuario agregado tiene acceso

Cree un manifiesto de implementación de Pod para Kubernetes.

$ vim kuard-pod-health.yaml
---
apiVersion: v1
kind: Pod
metadata:
  name: kuard
spec:
  imagePullSecrets:
  - name: harbor-registry-secret
  containers:
    - name: kuard
      image: myregistry.example.com/myproject/kuard-amd64:blue
      ports:
        - containerPort: 8080
          name: http
          protocol: TCP
      resources:
        requests:
          cpu: "500m"
          memory: "128Mi"
        limits:
          cpu: "500m"
          memory: "256Mi"

Crea una cápsula.

$ kubectl apply -f kuard-pod-health.yaml -n <namespace>
pod/kuard created

Confirme que la implementación fue exitosa.

$ kubectl get pod -n <namespace>
NAME                          READY   STATUS    RESTARTS   AGE
kuard                         1/1     Running   0          2m18s

Si no se crea el pod, verifique los eventos para comprender el motivo.

kubectl describe pod <podname> <namespace>

Más guías sobre registros de imágenes:

Instale Harbor Image Registry en Kubernetes/OpenShift con Helm Chart

Cómo permitir registros inseguros en el clúster OpenShift/OKD 4.x

Configurar la autenticación de Active Directory (AD) para Harbor Registry

Cómo integrar Harbour Registry con LDAP para la autenticación de usuarios

Artículos relacionados: