Soy un principiante de helm y Kubernetes en general. Recientemente comencé a probar implementaciones en un clúster de AKS que incluirá varios servicios IP de clúster ocultos detrás de un nodo NGINX de equilibrio de carga. Hoy estoy usando Helm 2.2 y he instalado correctamente el nodo NGINX. Ahora entiendo que para cada uno de mis gráficos de servicio individuales en Helm, uso anotaciones para habilitar el enrutamiento de Nginx. Tal como lo veo, debería poder modificar el archivo values.yaml en la parte superior del gráfico (en ningún otro lugar) para realizar estas acciones.
service: type: ClusterIP port: 80 ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx hosts: - chart-example.local
Cuando ejecuto lo anterior (el resto del archivo se excluye por brevedad) recibo el error "convirtiendo YAML a JSON: yaml: línea 38: no se encontró la clave esperada".
La línea 38 corresponde al final de la sección de ingreso (la línea en blanco inmediatamente después). Supongo que mi yaml está mal formado, y por mi vida no puedo encontrar ningún ejemplo de este archivo que se use de esta manera. ¿Lo estoy haciendo bien? En caso afirmativo, ¿qué error he cometido en el archivo yaml. Si no, ¿qué debo hacer para enrutar a uno de mis muchos servicios a través del archivo de ingreso? ¿Hay algún ejemplo real del archivo de valores.yaml configurado en este modo para verlo en alguna parte? Cada vez que busco, encuentro que el archivo Ingress.yaml se modifica como un objeto de Kubernetes en lugar de como un gráfico de Helm con plantilla.
Resulta que con los valores.yaml no le di a la gente una oportunidad justa. La línea yaml ofensiva ocurrió después del fragmento de código que proporcioné y fue sutil. El código que fue necesario para garantizar que se proporcionó la definición de ingreso correcta es este:
ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx hosts: - host: chart-example.local paths: - /test tls: {}
Mi error fue la línea tls que vino después. No me había dado cuenta de que la sangría de la sección tls significaba que estaba incluida con la sección de ingreso y le faltaba un espacio .
_tls: {}
en vez de
__tls: {}
Mi ejemplo ahora representa la plantilla correctamente (los guiones bajos solo se incluyen para demostrar la cantidad de espacios y, por supuesto, deben eliminarse).