Skip to content

Commit

Permalink
Example of deploying "hello world" with Shipyard
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
mkolesnik committed Mar 13, 2024
1 parent 029c867 commit 82cb059
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .example.hello-world.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
nodes: control-plane worker
clusters:
west:
east:
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -168,6 +174,7 @@ endif
@curl -sfLO $(SHIPYARD_URL)/$@

ONLY_SHIPYARD_GOALS = true
SHIPYARD_GOALS = deploy-example-hello-world
include Makefile.shipyard

endif
37 changes: 37 additions & 0 deletions scripts/deploy-example-hello-world.sh
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit 82cb059

Please sign in to comment.