io.k8s.api.core.v1.ContainerPort.containerPort的Kubernetes ValidationError无效类型:已获取“字符串”,应为“整数”;

时间:2019-06-25 08:18:51

标签: kubernetes

我有以下Pod清单文件。在其中,我定义了一些环境变量。

我想如下将环境变量值分配给容器端口。

- containerPort: $(PORT_HTTP)

但是当我尝试创建该Yaml触发错误时: ValidationError(Pod.spec.containers[0].ports[0].containerPort): invalid type for io.k8s.api.core.v1.ContainerPort.containerPort: got "string", expected "integer"; if you choose to ignore these errors, turn validation off with --validate=false

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: webapp
    name: webapp
spec:
  containers:
    - env:
    - name: PORT_HTTP
      value: 8080
    - name: PORT_HTTPS
       value: 8443
    image: nginx
    name: webapp
    ports:
    - containerPort: $(PORT_HTTP)
    resources: {}
    dnsPolicy: ClusterFirst
    restartPolicy: Never
    status: {}

如何将字符串值转换为Yaml中的整数值。

1 个答案:

答案 0 :(得分:0)

在Kubernetes中不会发生环境变量替换。为此,您可以使用Helm。或者您可以按以下方式使用shell命令,

( echo "cat <<EOF" ; cat pod.yaml; echo EOF ) | sh > pod-variable-resolved.yaml

然后使用它在kubernetes中创建pod。

kubectl apply -f pod-variable-resolved.yaml