kubernetes - 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 中不会发生。为此,您可以使用Helm。或者你可以使用shell命令如下,
( echo "cat <<EOF" ; cat pod.yaml; echo EOF ) | sh > pod-variable-resolved.yaml
然后用它在 kubernetes 中创建 pod。
kubectl apply -f pod-variable-resolved.yaml
推荐阅读
- elasticsearch - elasticsearch 7未能在索引logstash类型事件上放置映射并拒绝映射更新
- python - Icrawler 只工作了 1 次,然后它就不起作用了
- c# - MongoDB 中的 HasData 等价物
- python - 多标签情感分类
- json - 如何使用 QT 读写 JSON 文件
- sql - 选择具有特定值的所有列
- azure - 存储 blob delete-batch 删除所有 blob,不包括具有相似名称的两个目录
- java - 如何在不将业务逻辑放在转换器类中的情况下将 DTO 转换为实体?
- oauth-2.0 - 使用 SSO 保护托管在 openshift 上的应用程序
- android-studio - 尝试运行颤振应用程序并失败说构建失败并出现异常