#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. Я попробую рассмотреть создание входа, как в ссылке, которую вы предложили. Спасибо и, пожалуйста, дайте мне знать 🙂