add Gateway API Deployment Options in DC Helm Charts

XMLWordPrintable

    • Type: Suggestion
    • Resolution: Unresolved
    • None
    • Affects Version/s: None
    • None

      Regarding the nginx retirement announcement..

      https://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/

      ..soon, it seems we'll want to deploy using a gateway controller instead of ingress. Although we can mention other ingress types (that aren't being retired) in the documentation, I think eventually we won't want our DC helm chart to use an ingress. 

      For reference, I got Confluence partially working after installing the Istio controller and using that instead of nginx:

      1. Install the Istio controller:
        curl -L https://istio.io/downloadIstio | sh -
        cd istio-*
        export PATH=$PWD/bin:$PATH
        istioctl install --set profile=demo -y 
      2. Install gateway api CRDs:
        kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml 
      3. Deploy Confluence using the DC helm chart without any ingress-related options set.
      4. Apply a Gateway and HTTPRoute:
        apiVersion: gateway.networking.k8s.io/v1
        kind: Gateway
        metadata:
          name: confluence-gateway
          namespace: atlassian
        spec:
          gatewayClassName: istio
          listeners:
            - name: https
              protocol: HTTPS
              port: 443
              tls:
                mode: Terminate
                certificateRefs:
                  - kind: Secret
                    name: confluence-tls
        ---
        apiVersion: gateway.networking.k8s.io/v1
        kind: HTTPRoute
        metadata:
          name: confluence-route
          namespace: atlassian
        spec:
          parentRefs:
            - name: confluence-gateway
          hostnames:
            - host.docker.internal
          rules:
            - matches:
                - path:
                    type: PathPrefix
                    value: /confluence
              backendRefs:
                - name: confluencelocalmsb
                  port: 80
            - matches:
                - path:
                    type: PathPrefix
                    value: /synchrony
              backendRefs:
                - name: confluencelocalmsb-synchrony
                  port: 80 
        
      5. If you find that the EXTERNAL-IP of the gateway service is stuck in <pending> state, delete and re-apply the yaml to fix this:
        jmulcahey@HD6N59CQJP msb % kubectl get all
        NAME                                           READY   STATUS    RESTARTS   AGE
        pod/confluence-gateway-istio-cfcd4fdb6-wnpff   1/1     Running   0          23m
        pod/confluencelocalmsb-0                       1/1     Running   0          23m
        pod/confluencelocalmsb-synchrony-0             1/1     Running   0          23m
        pod/postgres-postgresql-0                      1/1     Running   0          24m
        
        NAME                                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
        service/confluence-gateway-istio       LoadBalancer   10.106.102.184   <pending>     15021:32223/TCP,443:30938/TCP   23m
        service/confluencelocalmsb             ClusterIP      10.108.95.215    <none>        80/TCP,5701/TCP                 23m
        service/confluencelocalmsb-synchrony   ClusterIP      10.109.226.100   <none>        80/TCP,5701/TCP                 44m
        service/postgres-postgresql            ClusterIP      10.97.182.122    <none>        5432/TCP                        24m
        service/postgres-postgresql-hl         ClusterIP      None             <none>        5432/TCP                        24m
        
        NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
        deployment.apps/confluence-gateway-istio   1/1     1            1           23m
        
        NAME                                                 DESIRED   CURRENT   READY   AGE
        replicaset.apps/confluence-gateway-istio-cfcd4fdb6   1         1         1       23m
        
        NAME                                            READY   AGE
        statefulset.apps/confluencelocalmsb             1/1     23m
        statefulset.apps/confluencelocalmsb-synchrony   1/1     23m
        statefulset.apps/postgres-postgresql            1/1     24m
        
        jmulcahey@HD6N59CQJP msb % kubectl delete -f ~/kubernetes/gatewayapi.yaml
        gateway.gateway.networking.k8s.io "confluence-gateway" deleted
        httproute.gateway.networking.k8s.io "confluence-route" deleted
        
        jmulcahey@HD6N59CQJP msb % kubectl apply -f ~/kubernetes/gatewayapi.yaml
        gateway.gateway.networking.k8s.io/confluence-gateway created
        httproute.gateway.networking.k8s.io/confluence-route created
        

      Then I'm able to reach the Confluence frontend at https://host.docker.internal/confluence. I just didn't configure synchrony correctly, as collaborative editing isn't working yet.

            Assignee:
            Unassigned
            Reporter:
            Jim Mulcahey
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: