【问题标题】:How to make pods stick around after helm test掌舵测试后如何让豆荚粘在周围
【发布时间】:2021-11-11 02:09:55
【问题描述】:

我希望测试 pod 在运行 helm test 后保持不变,以便我可以检查日志。

但在 Helm 3 中,运行 helm test 会运行测试,打印结果(成功/失败),然后删除 pod。

如何让 Helm 在测试执行后保留 Pod?

【问题讨论】:

    标签: kubernetes-helm


    【解决方案1】:

    我正在使用包含 "helm.sh/hook-delete-policy": hook-succeeded 注释的测试 Pod。这是helm create创建的测试的轻微修改版本:

    apiVersion: v1
    kind: Pod
    metadata:
      name: "{{ include "test-helm-logs.fullname" . }}-test-connection"
      labels:
    {{ include "test-helm-logs.labels" . | nindent 4 }}
      annotations:
        "helm.sh/hook": test-success
        "helm.sh/hook-delete-policy": hook-succeeded
    spec:
      containers:
        - name: wget
          image: busybox
          command: ['wget']
          args:  ['{{ include "test-helm-logs.fullname" . }}:{{ .Values.service.port }}']
      restartPolicy: Never
    

    删除删除注释允许 pod 留下来进行检查。

    【讨论】:

      【解决方案2】:

      了解 helm hook 资源:

      1. Helm 挂钩创建的任何资源都是非托管的 Kubernetes 对象。
      2. 换句话说,使用“helm uninstall”卸载 Helm 图表不会删除挂钩创建的底层资源。
      3. 如果需要删除这些资源,则需要以注释的形式定义单独的删除策略,即“helm.sh/hook-delete-policy”注释将在元数据部分定义挂钩定义文件。

      支持三种不同的删除策略,它们将决定何时删除资源:

      1. before-hook-creation : 在启动新钩子之前删除之前的测试资源
      2. hook-succeeded : hook成功执行后删除测试资源
      3. hook-failed : 如果钩子在执行过程中失败,则删除测试资源

      重要提示:

      1. 如果未指定挂钩删除策略注释,则默认应用“before-hook-creation”行为。
      2. 任何 helm hook 资源(包括测试 hook 资源)都必须使用“helm.sh/resource-policy: keep”进行注释。

      我希望这些信息对某人有用。

      【讨论】:

        猜你喜欢
        • 2019-10-07
        • 2020-05-19
        • 2019-03-15
        • 2013-07-01
        • 2019-07-17
        • 2019-07-22
        • 2017-04-08
        • 1970-01-01
        • 2018-04-01
        相关资源
        最近更新 更多