Configure the Ingress
The Ingresses should be managed outside of the Helm chart in a dedicated yaml file. In this example, there is one Ingress per HAProxy to expose (application + administration plane):
--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '8001' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 8001}]' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-admin namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 8001 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '8000' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 8000}]' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-console namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 8000 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '8002' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 8002}]' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-manage namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 8002 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '81' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 81}]' alb.ingress.kubernetes.io/ssl-redirect: '81' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-console-0 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 81 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '82' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 82}]' alb.ingress.kubernetes.io/ssl-redirect: '82' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-admin-0 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 82 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '83' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 83}]' alb.ingress.kubernetes.io/ssl-redirect: '83' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-manage-0 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 83 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '84' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 84}]' alb.ingress.kubernetes.io/ssl-redirect: '84' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-console-1 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 84 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '85' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 85}]' alb.ingress.kubernetes.io/ssl-redirect: '85' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-admin-1 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 85 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '86' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 86}]' alb.ingress.kubernetes.io/ssl-redirect: '86' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-manage-1 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 86 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '87' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 87}]' alb.ingress.kubernetes.io/ssl-redirect: '87' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-console-2 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 87 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '88' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 88}]' alb.ingress.kubernetes.io/ssl-redirect: '88' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-admin-2 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 88 path: / pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/healthcheck-port: '89' alb.ingress.kubernetes.io/healthcheck-path: / alb.ingress.kubernetes.io/success-codes: '200-401' alb.ingress.kubernetes.io/load-balancer-name: ml alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 89}]' alb.ingress.kubernetes.io/ssl-redirect: '89' alb.ingress.kubernetes.io/target-group-attributes: load_balancing.algorithm.type=least_outstanding_requests alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:XXXXXXXXXXXX:certificate/XxXXXXX-XXxxxXXX-XXxx-XXXxxx alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/group.name: ml-group labels: app.kubernetes.io/instance: marklogic app.kubernetes.io/name: ml name: ml-cluster-haproxy-manage-2 namespace: ml spec: ingressClassName: alb rules: - http: paths: - backend: service: name: ml-cluster-haproxy port: number: 89 path: / pathType: Prefix
Note
The ALB Ingress Controller is managing the Ingresses. All Ingresses can point to the same hostname becasue port routing is used.
It is recommended to set path as / to avoid problems when using mlcp.