De acuerdo con los documentos de Kubernetes K8s Docs a partir de v1.6 y posteriores, podemos usar:
envFrom: - configMapRef: name: <config-file>Para definir todos los datos de configMaps como variables de contenedor env. ¿Cuál es el caso de uso para usar esto en lugar de configurarlo como una variable env con el nombre y la clave?
env: # Define the environment variable - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: # The ConfigMap containing the value you want to assign to SPECIAL_LEVEL_KEY name: special-config # Specify the key associated with the value key: special.how¿Usaría el segundo ejemplo si tuviera varias variables en el archivo pero solo quisiera extraer un único par clave=valor? Estoy tratando de comprender diferentes casos de uso para escenarios que puedo encontrar en el examen CKAD.
He usado ambos y algunas de mis implementaciones usaron decenas de variables de entorno. Depende en gran medida de sus detalles y de la forma en que administre su configuración.
En general, si tiene mapas de configuración específicos para aplicaciones específicas donde su aplicación usa todas o la mayoría de las claves en los mapas de configuración, entonces envFrom es obviamente más fácil de usar y mantener. Cuando uno de sus compañeros de equipo necesita agregar un nuevo indicador de función, por ejemplo, simplemente agregarlo al mapa de configuración es suficiente para habilitarlo en todas sus implementaciones.
Por otro lado, si organiza sus mapas de configuración más por tema o si varias aplicaciones necesitan claves específicas del mismo mapa de configuración, entonces configMapKeyRef es mejor. Tomará solo las claves que necesita en su aplicación y se asegurará de que nada se sobrescriba accidentalmente. La desventaja es que su compañero de equipo, para agregar el mismo indicador de función, ahora tendrá que editar el mapa de configuración y las implementaciones.
Tenga en cuenta que ambas opciones no son exclusivas y probablemente terminará usando una combinación de ambas. Por ejemplo, algo como esto podría tener sentido:
envFrom: # This might contain environment-wide settings. Like the domain name that your application uses or a production only feature flag. - configMapRef: name: production-settings # Here you could store all the settings of this specific application. - configMapRef: name: my-app-settings env: # This might be a bucket shared by multiple applications. So you might want to keep it a different configmap and let each aplication pick the keys they need. - name: S3_BUCKET valueFrom: configMapKeyRef: name: s3-settings key: bucket