Skip to content

Cuestionario sobre el gestor de paquetes Helm ​

Guía relacionada: Helm

Estos 20 temas de preguntas siguen la revisión de Helm 3.21.3 / 4.3.0.

Opción múltiple ​

1. ¿Qué cambió al eliminar Tiller? ​

  • A) Solo cambia el tamaño del chart.
  • B) El cliente utiliza sus credenciales de Kubernetes y RBAC.
  • C) Todos los charts se vuelven seguros.
  • D) La API de Kubernetes ya no es necesaria.
Mostrar respuesta

Respuesta: B

Helm 3 eliminó Tiller y simplificó la ruta de permisos. Los manifests no seguros y los permisos amplios del cliente aún requieren revisión.

2. ¿Para qué sirve values.yaml? ​

  • A) Metadatos del chart
  • B) Datos de configuración predeterminados consumidos por los templates
  • C) Historial de releases
  • D) Un template ejecutado automáticamente
Mostrar respuesta

Respuesta: B

Solo los values consumidos por los templates tienen efecto. Los archivos y las variantes de --set pueden sobrescribirlos; las cadenas de template incorporadas no se evalúan automáticamente.

3. ¿Qué hace helm upgrade --install? ​

  • A) Siempre crea un release nuevo
  • B) Siempre elimina y vuelve a crear
  • C) Instala un release ausente o actualiza uno existente
  • D) Garantiza la idempotencia de las operaciones externas
Mostrar respuesta

Respuesta: C

Selecciona la instalación o la actualización. Los hooks, los values aleatorios y los cambios en bases de datos externas no tienen por qué ser idempotentes.

4. ¿Qué es Release.Name? ​

  • A) Nombre del chart
  • B) Nombre del clúster
  • C) El nombre de release elegido
  • D) Tag de imagen
Mostrar respuesta

Respuesta: C

En helm install demo ./chart, el nombre es demo. Es diferente del nombre del chart, appVersion y la revisión del release.

5. ¿Qué especifica una condición de dependencia? ​

  • A) Tag de imagen
  • B) Una ruta de values que controla si la dependencia está habilitada
  • C) Contraseña del registry
  • D) Prioridad de Pod
Mostrar respuesta

Respuesta: B

Para el alias cache, use una ruta Booleana real como cache.enabled. Pruebe el comportamiento de las rutas ausentes y distíngalo de los values pasados al subchart.

6. ¿Cuándo se ejecuta un hook pre-upgrade? ​

  • A) Después de la eliminación
  • B) Después del renderizado y antes de actualizar los recursos ordinarios
  • C) Siempre después de que los Pods nuevos estén Ready
  • D) Solo después del rollback
Mostrar respuesta

Respuesta: B

Una migración de base de datos debe tener en cuenta la disponibilidad de la base de datos, los reintentos, los fallos y la compatibilidad con la app anterior. El rollback no deshace automáticamente los cambios en la base de datos.

7. ¿Cuál es el propósito de helm template ordinario? ​

  • A) Instalar en un clúster
  • B) Renderizar manifests localmente
  • C) Validar webhooks reales
  • D) Realizar rollback automáticamente
Mostrar respuesta

Respuesta: B

El renderizado local predeterminado no prueba la admisión, RBAC, la ejecución de imágenes ni la conectividad. Distíngalo de las opciones que contactan con un servidor.

8. ¿Para qué sirve _helpers.tpl? ​

  • A) Almacenar metadatos
  • B) Definir templates nombrados reutilizables
  • C) Almacenar values predeterminados
  • D) Almacenar el historial de releases
Mostrar respuesta

Respuesta: B

Use define para los templates nombrados e include para consumirlos. Añada prefijos a los nombres para evitar colisiones y pase el contexto previsto.

9. ¿Qué genera helm get values demo --all? ​

  • A) Solo las anulaciones del usuario
  • B) Values calculados, incluidos los valores predeterminados del chart
  • C) Solo manifests
  • D) Solo historial
Mostrar respuesta

Respuesta: B

Seleccione el namespace y el release correctos. Los values pueden contener información confidencial, por lo que debe proteger la salida.

10. ¿Por qué combinar toYaml con nindent? ​

  • A) Cifrado automático
  • B) Serializar values estructurados a YAML y añadir una nueva línea/sangría
  • C) Generar solo JSON
  • D) Convertir siempre los números en cadenas
Mostrar respuesta

Respuesta: B

