Как передать параметр в Kubernetes/Crossplane yaml, используя файл свойств
У меня есть yaml ниже, мне нужно установить метаданные.имя, complexIdRef.name, displayName, установленные через файл конфигурации.
Точно так же у нас есть config.properties в Java или TF_VAR_name в terraform.
apiVersion: core.oci.upbound.io/v1alpha1
kind: Vcn
metadata:
name: vcn-via-crossplane
spec:
forProvider:
compartmentIdRef:
name : compartment-via-crossplane
displayName: vcn-via-crossplane
cidrBlocks: ["x.x.x.x/x"]
Как мы могли бы повторить то же самое в кросс-плоскости? Любое предложение будет оценено по достоинству.
1 ответ
Это можно сделать с помощью карты конфигурации Kubernetes или секретов, но для этого вам нужно добавить дополнительную карту ключей внутри файла yaml.
Если вы используете сценарий оболочки, вы также можете использовать yq, простой инструмент CI, это легкий и портативный процессор командной строки YAML, JSON и XML. yq использует синтаксис, подобный jq, но работает с файлами yaml, а также с json, xml, свойствами, csv и tsv.
https://github.com/mikefarah/yq
Установите в MacOS, например:
brew install yq
Источник: https://formulae.brew.sh/formula/yq
Примечание: вы также можете установить yq в Linux и других ОС.
Ссылаясь на рассматриваемый YAML, создайте файл свойств с необходимыми свойствами, как показано ниже:
metadata.name=crossplane-metadata1
spec.forProvider.compartmentIdRef.name=compartment-name1
Предположим, что имя файла свойств — file.yaml.
Теперь пример кода для внесения изменений в YAML с использованием файла свойств с использованием yq и сценария оболочки:
FILE_DIR=$WORKSPACE/file.yaml
yq e -i '. *= load_props("'$FILE_PATH'/file.properties")' $FILE_DIR
echo "====== REPLACED file.yaml file content w.r.t to file.properties file ===="
yq $FILE_DIR
Источник: https://mikefarah.gitbook.io/yq/usage/properties .