在创建过程中,我需要访问和存储kubernetes中的结荚属性。我可以毫无问题地访问yaml中的常规变量,但我不知道(也无法在线找到)访问列表元素的语法。
apiVersion: "agones.dev/v1"
kind: GameServer
metadata:
# generate a unique name
# will need to be created with `kubectl create`
generateName: ed-
spec:
ports:
- name: game
portPolicy: Dynamic
containerPort: 7777
protocol: UDP
template:
spec:
containers:
- name: ed-server
image: myimage
imagePullPolicy: Always # add for development
command: ["sh", "-c"]
args:
- echo MY_ID=$(MY_ID)\nMY_IP=$(MY_IP)\nMY_PROTOCOL=$(MY_PROTOCOL)\n";
env:
- name: MY_ID # THIS WORKS FINE
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_IP # THIS WORKS FINE
valueFrom:
fieldRef:
fieldPath: status.podIP
#- name: MY_PROTOCOL # THIS FAILS
# valueFrom:
# fieldRef:
# fieldPath: spec.ports[0].protocol我想知道正确的语法,并获得一些适当的文档来源的主题。
编辑:我已经将实际使用的yaml放在请求之后。我正在使用agones框架,但问题是通用的。如果解析器知道如何访问文字和字典,那么它应该能够访问数组。
谢谢!
发布于 2021-07-28 09:24:11
首先,你的YAML不是有效的。看上去你已经把Deployment和Pod YAML都搞定了。
您的YAML应该如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: foo
spec:
replicas: 1
selector:
matchLabels:
app: foo
template:
metadata:
labels:
app: foo
spec:
containers:
- name: foo
image: dummy_image:0.0.1
ports:
- name: game
portPolicy: Dynamic
containerPort: 7777
protocol: UDP答案:
不幸的是,ports字段不受fieldRef支持。检查向下API中支持的字段列表。
由于端口信息在pod运行时不会动态更改,所以您可以像这样导出它:
env:
- name: MY_PORT
value: "game"https://stackoverflow.com/questions/68557204
复制相似问题