Helm 按照“部署”的特定顺序安装

Kar*_*iji 3 kubernetes devops minikube kubernetes-helm

我正在尝试创建一个 Helm 图表 (x),其中图表 (x) 内按特定顺序进行 5 个部署:

\n\n
    \n
  1. 部署1(zk)
  2. \n
  3. 部署2(安全)
  4. \n
  5. 部署3(本地主控)
  6. \n
  7. 部署4(nginx)
  8. \n
  9. 部署5(semoss)
  10. \n
\n\n

Helm/Tiller 版本:“v2.12.3”\nKubectl 版本:主要:“1”,次要:“17”\nMinikube 版本:v1.6.2

\n\n

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

\n\n

姓名

\n\n
    \n
  1. 本地管理员
  2. \n
  3. nginx
  4. \n
  5. 安全
  6. \n
  7. 塞莫斯
  8. \n
  9. Zk
  10. \n
\n\n

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

\n\n

Chart.yaml 图表 模板 value.yaml

\n\n

模板图表是目录,其余的是文件。\n 有没有特定的方法或技巧可以让我的 x(图表)按我想要的顺序排列?我\xe2\x80\x99已经做了一些研究,我不太确定 helm Spray 是否正确调用,因为我正在尝试使用不同的部署来部署 1 个图表,而不是伞图和许多其他子图表。\n让我知道您是否需要更多信息。

\n

Pjo*_*erS 11

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

Helm 本身并不创建 Pod,它会向 Kubernetes api 发送请求,然后 Kubernetes 会创建一切。

我有一个想法如何使用 Helm 来实现。

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

您可以设置注释:在本例中使用类似的方式预安装钩子(钩子权重的值越低,优先级越高)。类似的案例可以在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
...
Run Code Online (Sandbox Code Playgroud)

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

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

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