值键位于“名称”列表下但前面没有破折号是什么意思? (我应该如何阅读和理解这个)
apiVersion: v1
kind: Pod
metadata:
name: postgres
labels:
tier: db-tier
spec:
containers:
- name: postgres
image: postgres
env:
- name: POSTGRES_PASSWORD
value: mysecretpassword
这样做不会产生有效的 K8s YAML。这是为什么?
apiVersion: v1
kind: Pod
metadata:
name: postgres
labels:
tier: db-tier
spec:
containers:
- name: postgres
image: postgres
env:
- name: POSTGRES_PASSWORD
- value: mysecretpassword
如果我们认为您的建议与实际解决方案相反,那么 kubernetes 会对待您的格式
env:
- name: POSTGRES_PASSWORD
- value: mysecretpassword
- name: variable
- value: answer
如:-
env: [{name:POSTGRES_PASSWORD}, {value:mysecretpassword}, {name:variable}, {value:answer}]
这样,K8s 将无法映射键值对的实际对象。
所以在 yaml 中定义数组的实际格式,或者我们可以说在 yaml 中定义数组的语法如下。
例如:-
env:
- name: POSTGRES_PASSWORD
value: mysecretpassword
- name: POSTGRES_USER
value: root
这将被视为:-
env: [{name:POSTGRES_PASSWORD, value:mysecretpassword}, {name:POSTGRES_USER, value:root}]
pod 定义 YAML 文件的
env
部分接受 array
键值对。
破折号表示数组中的一个元素。
我建议查看 YAML 规范:https://www.commonwl.org/user_guide/yaml/#arrays
还推荐 Kubernetes 绝对初学者课程,非常棒:
这里提供了一个很好的解释链接
(它用于 ansible 配置,但格式规则主要适用,因为它们都使用 yml 文件)