介绍
在开发和部署应用程序时,我们通常需要使用 Docker 镜像。如果我们希望在 Kubernetes 集群上部署私有 Docker 镜像,则需要创建一个私有 registry。本文将介绍如何在 Kubernetes 集群上部署私有 registry。
准备工作
为了部署私有 registry,我们需要具备以下条件:
- 已经创建了 Kubernetes 集群
- 已经安装了 Kubernetes kubectl 和 Docker
步骤
配置 TLS 证书
为了保护私有 registry,我们需要配置 TLS 证书。
- 生成自签名证书和密钥
$ openssl req \ -newkey rsa:4096 -nodes -sha256 \ -keyout tls.key \ -x509 -days 365 \ -out tls.crt
您可以选择使用任何其他证书颁发机构颁发的证书。
- 在 Kubernetes 集群中创建 TLS Secret
$ kubectl create secret tls registry-tls \ --cert=tls.crt \ --key=tls.key \ --namespace=<namespace>
编写配置文件
创建名为 registry-deployment.yaml
的 YAML 文件,并将以下内容添加到文件中:
-- -------------------- ---- ------- ----------- ------- ----- ---------- --------- ----- -------- ---------- ----------- ----- --------- - --------- ------------ ---- -------- --------- --------- ------- ---- -------- ----- ----------- - ----- -------- ------ ---------- ------ - ----- -------- -------------- ---- ------------- - ----- ------------- ---------- ----------------- ---- - ----- ----------------------------- ------ -------------- - ----- --------------------- ------ -------------- - ----- --------------------------- ------ -------------- - ----- ---------------------------- ------ --------- ------ -------- - ----- ------------- --------- -- - ----- ------------ ------- ----------- ------------ - ----- ---- ---------- ----- ----
部署 registry
运行以下命令以部署私有 registry:
$ kubectl apply -f registry-deployment.yaml
添加认证
您可以添加认证来保护私有 Docker 镜像。为此,您需要创建一个 HTPasswd 文件。
- 安装
htpasswd
工具
$ sudo apt-get install apache2-utils -y
- 创建 HTPasswd 文件
$ sudo htpasswd -cB auth/htpasswd <username> New password: Re-type new password: Adding password for user <username>
- 创建 ConfigMap
创建名为 auth-configmap.yaml
的 YAML 文件,并将以下内容添加到文件中:
apiVersion: v1 kind: ConfigMap metadata: name: auth namespace: <namespace> data: htpasswd: | <username>:<encrypted_password>
在 <encrypted_password>
中使用 htpasswd
命令中生成的加密密码替换。
运行以下命令以创建 ConfigMap:
$ kubectl apply -f auth-configmap.yaml
测试 registry
- 获取 registry 地址
$ kubectl get svc registry
- 将 registry 添加到 Docker 配置文件中
将以下内容添加到 /etc/docker/daemon.json
文件中:
{ "insecure-registries":["<registry_ip>:<registry_port>"] }
- 重新启动 Docker 服务
$ sudo systemctl restart docker
- 创建一个 Docker 镜像,并将其推送到私有 registry
$ docker build -t <registry_ip>:<registry_port>/my-image . $ docker push <registry_ip>:<registry_port>/my-image
结论
在 Kubernetes 集群上部署私有 registry 是一项非常有用的技能,它使您能够更好地管理私有 Docker 镜像并确保它们是安全的。在本文中,我们介绍了如何在 Kubernetes 集群上部署私有 registry,以及如何为 registry 添加认证来保护您的 Docker 镜像。希望这个指南对你有帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675281918bd460d3ad94f914