Защищенный приватный docker-реестр

#docker #kubernetes #kubernetes-helm

#docker #kubernetes #kubernetes-рулевой

Вопрос:

Как настроить частный защищенный docker-реестр.

Я установил через helm

Теперь, как я могу сделать его безопасным (сертификаты TLS), чтобы я мог запускать и извлекать доступ к реестру из docker и из развертывания kubernetes?

Я вижу, что существует конфигурация Helm:

 tlsSecretName   Name of secret for TLS certs
  

Обновление — текущий статус:
Мне удалось запустить cert-manager и установить с помощью TLS:

 helm install stable/docker-registry --set tlsSecretName=example-com-tls
  

Я не силен в сертификатах, но мне неясно следующее:
1.
Могу ли я теперь создать вход (с секретом для сертификата), который будет принимать только входящие запросы с этим сертификатом? Я посмотрю на предложенную ссылку от @xzesstence завтра
2.
Полагаю, мне нужно сообщить docker push , где найти сертификат? Может быть, это (я попробую это завтра): https://docs.docker.com/engine/security/certificates /

Комментарии:

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

2. действительно @Vishrant но в данном случае, я думаю, это очевидно для пользователя docker. он хочет обезопасить уровень сервиса для запуска через TLS

3. @xzesstence о, я вижу правку непосредственно перед вашим комментарием.

Ответ №1:

Ознакомьтесь с официальными руководствами по Docker https://docs.docker.com/registry/deploying /

и особенно важно получить сертификат

Итак, в общем, вам нужно получить сертификат и поместить его в /certs (или изменить монтирование папки следующей командой запуска docker -v /cert). Также проверьте имя сертификата, либо переименуйте в domain.crt, либо измените имя файла в команде запуска docker

затем запустите

 docker run -d 
  --restart=always 
  --name registry 
  -v "$(pwd)"/certs:/certs 
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt 
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key 
  -p 443:443 
  registry:2  

Если у вас нет сертификата, вы можете использовать letsencrypt https://letsencrypt.org /

Возможно, вы хотите проверить этот startscript с помощью сертификатов letsencrypt. (непроверенный с моей стороны) Преимущество этого в том, что у вас интегрирована служба letsencrypt, которая может автоматически продлевать лицензию https://gist.github.com/PieterScheffers/63e4c2fd5553af8a35101b5e868a811e

Редактировать: Поскольку вы используете Docker в кластере Kubernetes, ознакомьтесь с этим замечательным руководством https://medium.com/@jmarhee/in-cluster-docker-registry-with-tls-on-kubernetes-758eecfe8254

Комментарии:

1. Спасибо, действительно хорошее предложение. Я работаю на kubernetres и использую Helm. Что касается сертификатов, я подумываю об использовании stable / cert-manager

2. Я немного обновил свой вопрос, включая использование менеджера сертификатов на k8s. Я попробую рассмотреть создание входа, как в ссылке, которую вы предложили. Спасибо и, пожалуйста, дайте мне знать 🙂