我有一个部署文件,它通过了kubernetes的CircleCI,但无论如何都不会通过。这就是我的deployment.yaml包含的内容:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: usage-metrics
namespace: foo
labels:
foo-app: usage-metrics
spec:
replicas: 1
selector:
matchLabels:
foo-app: usage-metrics
template:
metadata:
labels:
foo-app: usage-metrics
name: usage-metrics
spec:
terminationGracePeriodSeconds: 60
imagePullSecrets:
- name: regsecret
containers:
- image: foo/usage-metrics
name: app
env:
- name: TEMP_ENV_VAR
value: "temp"
ports:
- containerPort: 8080
出于某种原因,当我推送它时,我一直收到这个错误:
"STDIN": error validating data: [ValidationError(Deployment.spec.template.spec.containers[0].env): invalid type for io.k8s.api.core.v1.Container.env: got "string", expected "array", ValidationError(Deployment.spec.template.spec): unknown field "ports" in io.k8s.api.core.v1.PodSpec]
CCI配置的部署部分:
echo ":: deploying to $CONTEXT"
export CLUSTER_ID=$CONTEXT
cd $SOURCE_PATH
kd
--context $CONTEXT
--namespace foo
--ssh-host deploy@bastion.$CTL_CONTEXT
--timeout 8m
--images "app=$(cat new-tag)"
--file deployment.yaml
我确信env是一个数组而不是字符串,所以我不确定为什么会发生这种情况,请帮助!谢谢
在中粘贴yaml时,它看起来是有效的http://www.yamllint.com/。在CircleCI中使用kubectl
的方式检查是否有添加字符或打断缩进的内容。
所以我终于弄明白了。出于某种原因,CircleCI正在对照master分支(它在后面(检查我的代码。当我通过另一个更新得更多的分支进入CCI时,它仍然不喜欢我的主分支在env插槽中有一个字符串。我一更新,一切都正常。谢谢大家!