From c05cc45337e77e069f37eef0726d32c9df212bfc Mon Sep 17 00:00:00 2001 From: Mike Kolesnik Date: Wed, 13 Dec 2023 11:05:04 +0200 Subject: [PATCH] Example of deploying "hello world" with Shipyard This exemplifies how the deployment on top of shipyard would work. This would probably be best put in the example repo itself, but I drafted it to make it clear how using Shipyard looks like. Signed-off-by: Mike Kolesnik --- .example.hello-world.yml | 5 ++++ Makefile | 6 +++++ scripts/deploy-example-hello-world.sh | 37 +++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 .example.hello-world.yml create mode 100755 scripts/deploy-example-hello-world.sh diff --git a/.example.hello-world.yml b/.example.hello-world.yml new file mode 100644 index 000000000..08f49fe15 --- /dev/null +++ b/.example.hello-world.yml @@ -0,0 +1,5 @@ +--- +nodes: control-plane worker +clusters: + west: + east: diff --git a/Makefile b/Makefile index 76708476f..f5d3680a9 100644 --- a/Makefile +++ b/Makefile @@ -138,6 +138,12 @@ ifneq (,$(DAPPER_HOST_ARCH)) include $(SHIPYARD_DIR)/Makefile.clusters +deploy-example-hello-world: SETTINGS=.example.hello-world.yml +deploy-example-hello-world: build-cmd clusters + ./scripts/$@.sh + +.PHONY: deploy-example-hello-world + else # Not running in Shipyard's container diff --git a/scripts/deploy-example-hello-world.sh b/scripts/deploy-example-hello-world.sh new file mode 100755 index 000000000..dd6a0adbd --- /dev/null +++ b/scripts/deploy-example-hello-world.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +set -em + +source "${SCRIPTS_DIR}/lib/utils" +source "${SCRIPTS_DIR}/lib/debug_functions" + +print_env SETTINGS +declare_kubeconfig + +on_ctx() { + "$2" --context "$1" "${@:3}" +} + +# Create namespaces +on_ctx west kubectl create namespace west +kubectl config set-context west --namespace west +on_ctx east kubectl create namespace east +kubectl config set-context east --namespace east + +# Initialize and link +on_ctx west ./skupper init --enable-console --enable-flow-collector +on_ctx east ./skupper init +on_ctx west ./skupper token create ${DAPPER_OUTPUT}/secret.token +on_ctx east ./skupper link create ${DAPPER_OUTPUT}/secret.token + +# Deploy and expose services +on_ctx west kubectl create deployment frontend --image quay.io/skupper/hello-world-frontend +on_ctx west kubectl expose deployment/frontend --port 8080 --type LoadBalancer +on_ctx east kubectl create deployment backend --image quay.io/skupper/hello-world-backend --replicas 3 +on_ctx east ./skupper expose deployment/backend --port 8080 + +# Wait for service to become healthy +svc_ip=$(on_ctx west kubectl get service/frontend -o jsonpath={.status.loadBalancer.ingress[0].ip}) +with_retries 30 sleep_on_fail 5s curl "http://${svc_ip}:8080/api/health" + +echo "Success! You can access the web UI at http://${svc_ip}:8080"