Назад | Перейти на главную страницу

Как добавить сертификаты в Kubernetes, чтобы можно было извлекать изображения из настраиваемого репозитория Harbour?

Я нахожу всевозможные пошаговые инструкции о том, как добавлять сертификаты, которые будут использоваться в самих модулях, но я не могу найти информацию о том, как настроить Kubernetes, чтобы разрешить самозаверяющий сертификат для извлечения изображений из экземпляра Harbour, работающего внутри кластер. У меня есть сертификат CA, импортированный в доверенные сертификаты системы (система работает под управлением Ubuntu 18.04), но я предполагаю, что Kubernetes где-то использует свое собственное хранилище доверенных сертификатов, подобно тому, как Java игнорирует доверенные сертификаты системы и полагается на файлы хранилища ключей?

редактировать Чтобы быть более конкретным, я пытаюсь развернуть собственный образ Docker, хранящийся в моем экземпляре Harbour, который работает в моем кластере Kubernetes. У меня есть сертификаты для Harbour, импортированные в ОС моей хост-системы, и я могу запустить:

docker login <url_to_harbor>
docker pull <url_to_harbor>/library/custom/image:latest

и он отлично работает из CLI, но если я попытаюсь создать yaml развертывания следующим образом:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: custom-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: custom
  template:
    metadata:
      labels:
        app: custom
    spec:
      containers:
      - name: custom
        image: <url_to_harbor>/library/custom/image:latest
...

и беги kubectl apply -f custom-deploy.yaml Когда я получаю капсулы, я получаю следующую ошибку:

custom-deployment-6ff68947f6-8jj2p            0/1     ImagePullBackOff   0          13s

И если я получаю описание отказавшего модуля, я вижу:

  Warning  Failed          18s                kubelet, node3     Failed to pull image "<url_to_harbor>/library/custom/image:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://<url_to_harbor>/v2/: x509: certificate signed by unknown authority
  Warning  Failed          18s                kubelet, node3     Error: ErrImagePull

Я перезапустил хост-машину, так как импортировал сертификаты CA. Я добавил сертификаты, переместив файл сертификата корневого центра сертификации в /usr/local/share/ca-certificates а затем бег sudo update-ca-certificates.

Метод импорта сертификата CA правильный, но вы должны делать это на каждом узле кластера: на всех мастерах и рабочих. Kubernetes просто полагается на центры сертификации, установленные в базовой операционной системе.