Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

392
Views
¿Cómo usar la etiqueta de imagen dinámica/variable en una implementación de Kubernetes?

En nuestro proyecto, que también usa Kustomize, nuestro archivo deployment.yaml base se ve así:

 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:IMAGE_TAG # <------------------------------ ports: - containerPort: 80

Luego usamos sed para reemplazar IMAGE_TAG con la versión de la imagen que queremos implementar.

¿Hay una forma más sofisticada de hacer esto, en lugar de editar el archivo de texto yaml usando sed ?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Hay un transformador específico para esto llamado transformador de imágenes . Puede mantener su implementación tal como está, con o sin etiqueta:

 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80

y luego en su archivo de personalización:

 apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - deployment.yaml images: - name: nginx newTag: MYNEWTAG

Tenga en cuenta que esto reemplazará la etiqueta de todas las imágenes nginx de todos los recursos incluidos en su archivo de personalización. Si necesita ejecutar varias versiones de nginx, puede reemplazar el nombre de la imagen en su implementación por un marcador de posición y tener diferentes entradas en el transformador.

over 4 years ago · Santiago Trujillo Report

0

Es posible usar una etiqueta de imagen de una variable de entorno , sin tener que editar archivos para cada etiqueta diferente. Esto es útil si su etiqueta de imagen necesita variar sin cambiar los archivos controlados por versión.

kubectl estándar es suficiente para este propósito. En resumen, utilice un configMapGenerator con datos de variables de entorno. Luego agregue replacements que hagan referencia a estos datos de ConfigMap para reemplazar las etiquetas de imágenes relevantes.

Ejemplo

Continuando con su ejemplo deployment.yaml , podría tener un archivo kustomization.yaml en la misma carpeta que se ve así:

 apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization # Generate a ConfigMap based on the environment variables in the file `.env`. configMapGenerator: - name: my-config-map envs: - .env replacements: - source: # Replace any matches by the value of environment variable `MY_IMAGE_TAG`. kind: ConfigMap name: my-config-map fieldPath: data.MY_IMAGE_TAG targets: - select: # In each Deployment resource … kind: Deployment fieldPaths: # … match the image of container `nginx` … - spec.template.spec.containers.[name=nginx].image options: # … but replace only the second part (image tag) when split by ":". delimiter: ":" index: 1 resources: - deployment.yaml

En la misma carpeta, necesita un archivo .env con el nombre de la variable de entorno (nota: solo el nombre, sin valor asignado):

 MY_IMAGE_TAG

Ahora MY_IMAGE_TAG del entorno local se integra como etiqueta de imagen cuando se ejecuta kubectl kustomize , kubectl apply --kustomize , etc.

Manifestación:

 MY_IMAGE_TAG=foobar kubectl kustomize .

Esto imprime la etiqueta de imagen generada, que es foobar como se desee:

 # … spec: # … template: # … spec: containers: - image: nginx:foobar name: nginx ports: - containerPort: 80

Alternativas

Tenga en cuenta lo siguiente de la documentación de configMapGenerator :

Nota: Se recomienda utilizar la funcionalidad de población de variables de entorno local con moderación; una superposición con un parche suele ser más fácil de mantener. Establecer valores del entorno puede ser útil cuando no se pueden predecir fácilmente, como un SHA de git.

Si simplemente desea compartir una etiqueta de imagen fija entre varios archivos, consulte el transformador de images ya sugerido .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!