Tenho um arquivo que leio usando yq e preciso usar a configuração em um modelo de kustomização como formato yaml. Então, a maneira como estou lendo a configuração de um arquivo é abaixo:
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"
}
]
Agora quero formatar isso como yaml para que eu possa substituí-lo em um modelo yaml conforme mostrado abaixo
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
Tenho que ter certeza de que $labels está formatado corretamente como formato yaml porque eu uso envsubst para substituir o bloco como está dentro do modelo como abaixo
meshConfig:
accessLogFile: /dev/stdout
discoverySelectors:
- matchLabels:
${MATCH_LABELS_BLOCK}
Estou usando yq para ler a configuração de rótulos de um arquivo config.yml como
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