Skip to content

Quick Setup: Gateway Controller

Warning

Only follow this section if no existing Gateway Controller was found.

Choose one of the following options based on your environment:

Option A: NGINX Gateway Fabric

  1. Install Gateway API CRDs:

    kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v2.0.1" | kubectl apply -f -
    

  2. Deploy the NGINX Gateway Fabric Controller:

    helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway --version 2.0.1
    

  3. Verify all pods are running:

    kubectl get pods -n nginx-gateway
    

  4. Confirm the gateway class is available:

    kubectl get gatewayclasses
    
    You should see nginx in the output. Use nginx as your gatewayClassName.

Option B: Cloud-Native Gateway Controllers

Choose the appropriate controller for your cloud platform:

Refer to your cloud provider's documentation for installation steps.


(Optional) TLS Configuration Using cert-manager

Tip

Skip this section if you don't need HTTPS/TLS for QMigrator. You can add TLS later.

Install cert-manager

  1. Add the cert-manager Helm repository:

    helm repo add jetstack https://charts.jetstack.io --force-update
    

  2. Install cert-manager with Gateway API support:

    helm upgrade --install cert-manager jetstack/cert-manager \
        --namespace cert-manager \
        --set config.enableGatewayAPI=true \
        --set crds.enabled=true \
        --create-namespace
    

  3. Verify cert-manager pods are running:

    kubectl get pods -n cert-manager
    

Create a Certificate Issuer

Choose between ClusterIssuer (cluster-wide) or Issuer (namespace-specific):

cert-issuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt
    solvers:
      - http01:
          gatewayHTTPRoute:
            parentRefs:
              - name: qmig-gateway

Apply the configuration:

kubectl apply -f cert-issuer.yaml

Update the namespace ({{ Namespace }}):

cert-issuer.yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
  namespace: {{ Namespace }}
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt
    solvers:
      - http01:
          gatewayHTTPRoute:
            parentRefs:
              - name: qmig-gateway

Apply the configuration:

kubectl apply -f cert-issuer.yaml


References