¿Cómo vincular el mapa de configuración a un archivo externo?

¿Cómo vincular el mapa de configuración a un archivo externo?

Con esto podemos crear un mapa de configuración vinculado a un archivo externo.

kubectl create configmap database-config --from-file=database.properties

Pero cuando editamos el yaml, mostrará que el contenido completo del archivo está volcado allí.

¿Hay alguna forma de señalar un archivo en yaml también para mantener el archivo de propiedades en la misma carpeta que el mapa de configuración yaml y aplicar la carpeta con todos los yamls?

kubectl apply -f target_folder\

Por favor recomiende.

Respuesta1

Qué configmapes

Un ConfigMap es un objeto API que se utiliza para almacenar datos no confidenciales en pares clave-valor. Los pods pueden consumir ConfigMaps como variables de entorno, argumentos de línea de comandos o como archivos de configuración en un volumen.

Un ConfigMap le permite desacoplar la configuración específica del entorno de las imágenes de su contenedor, para que sus aplicaciones sean fácilmente portátiles.

En otras palabras, cuando configmapse crea desde un archivo externo (como su caso) o desde otros valores, el servidor API validará si todo está correcto y luego lo guardará en etcd. Esto también explica las razones por las que cuando editves configmaptodo su contexto. Esto sucede porque configmapse lee desde etcd, no desde fuentes externas.

Esta es también una de las razones por las que no se recomienda guardar archivos grandes como mapas de configuración o secretos; afectará el rendimiento del clúster de Kubernetes, ya que todos los objetos del clúster se almacenan en etcd.

Personalizar

Esta es una de las formas de cumplir con su requisito de ejecutar un comando al crear/configurar configmapen función del archivo en el mismo directorio. Es una herramienta independiente para personalizar objetos de Kubernetes a través de un archivo de personalización.

Creé un ejemplo breve y simple para mostrar la idea:

$ tree
.
├── application.properties
└── kustomization.yaml
0 directories, 2 files

$ cat kustomization.yaml 
generatorOptions:
  disableNameSuffixHash: true # this flag is used to avoid creation of new configmap, instead it will be modified when file context is changed
configMapGenerator:
- name: application-config
  files:
  - application.properties

$ cat application.properties 
listen.url=localhost:9010
client.url=some_url:3000

Pruebe esto, este comandosolo renderizarconfigmap, no lo creará todavía:

$ kubectl kustomize application.settings/
apiVersion: v1
data:
  application.properties: |
    listen.url=localhost:9010
    client.url=some_url:3000
kind: ConfigMap
metadata:
  name: application-config

El último paso esaplicarél:

$ kubectl apply -k application.settings/
configmap/application-config created

$ kubectl get cm
NAME                 DATA   AGE
application-config   1      23s

Breve explicación del comando anterior:

Para aplicar esos recursos, ejecute kubectl apply con el indicador --kustomize o -k.

información relacionada