首页 > 解决方案 > Helm 3 图表安装错误:验证数据时出错:未设置 apiVersion

问题描述

我有一个简单的 helm chart,它将通过 docker desktop 将应用程序部署到我的本地 kubernetes 副本。如果我使用 kubectl 一次部署 yaml 一个文件,则一切正常。但是,当我尝试创建一个掌舵图以便于部署时,我收到以下错误。

helm 安装演示 WebApi

错误:无法从发布清单构建 kubernetes 对象:错误验证“”:错误验证数据:未设置 apiVersion

该错误似乎是说我的一个或多个 YAML 文件中缺少 apiVersion 映射。但是,我所有的文件似乎都有正确的 apiVersions。

文件夹结构

charts
└── WebApi
    ├── Chart.yaml
    └── templates
        ├── deployment.yaml
        ├── ingress.yaml
        └── services.yaml

图表.yaml

apiVersion: v2
version: 0.1.0
name: WebApi
appVersion: "1.0"
description: A Helm Chart for WebApi
type: application

部署.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-api
  labels:
    app: demo
    tier: demo-api
spec:
  selector:
    matchLabels:
      app: demo
  replicas: 3
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
        - name: demo
          image: demo/image
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
              protocol: TCP
          resources:
            limits:
              memory: "128Mi" #128 MB
              cpu: "200m" #200 millicpu (.2 cpu or 20% of the cpu)
          livenessProbe:
            httpGet:
              path: /swagger/index.html
              port: 80
            initialDelaySeconds: 15
            timeoutSeconds: 2
            periodSeconds: 5
            failureThreshold: 1
          readinessProbe:
            httpGet:
              path: /swagger/index.html
              port: 80

入口.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: demo
spec:
  rules:
    - host: demo.com
      http:
        paths:
          - backend:
              serviceName: demo
              servicePort: 80

服务.yaml

apiVersion: v1
kind: Service
metadata:
  name: demo
  labels:
    app: demo
spec:
  type: ClusterIP
  selector:
    app: demo
  ports:
    - name: http
      port: 80
      targetPort: 80

如您所见,我的所有 YAML 文件都有所需的 apiVersion 映射,但错误仍然显示它们丢失。我需要进行哪些更正才能使其按预期工作?

标签: kubernetesyamlkubernetes-helm

解决方案


我有相同的错误消息的类似问题,但不完全相同的问题。对我来说,问题似乎是在其中一个 helm 模板开始时的评论。看来 helm 没有很好地处理这个案子。当我将评论向下移动一点时,它起作用了。


推荐阅读