Soy nuevo en Kubernetes, pero he estado usando Docker y Docker Compose durante mucho tiempo. Estoy tratando de encontrar más información sobre cómo Kubernetes maneja los archivos de configuración compartidos/de solo lectura en comparación con Docker Compose.
En mi archivo docker-compose.yaml archivos de configuración específicos para mis contenedores usando montajes de enlace, similares a esto:
... elasticsearch: image: elasticsearch:7.3.2 environment: - discovery.type=single-node networks: mycoolapp: aliases: - elasticsearch ports: - "9200:9200" - "9300:9300" volumes: - elasticdata:/usr/share/elasticsearch/data - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ...He estado leyendo sobre Volúmenes Persistentes y creo que esto es lo que necesito, sin embargo, mi comprensión todavía no es 100% clara en algunos problemas.
azureFile para mi tipo de volumen y he copiado mis configuraciones en el recurso compartido de archivos. ¿Cómo monto una subcarpeta del recurso compartido de archivos en mi contenedor? mountPath solo aparece en volumeMounts , y no puedo encontrar dónde está la ubicación correspondiente dentro del volumen.El objeto Kubernetes ConfigMap será útil aquí.
Un ConfigMap es un objeto API que se utiliza para almacenar datos no confidenciales en pares clave-valor.
Ejemplo:
apiVersion: v1 kind: ConfigMap metadata: name: elastic-demo data: # property-like keys; each key maps to a simple value; available as env var properties_file_name: "database.properties" # file-like keys database.properties: | data1=value1 data2=value2Puede montar el ConfigMap anterior en volumen en modo de solo lectura.
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mypod image: elasticsearch volumeMounts: - name: elastic-volume mountPath: "/etc/foo" readOnly: true volumes: - name: elastic-volume configMap: name: elastic-demoComo @Pulak lo dijo correctamente, puede usar configmap. Vi que desea importar una carpeta que contiene cientos de archivos en un mapa de configuración. Lo que creo es que puedes hacer esto de otra manera. Eso es usar el archivo zip/jar como archivo binario de soporte de ConfigMap, por lo que después de montarlo se puede descomprimir en la ruta deseada dentro del contenedor.
Por ejemplo, tiene la siguiente estructura en la carpeta:
. ├── test1.html ├── test2.css ├── test3.xml └── testN.html Ahora puede hacerlos jar/zip y puede crear un mapa de configuración con kubectl create configmap example --from-file=./
Otra cosa es que el tamaño del mapa de configuración (en términos de MiB) no debe ser grande. Entonces, si realmente tiene muchas cosas, puede usar los volúmenes típicos de Kubernetes.