我有一个简单的舵图,它将通过docker桌面将应用程序部署到我的kubernetes本地副本中。如果我使用kubectl一次部署yaml一个文件,则一切正常。但是,当我尝试为简化部署创建头盔图时,出现以下错误。
帮助安装演示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映射,但是错误仍然表明它们丢失了。为了使此功能按预期工作,我需要进行哪些更正?
答案 0 :(得分:7)
我有一个类似的问题,但有相同的错误消息,但不完全相同。对我来说,问题似乎是在其中一个舵模板开始时的注释。看来掌舵人对此案处理得不好。当我将评论下移一点时,它起作用了。
答案 1 :(得分:2)
我运行helm install anyname1 . --dry-run --debug
并收到无法理解的错误消息。
然后我运行helm template -f values.yaml . > deployChart.yaml
我在生成的文件中看到了一些奇怪的字符。
我的错误:我使用VS(Visual Studio)在模板内创建了一个附加文件'cronJob.yaml',并添加了我的内容...我认为头盔与OS-windows编码不兼容-某种程度上...希望对您有所帮助。
我的解决方案:我复制了一个现有文件,然后将其重命名,然后粘贴了内容。
答案 2 :(得分:1)
就我而言,我在模板目录中添加了 .json 文件。
我运行了 helm template -f values.yaml . > deployChart.yaml
并发现 deployChart.yaml
中存在 json 文件内容。
将 .json 文件移到模板目录之外可解决此问题。
答案 3 :(得分:0)
错误:无法从发布清单中构建kubernetes对象:错误 验证“”:验证数据时出错:未设置apiVersion
此错误表示安装命令是从错误的目录执行的,或者提供的图表路径错误。
要安装它,您必须从放置Chart.yaml
的目录中执行,或者在helm install
命令中提供该目录的路径作为参数,例如WebApi
目录:
helm install webapi .
答案 4 :(得分:0)
我在使用Azure DevSpaces(反过来使用Helm进行工作负载部署)时遇到了此错误。事实证明,尽管本地安装的helm客户端能够很好地解析模板,但是我的一些模板文件具有UTF-8 BOM,并且helm(在DevSpaces中)无法处理。我删除了BOM,并解决了DevSpaces中的问题。
答案 5 :(得分:0)
我遇到了同样的问题。我在添加到模板文件夹的yml文件之一中缺少a
中的apiVersion
。错字,但值得检查。
答案 6 :(得分:0)