首页 > 解决方案 > io.k8s.api.core.v1.ContainerPort.containerPort 的 Kubernetes ValidationError 无效类型:得到“字符串”,预期“整数”;

问题描述

我有以下 pod manifest file.in ,我已经定义了一些环境变量。

我想为容器端口分配一个环境变量值,如下所示。

- 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 中将字符串值转换为整数值。

标签: kubernetes

解决方案


环境变量替换在 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

推荐阅读