Kubernetes Add-ons
The following general Kubernetes add-ons should be added:
ExternalDNS
ExternalDNS is a Kubernetes add-on that configures public DNS servers with information about exposed Kubernetes services to make them discoverable.
To install ExternalDNS, follow these steps:
Add bitnami repository to the helm repository:
helm repo add bitnami https://charts.bitnami.com/bitnami
Update helm repository to get the latest software:
helm repo update
Create a file called
external-dns-values.yaml
and populate it with the following helm values:gcp: zoneType: public domainFilters: - <gke_domain_dns_name from terraform output> policy: sync provider: google txtOwnerId: <gke_domain_zone_name from terraform output> serviceAccount: annotations: iam.gke.io/gcp-service-account: <external_dns_service_account from terraform output>
Install the ExternalDNS helm chart:
helm install external-dns bitnami/external-dns -n <namespace> \ --version <helm chart version> -f external-dns-values.yaml
Where
<helm chart version>
is a compatible version listed in the Compatibility Matrix.
Ingress NGINX Controller
This is an optional add-on. Refer to the Introduction - GCP chapter for additional information.
The Ingress NGINX Controller is an ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer.
To install Ingress NGINX Controller, follow these steps:
Add ingress-nginx repository to the helm repository:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Update helm repository to get the latest software:
helm repo update
Create a file called
ingress-nginx-values.yaml
and populate it with the following helm values:controller: scope: enabled: true admissionWebhooks: enabled: false metrics: enabled: false serviceMonitor: enabled: false ingressClassResource: name: nginx enabled: true default: false controllerValue: "k8s.io/ingress-nginx" watchIngressWithoutClass: false service: annotations: cloud.google.com/backend-config: '{"default": "nginx-controller-healthcheck-config"}' cloud.google.com/app-protocols: '{"http":"HTTP", "https":"HTTPS"}' targetPorts: http: 80 https: 443 type: NodePort extraArgs: v: 1 serviceAccount: create: false
Install the
ingress-nginx-controller
helm chart:helm install ingress-nginx ingress-nginx/ingress-nginx --version <helm chart version> -f ingress-nginx-values.yaml -n <namespace>
Where
<helm chart version>
is a compatible version listed in the Compatibility Matrix.
If you are running multiple installations on the cluster, in case the Nginx IngressClass resource is already installed, then you should set the following helm value to avoid hitting a resource already exists error:
controller.ingressClassResource.enabled=false
Executing helm list
should show all add-ons added in this section:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION external-dns uepe 1 2024-02-06 14:06:28.705309 +0800 +08 deployed external-dns-6.31.5 0.14.0 ingress-nginx-controller uepe 1 2024-02-22 11:44:54.18561 +0800 +08 deployed ingress-nginx-4.9.1 1.9.6
This section is now complete. Now proceed to the Usage Engine Private Edition Preparations - GCP section.