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 53d4f24ea..059959cf7 100644 --- a/Makefile +++ b/Makefile @@ -157,6 +157,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 @@ -168,6 +174,7 @@ endif @curl -sfLO $(SHIPYARD_URL)/$@ ONLY_SHIPYARD_GOALS = true +SHIPYARD_GOALS = deploy-example-hello-world include Makefile.shipyard endif 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"