我有一个使用 yq 读取的文件,并且必须使用 kustomization 模板中的 yaml 格式的配置。因此,我从文件读取配置的方式如下:
istio_ns_scoping_labels=$(yq -r '.cluster.config.istio_ns_scoping_labels' "$config_file" 2>/dev/null)
echo "$istio_ns_scoping_labels"
#istio_ns_scoping_labels
[
{
"istio-discovery": "enabled"
},
{
"kubernetes.io/metadata.name": "keycloak-idc-identity-broker"
},
{
"kubernetes.io/metadata.name": "keycloak-idc-identity-broker-2"
},
{
"kubernetes.io/metadata.name": "keycloak-idc-identity-broke-3"
}
]
现在我想将其格式化为 yaml,以便可以将其替换为 yaml 模板,如下所示
discoverySelectors:
- matchLabels:
istio-discovery: enabled
- matchLabels:
kubernetes.io/metadata.name: keycloak-idc-identity-broker
- matchLabels:
kubernetes.io/metadata.name: keycloak-idc-identity-broker-2
- matchLabels:
kubernetes.io/metadata.name: keycloak-idc-identity-broker-3
我必须确保 $labels 格式正确为 yaml 格式,因为我使用 envsubst 来替换模板内部的块,如下所示
meshConfig:
accessLogFile: /dev/stdout
discoverySelectors:
- matchLabels:
${MATCH_LABELS_BLOCK}
我正在使用 yq 从 config.yml 文件中读取标签配置,如下所示
config_file=cluster.yml
istio_ns_scoping_labels=$(yq -r '.cluster.config.istio_ns_scoping_labels' "$config_file" 2>/dev/null)
#cluster.yml
cluster:
config:
istio_ns_scoping_labels:
istio-discovery: enabled
kubernetes.io/metadata.name: keycloak-idc-identity-broker
鉴于 yq 的 jq-wrapper 版本(您正在使用的版本),
...正确发出包含以下内容的输出: