使用minikube从本地Docker注册表中提取映像(使用自签名CA证书)
我希望能够运行 minikube,以便它可以使用自签名 CA 证书访问本地 docker 注册表。理想情况下,该过程应该是自动化的,以便我可以使用*deployment.yaml
文件来拉取所需的图像而无需干预。
目前我正在使用如下工作:
#ssh into the minikube instance
sudo minikube ssh
#create a folder for the certificate
sudo mkdir /etc/docker/certs.d/dave.local:5000
#copy the crt file from the registry computer to the minikube instance
sudo scp user@192.168.1.2:/home/dave/certs/domain.crt /etc/docker/certs.d/dave.local:5000
#then check login
docker login dave.local:5000
#then pull image so that it's already in minikube
docker pull dave.local:5000/davedockerimage
然后我用imagePullPolicy: Never
编辑*deployment.yaml
。 当我运行sudo kubectl create -f dave-deployment.yaml
时,它会在minikube上本地找到dave.local:5000/davedockerimage
,它使用已经拉取的图像。
如果imagePullPolicy: Always
.映像拉取在迷你库贝中失败。
我已经通过了一系列教程/堆栈溢出答案,但无法破解。任何帮助表示赞赏。
作为在minikube中使用自签名证书的替代方法,您可以使用不安全的注册表选项启动minikube,如下所示:
minikube start --insecure-registry="dave.local:5000"
运行不安全的连接对我来说不是一个选择,所以我遵循了这些minikube证书文档。这会将 minikube 配置为信任内部 CA 颁发的证书。
首先将 PEM 格式的 CA 证书复制到 minikube 的certs
目录中:
mkdir -p "${HOME}/.minikube/certs"
cp my-ca-certs-file.pem "${HOME}/.minikube/certs/"
接下来,使用--embed-certs
选项重新启动 minikube 以同步证书。
minikube stop
minikube start --embed-certs
之后,尝试使用部署或状态集拉取映像。如果收到身份验证错误,可能需要配置regcred
以便 kubernetes 可以使用自定义注册表进行身份验证。为此,请创建一个 kubernetes 知道在使用 docker 注册表进行身份验证时引用的密钥。这些说明改编自 Kubernetes 文档"从私有注册表中提取映像"。
docker login dave.local:5000
# Enter your credentials when prompted.
# This copies your cached token into a kubernetes secret.
kubectl create secret generic regcred
--from-file=.dockerconfigjson="${HOME}/.docker/config.json"
--type=kubernetes.io/dockerconfigjson
然后,部署应该能够从dave.local:5000/...
中提取任何引用的映像