Digamos que tenemos varios archivos de configuración de Kubernetes en una carpeta kubernetes y queremos aplicarlos todos:
kubectl apply -f kubernetes -n MyNamespaceAlgunos de estos archivos contienen variables de entorno que deben sustituirse primero (sin plantillas en Kubernetes). Por ejemplo, varios de los yaml de implementación contienen algo como:
image: myregistry.com/myrepo:$TAGPara un solo archivo yaml, esto se puede hacer , por ejemplo, usando envsubst como este:
envsubst < deploy.yml | kubectl apply -f -¿Cuál es la mejor manera de hacer estas sustituciones para todos los archivos yaml?
(Recorrer los archivos en la carpeta y llamar a envsubst como se indica arriba es una opción, pero sospecho que sería preferible pasar la carpeta completa a kubectl y no archivos individuales)
Puede dejar que envsubst lea el contenido de varios archivos desde la entrada estándar como si estuviera leyendo un archivo < deploy.yaml usando la función de sustitución de proceso <(..) de bash o usando cat simple
envsubst < <(cat *.yaml) | kubectl apply -f -o
cat *.yaml | envsubst - | kubectl apply -f -Esto funciona:
for f in *.yaml; do envsubst < $f | kubectl apply -f -; done