使用 minikube 从本地 Docker 注册表中提取映像(使用自签名 CA 证书)



使用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/...中提取任何引用的映像

最新更新