首页 > 解决方案 > Helm 按特定顺序安装以进行“部署”

问题描述

我正在尝试按特定顺序在图表 (x) 中创建一个包含 5 个部署的 Helm 图表 (x):

  1. 部署 1 (zk)
  2. 部署 2(安全)
  3. 部署 3 (localmaster)
  4. 部署 4 (nginx)
  5. 部署 5 (semos)

Helm/Tiller 版本:“v2.12.3” Kubectl 版本:Major:“1”,Minor:“17” Minikube 版本:v1.6.2

我目前拥有的:资源:==> v1/Deployment

姓名

  1. 本地管理员
  2. Nginx
  3. 安全
  4. 西莫斯
  5. Zk

我可以轻松地部署图表 (x),但是一旦我运行 helm ls,我的 (x) 图表就会按照您在上面看到的随机顺序排列。我只有一个图表名称 (x),在 (x) 内我有:

Chart.yaml 图表 模板 values.yaml

模板图表是目录,其余的是文件。有没有特定的方法或技巧可以让我的 x(图表)按我想要的顺序排列?我已经进行了一些研究,但我不确定 helm spray 是否在正确的调用中,因为我正在尝试部署 1 个具有不同部署的图表,而不是伞形图表和许多其他子图表。如果您需要更多信息,请告诉我。

标签: kubernetesdevopskubernetes-helmminikube

解决方案


Helm是包管理器,允许您将应用程序定义为集群上的一组组件,并提供从头到尾管理这些集合的机制。

Helm 本身不创建 Pod,它向 Kubernetes api 发送请求,然后 Kubernetes 正在创建所有内容。

我知道如何使用 Helm 来实现它。

Helm 的部署顺序在这里Kinds是硬编码的。但是,如果您想为 k8s 设置相同类型的部署顺序,可以使用.annotations

您可以设置注释:在示例中使用like预安装挂钩(挂钩权重中的较低值具有较高优先级)。类似的案例可以在Github上找到。hook-weight

它看起来像下面的例子:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    helm.sh/hook: pre-install
    helm.sh/hook-weight: "10"
  labels:
    app.kubernetes.io/instance: test
...

您可以使用 . 检查首先创建的部署kubectl get events。但是,Pod 的创建仍然由 Kubernetes 安排。

要准确获取您需要的内容,您可以使用initContainershardcode“sleep”命令。
第一次使用 sleep 1s 部署,第二次使用 5s 部署,第三次使用 10s,取决于部署需要多长时间才能创建所有 pod。

您可以查看这篇文章,但请记住spec.containersspec.initContainers这是两件不同的事情。


推荐阅读