Search code examples
kubernetesnginxkubernetes-helm

Extend helm upgrade cmd to add some field values


I'm installing ingress nginx using a modified yaml file

kubectl apply -f deploy.yaml

The yaml file is just the original deploy file but with added hostPorts for the deployment:

ports:
  - name: http
    containerPort: 80
    protocol: TCP
  - name: https
    containerPort: 443
    protocol: TCP
  - name: webhook
    containerPort: 8443
    protocol: TCP

become:

ports:
  - name: http
    containerPort: 80
    protocol: TCP
    hostPort: 80 #<-- added
  - name: https
    containerPort: 443
    protocol: TCP
    hostPort: 443 #<-- added
  - name: webhook
    containerPort: 8443
    protocol: TCP
    hostPort: 8443 #<-- added

So this is working for me. But I would like to install ingress nginx using helm:

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace

Is it possible to add the hostPort values using helm (-f values.yml)? I need to add hostPort in Deployment.spec.template.containers.ports, but I have two problems to write the correct values.yml file:

values.yml

# How to access the deployment?
spec:
  template:
    containers:
      ports: # How to add field with existing containerPort value of each element in the array?

Solution

  • Two ways to find out:

    1. You can take a closer look at the helm chart itself https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx

      Here you can find deployment spec https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/templates/controller-deployment.yaml

      And under it, you can see, there's condition that enables hostPort https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/templates/controller-deployment.yaml#L113

    2. (Proper one) Always dig through values.yaml https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L90

      and chart documentation https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/README.md#:~:text=controller.hostPort.enabled