Кубернетес и небезопасный реестр - PullRequest
0 голосов
/ 12 сентября 2018

Интересно, могло ли это сработать ..

У нас есть службы FOO и BAR, они работают на одном кластере с Docker Registry. Давайте представим, что этот кластер предназначен для производства, а не для разработки

У нас есть Система CI / CD, которая отвечает за сборку образов и передачу их в реестр докеров.

Реестр Docker используется только в частной сети kubernetes, мы не будем выдвигать или извлекать изображения за пределы кластера, потому что ... Зачем мне это делать?

+-----------------------------------------------+
|                                               |
|                           KUBERNETES          |
|    +-------+                                  |
|    | VCS   |          +----------+            |
|    |       <----------+          |            |
|    |       |          | CI/CD    |            |
|    +-------+  +-------+          |            |
|               |       +----------+            |
|               |                               |
|               |             +-----+           |
|      +--------v-----+ <-----+FOO  |           |
|      | INSECURE     |       +-----+           |
|      | DOCKER       |           +-------+     |
|      | REGISTRY     | <---------+BAR    |     |
|      +--------------+           +-------+     |
+-----------------------------------------------+
                                      ^
                                      |
                                      |
                                      +
                                  USERS

Можно ли создать реестр докеров с самозаверяющим сертификатом и настроить kubernetes для доверия этому реестру?

Или это накладные расходы, и лучше просто использовать хороший сертификат и переходить в общедоступную сеть?

Где вы храните готовые образы докеров и где их можно разместить?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Где вы храните готовые образы докеров и где для подготовки?

Как правило, изображения должны быть одинаковыми для подготовки и производства.Нет причин хранить их отдельно.

Или это накладные расходы, и лучше просто использовать хороший сертификат и переходить через общедоступную сеть?

С точки зрения использования, естьнет большой разницы между внутренними сертификатами PKI или государственными службами, такими как Verisign, Symantec и т. д. Основное отличие заключается в том, насколько безопасны и надежны службы выдачи.

Можно ли создать реестр докеров с самозаверяющим сертификатом и настроить kubernetes для доверия этому реестру?

Согласно Документация Kubernetes :

Кластер Kubernetes использует тип секрета docker-registry для аутентификации в реестре контейнера для извлечения личного образа.

Создайте этот секрет с именем regcred :

kubectl create secret docker-registry regcred --docker-server=your-registry-server --docker-username=your-name --docker-password=your-pword --docker-email=your-email

где:

  • your-registry-server - это ваше полное доменное имя в реестре Docker.(https://index.docker.io/v1/ для DockerHub)
  • ваше имя - ваше имя пользователя в Docker.
  • your-pword - ваш пароль Docker.
  • ваша электронная почта - это ваша электронная почта Docker.

Вы успешно установили свои учетные данные Docker в кластере в качестве секрета с именем regcred .

Чтобы понять содержимое только что созданного regcred Secret, начните с просмотра Secret в формате YAML:

kubectl get secret regcred --output=yaml

Чтобы понять, что находится в.Поле dockerconfigjson, преобразуйте секретные данные в читаемый формат:

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

Создайте модуль, который использует ваш секрет:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: regcred

Полезные статьи:

Немного другой подход описан в следующей статье.Он защищает Ingress вместо самого реестра.

0 голосов
/ 12 сентября 2018

Ну, это выглядит как очень теоретический вопрос.Единственный вопрос, на который можно ответить однозначно:

Возможно ли создать реестр докеров с самозаверяющим сертификатом и настроить kubernetes для доверия этому реестру?

OfКонечно, вы можете развернуть свой собственный реестр Docker, например, Artifactory или что-то еще.Вы определенно можете создать самозаверяющий сертификат и использовать его, а также можете использовать сертификат, выданный одним из центров сертификации.(обратите внимание, что он может быть бесплатным, например, через Let's Encrypt). Движение вперед, доверять реестру или нет - это не задача Kubernetes.Это задача времени выполнения, например, Docker или Rkt.Поэтому, если вы хотите использовать частный реестр, вам нужно будет настроить клиент времени выполнения для работы с вашим реестром, независимо от того, безопасен он или нет.

Все остальное не так ясно, как мы могли бы подумать.Единственное, что я хочу сказать: практика показывает, что если ты собираешься что-то делать, ты должен делать это по-своему

...