【问题标题】:Deployment with deployment.yaml file使用 deployment.yaml 文件进行部署
【发布时间】:2018-07-18 21:23:49
【问题描述】:

我有一个通过 CircleCI 的 kubernetes 部署文件,无论如何都不会通过。这是我的 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 绝对有效
  • 我正在通过 circleCi 进行部署
  • 是的,但是怎么做?发布您的 circleci 配置
  • 出于某种原因,它还认为端口是规范的子对象,而不是容器
  • 刚刚编辑添加了配置的部署部分

标签: kubernetes yaml continuous-deployment


【解决方案1】:

将 yaml 粘贴到 http://www.yamllint.com/ 时看起来有效。在 CircleCI 中使用 kubectl 的方式检查是否添加字符或破坏缩进。

【讨论】:

    【解决方案2】:

    所以我最终弄明白了。出于某种原因,CircleCI 正在检查我的代码与主分支(哪个在后面)。当我通过另一个更新的分支进入 CCI 时,它仍然不喜欢我的主分支在 env 插槽中有一个字符串。一旦我更新了一切正常。谢谢大家!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 2012-11-12
      • 1970-01-01
      • 2012-08-15
      • 2010-10-10
      • 1970-01-01
      相关资源
      最近更新 更多