【发布时间】:2020-10-26 01:40:18
【问题描述】:
我有一个简单的 helm chart,它将通过 docker desktop 将应用程序部署到我的本地 kubernetes 副本。如果我使用 kubectl 一次部署 yaml 一个文件,则一切正常。但是,当我尝试创建一个 helm 图表以便于部署时,我收到以下错误。
helm 安装演示 WebApi
错误:无法从发布清单构建 kubernetes 对象:错误验证“”:错误验证数据:未设置 apiVersion
错误似乎是说我的一个或多个 YAML 文件中缺少 apiVersion 映射。但是,我所有的文件似乎都有正确的 apiVersions。
文件夹结构
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
如您所见,我的所有 YAML 文件都有所需的 apiVersion 映射,但错误仍然显示它们丢失。我需要进行哪些更正才能使其按预期工作?
【问题讨论】:
-
您的 Helm 图表是什么样的?可以分享一下吗?
-
@Rico 所有值都在上面的 yaml 中
-
文件结构是否正确?你是怎么创造的?如果您甚至不使用模板,那么使用 Helm 有什么意义?
-
@Rico 抱歉我误解了。请看我上面添加的文件夹结构。
-
您是否有任何与此安装冲突的现有资源?
标签: kubernetes yaml kubernetes-helm