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