有很多在线 YAML 到 JSON(反之亦然)转换器涵盖 1.1 和 1.2 规范。
我之前没有用过Kubernetes,但是我可以看到你可以传递多个文档。基本上,您使用的YAML 结构是两个文档的简短版本。 JSON 没有与此等效的,因此您必须将其分成两个单独的文档(文件)。
YAML 中的三个破折号是定义多个文档的一种方式。
所以基本上上面不是一个JSON oblect/file,而是两个。
第一个
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "my-nginx-svc",
"labels": {
"app": "nginx"
}
},
"spec": {
"type": "LoadBalancer",
"ports": [
{
"port": 80
}
],
"selector": {
"app": "nginx"
}
}
}
第二个
{
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "my-nginx"
},
"spec": {
"replicas": 2,
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}
附带说明,由于这对您的目的没有用,为了将它们表示为一个 JSON 对象,那么您需要一个数组。但这意味着YAML 也必须改变。所以为了有这个
[
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "my-nginx-svc",
"labels": {
"app": "nginx"
}
},
"spec": {
"type": "LoadBalancer",
"ports": [
{
"port": 80
}
],
"selector": {
"app": "nginx"
}
}
},
{
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "my-nginx"
},
"spec": {
"replicas": 2,
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}
]
YAML 等效项是这样的
---
-
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
-
apiVersion: v1
kind: ReplicationController
metadata:
name: my-nginx
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80