A diferencia de indent, nindent también antepone una nueva línea. Haga coincidir la sangría requerida en el punto de inserción.

Respuesta corta ​

1. ¿Cuál es el recurso de almacenamiento predeterminado de los releases? ​

Mostrar respuesta

Un Secret en el namespace del release, llamado sh.helm.release.v1.<release>.v<revision>. Se pueden configurar otros backends, como ConfigMap o SQL. Base64 no es cifrado.

2. ¿Qué archivo de bloqueo crea dependency update y cuáles son sus límites? ​

Mostrar respuesta

Chart.lock. dependency build utiliza sus versiones bloqueadas, pero el bloqueo por sí solo no garantiza la integridad de los artefactos, imágenes fijadas ni reproducibilidad completa.

3. ¿Qué values vacíos importan al usar default? ​

Mostrar respuesta

False, cero, las cadenas vacías y las colecciones cuentan como vacíos. Compruebe la presencia y el tipo cuando sea necesario conservar false/cero explícitos. default no protege todas las búsquedas anidadas.

4. ¿Qué annotation controla el orden de los hooks? ​

Mostrar respuesta

helm.sh/hook-weight. Los pesos inferiores se ejecutan primero dentro de la fase, incluidos los pesos negativos. Considere también el orden de desempate por kind/name, la finalización de Job y los timeouts.

5. ¿Cuándo y por qué se utiliza NOTES.txt? ​

Mostrar respuesta

Genera instrucciones mostradas después de una instalación/actualización correcta y disponibles mediante helm get notes. Mantenga las instrucciones precisas y evite los secretos. Las notas no demuestran la preparación de la aplicación.

Práctico ​

1. Instale el ejemplo como web-server en frontend con tres réplicas. ​

Mostrar respuesta
bash
helm install web-server examples/platform/helm/reviewed-app \
  --namespace frontend --create-namespace \
  --set replicaCount=3

Ejecute desde la raíz del repositorio con un contexto de clúster y permisos aprobados. Esta auditoría ejecutó lint/template/package, no la instalación.

2. ¿Cómo deberían renderizarse LOG_LEVEL=debug y MAX_CONNECTIONS="100" como env? ​

Mostrar respuesta
yaml
env:
  - name: LOG_LEVEL
    value: "debug"
  - name: MAX_CONNECTIONS
    value: "100"

Itere sobre el map y entrecomille cada valor para que ambos sigan siendo cadenas. Los templates de Go recorren los maps con claves ordenadas básicas en orden de clave; esto es distinto del orden de las listas.

3. Escriba un helper para las etiquetas de chart, release y appVersion. ​

Mostrar respuesta
text
{{- define "mychart.labels" -}}
app.kubernetes.io/name: {{ .Chart.Name | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}

Pase el contexto raíz previsto y aplique sangría en el sitio de llamada. appVersion es metadato y no selecciona automáticamente un tag de imagen.

Avanzado ​

1. ¿Qué se necesita para la entrega Blue/Green y canary con Helm? ​

Mostrar respuesta

Blue/Green requiere dos Deployments con etiquetas y un template de Service real que seleccione el color activo después de la validación. Las cadenas de template dentro de values.yaml no se evalúan automáticamente. Canary requiere rutas/subconjuntos reales o un controlador de rollout, pesos, métricas de observación y condiciones de cancelación. Los values por sí solos no crean análisis ni rollback automatizados. Tenga en cuenta la compatibilidad de la base de datos y las solicitudes en curso.

2. Diseñe la seguridad del chart y la gestión de secretos. ​

Mostrar respuesta

Valide los values y tipos requeridos con un values.schema.json compatible, y fije las revisiones de chart/imagen revisadas. Conecte los ServiceAccounts y RoleBindings requeridos con permisos mínimos de API. Un volumen Secret no justifica conceder a la app acceso a todos los Secrets. Mantenga los valores secretos fuera de los valores predeterminados, los argumentos de CLI y los logs de depuración; planifique los montajes de archivos aprobados, la rotación y la relectura. ESO v1, Sealed Secrets y helm-secrets requieren sus controladores/plugins y permisos de proveedor/clave. Compruebe si los valores descifrados entran en los registros de releases. Combine un UID no root, capacidades eliminadas, una raíz de solo lectura y los volúmenes de escritura requeridos, y luego verifique la compatibilidad real de la imagen.

Pregunta a la documentación

Enter envía, Shift+Enter añade una línea.