From 2fd9b062df072eae367d0d2161b6a107510129d0 Mon Sep 17 00:00:00 2001 From: Lai Jiang Date: Wed, 14 Aug 2024 10:32:39 -0400 Subject: [PATCH] Make Nomulus work on GKE with external load balancer (#2527) This will create a multi-cluster external load balancer exposing HTTP traffic to nomulus running in clusters in the fleet. --- jetty/deploy-nomulus-for-env.sh | 12 ++++++++---- jetty/kubernetes/nomulus-gateway.yaml | 15 +++++++++++++++ jetty/kubernetes/nomulus-service.yaml | 10 +++++----- .../main/jetty-base/webapps/healthz/index.html | 5 +++++ 4 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 jetty/src/main/jetty-base/webapps/healthz/index.html diff --git a/jetty/deploy-nomulus-for-env.sh b/jetty/deploy-nomulus-for-env.sh index 7c3c0de65..ad3b3a48b 100755 --- a/jetty/deploy-nomulus-for-env.sh +++ b/jetty/deploy-nomulus-for-env.sh @@ -31,12 +31,16 @@ do echo "Updating cluster ${parts[0]} in location ${parts[1]}..." gcloud container clusters get-credentials "${parts[0]}" \ --project "${project}" --location "${parts[1]}" - sed s/GCP_PROJECT/${project}/g "./kubernetes/nomulus-deployment.yaml" | \ - sed s/ENVIRONMENT/${environment}/g | \ + sed s/GCP_PROJECT/"${project}"/g "./kubernetes/nomulus-deployment.yaml" | \ + sed s/ENVIRONMENT/"${environment}"/g | \ kubectl apply -f - kubectl apply -f "./kubernetes/nomulus-service.yaml" - #kubectl apply -f "./kubernetes/nomulus-gateway.yaml" # Kills all running pods, new pods created will be pulling the new image. kubectl delete pods --all -done < <(gcloud container clusters list --project ${project} | grep nomulus) + # The multi-cluster gateway is only deployed to one cluster (the one in the US). + if [[ "${parts[1]}" == us-* ]] + then + kubectl apply -f "./kubernetes/nomulus-gateway.yaml" + fi +done < <(gcloud container clusters list --project "${project}" | grep nomulus) kubectl config use-context "$current_context" diff --git a/jetty/kubernetes/nomulus-gateway.yaml b/jetty/kubernetes/nomulus-gateway.yaml index 43de71b79..d593cbb0a 100644 --- a/jetty/kubernetes/nomulus-gateway.yaml +++ b/jetty/kubernetes/nomulus-gateway.yaml @@ -28,4 +28,19 @@ spec: kind: ServiceImport name: nomulus port: 80 +--- +apiVersion: networking.gke.io/v1 +kind: HealthCheckPolicy +metadata: + name: nomulus +spec: + default: + config: + type: HTTP + httpHealthCheck: + requestPath: /healthz/ + targetRef: + group: net.gke.io + kind: ServiceImport + name: nomulus diff --git a/jetty/kubernetes/nomulus-service.yaml b/jetty/kubernetes/nomulus-service.yaml index 0a0d02687..d9860b66f 100644 --- a/jetty/kubernetes/nomulus-service.yaml +++ b/jetty/kubernetes/nomulus-service.yaml @@ -15,8 +15,8 @@ spec: - port: 700 targetPort: epp name: epp -#--- -#kind: ServiceExport -#apiVersion: net.gke.io/v1 -#metadata: -# name: nomulus +--- +kind: ServiceExport +apiVersion: net.gke.io/v1 +metadata: + name: nomulus diff --git a/jetty/src/main/jetty-base/webapps/healthz/index.html b/jetty/src/main/jetty-base/webapps/healthz/index.html new file mode 100644 index 000000000..c8855196c --- /dev/null +++ b/jetty/src/main/jetty-base/webapps/healthz/index.html @@ -0,0 +1,5 @@ + + +Health Check +Health check successful. +