Search code examples
kubernetesyamlkubernetes-helm

Helm 3 chart install error: error validating data: apiVersion not set


I have a simple helm chart that will deploy an application to my local copy of kubernetes via docker desktop. If I use kubectl to deploy the yaml one file at a time things work correctly. However, when I try to create a helm chart for easier deployments I get the following error.

helm install demo WebApi

Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: apiVersion not set

The error seems to be saying that I am missing an apiVersion map in one or more of my YAML files. However, all of my files have what seems to be the correct apiVersions.

Folder Structure

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

Chart.yaml

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

deployment.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

ingress.yaml

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

service.yaml

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

As you can see all of my YAML files have the required apiVersion map however the error still says they are missing. What corrections do I need to make in order for this to work as intended?


Solution

  • Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: apiVersion not set

    This error means that the installation command was executed from wrong directory or wrong path to chart has been provided.

    In order to install it, you have to either execute from the directory where Chart.yaml is placed or provide the path to this directory as an argument in helm install command, example from WebApi directory:

    helm install webapi .