配置私有docker仓库并部署到k8s集群

整体流程

journey
    title Setting up a private docker registry in k8s cluster
    section Steps
        Initialize -> Generate Certificates -> Create Secret -> Deploy Registry -> Configure Ingress -> Test Connection

步骤及代码示例

1. 初始化

首先,我们需要在k8s集群上创建一个新的命名空间,用于存放私有docker仓库相关资源。

kubectl create namespace my-docker-registry

2. 生成证书

接下来,我们需要生成TLS证书用于私有docker仓库的安全通信。

# 生成私钥
openssl genrsa -out registry.key 2048

# 生成证书签名请求
openssl req -new -key registry.key -out registry.csr -subj "/CN=my-docker-registry.registry.svc"

# 生成证书
openssl x509 -req -in registry.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out registry.crt -days 365

3. 创建Secret

将生成的证书和密钥放入kubernetes的secret对象中,以便容器可以使用它们进行安全通信。

kubectl create secret tls my-docker-registry-tls --cert=registry.crt --key=registry.key -n my-docker-registry

4. 部署私有docker仓库

部署私有docker仓库的Deployment和Service。

# 创建Deployment
kubectl apply -f registry-deployment.yaml -n my-docker-registry

# 创建Service
kubectl apply -f registry-service.yaml -n my-docker-registry

5. 配置Ingress

使用Ingress对象将私有docker仓库暴露到外部网络。

kubectl apply -f registry-ingress.yaml -n my-docker-registry

6. 测试连接

确保私有docker仓库已成功部署,并且可以从外部网络访问。

# 测试访问私有docker仓库
curl -k 

关系图

erDiagram
    DockerRegistry ||--o| TLSKey : has
    DockerRegistry ||--o| TLSCert : has
    DockerRegistry ||--o| Secret : has
    DockerRegistry ||--o| Deployment : has
    DockerRegistry ||--o| Service : has
    DockerRegistry ||--o| Ingress : has

通过上述步骤,你可以成功配置私有docker仓库并部署到k8s集群中。希望这篇文章可以帮助到你,让你更好地理解如何实现这一过程,加油!