Dockerhub注册表 使用部署 YAML 文件从 Helm 图表访问映像



我正在尝试通过使用Jenkins,Kubernetes和Kubernetes Helm为我的微服务实现CI/CD管道。在这里,我使用 Helm 图表来打包 YAML 文件并部署到 Kubernetes 集群中。我现在正在学习 Helm 图表和部署的实现。 当我学习时,我在部署 YAML 文件中找到了映像名称定义。

我有两个问题:

  1. 如果我们只定义镜像名称,那么它会自动从 Docker Hub 中提取? 或者我们是否需要在部署图表 YAML 文件中额外定义任何内容以进行拉取?
  2. Helm Tiller 如何与 Docker Hub 注册表通信?

Kubernetes 清单中的 Docker 映像名称遵循与其他任何地方相同的规则。 如果您有像postgres:9.6myname/myimage:foo这样的映像名称,它们将像往常一样在 Docker Hub 上查找。 如果您使用的是第三方存储库(Google GCR、Amazon ECR、quay.io 等(,则需要在映像名称中包含存储库名称。 这与你给docker rundocker build -t的字符串完全相同。

Helm 不直接与 Docker 注册表通信。 这里的掌舵流程是:

  1. 本地 Helm 客户端将图表发送到 Helm Tiller。
  2. Tiller 应用图表中的任何模板,并将其发送到 Kubernetes API。
  3. 这将创建一个具有嵌入式 Pod 规范的部署对象。
  4. Kubernetes 从部署中创建 Pod,这些 Pod 具有映像名称引用。

因此,如果您的 Helm 图表命名了一个不存在的图像,则所有这些流程都将正常运行,直到它创建最终处于ImagePullBackOff状态的 Pod。

PS:如果你还没有这样做,你应该使图像标签(冒号后面的部分(在你的 Helm 图表中可配置,并将你的镜像名称声明为类似于myregistry.io/myname/myimage:{{ .Values.tag }}。 然后,您的 CD 系统可以为每个构建提供一个不同的标记,并将其传递给helm install。 这使得可以相当无缝地回滚。

运行以下命令。它将生成带有 values.yaml 的空白图表,在 values.yaml 中添加键值 pare,并在 deployment.yaml 文件中将它们用作变量。

helm create mychart

最新更新