Tidy up before demo.

This commit is contained in:
2023-02-22 09:33:02 +13:00
parent 03894ddafc
commit 151972d8d0
3 changed files with 50 additions and 51 deletions

View File

@ -0,0 +1 @@
*.token

View File

@ -1,14 +0,0 @@
apiVersion: v1
data:
ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMRENDQWhTZ0F3SUJBZ0lRU1Q3UXlDNjBDaTcxSTBZYmlPWU1QREFOQmdrcWhraUc5dzBCQVFzRkFEQWEKTVJnd0ZnWURWUVFERXc5emEzVndjR1Z5TFhOcGRHVXRZMkV3SGhjTk1qTXdNakl4TURnME9UQTJXaGNOTWpndwpNakl3TURnME9UQTJXakFhTVJnd0ZnWURWUVFERXc5emEzVndjR1Z5TFhOcGRHVXRZMkV3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNsZDVIdXNmY1VVRkQwV3ROS3BIU0dnRmk1T2dkdSt1em8KMHQwQllRcnBHYVJHVlhUenZLR1RMVmVBbnZGWTJ0QjJEQkoyd2xEVFNjL1Q3YUFDaFhXTnhIcEdyU1c3TmZ6dwpLenNPWnNLa1k1TEtHbC9NTGhlRWU2UnZoUnlYTXBGRXAxQUpuQlRvWmhwYUJncmFWdlZOUGxBK3krNjRrQ0tiCmhjQXZQdjd3OTFHTE8zZ0ZlbWlpbWdxOGw2alRKOGJiMlVGVG1EZUczUkZOd01VL2pPOGN6WGRnMXNNbE5TM2sKSDRHQmFTcVVCTTN4TkRqcTRDaWozcHRBRFhNbGhpalNxSldlSEF1SnBSakRoM1E1eWlRb0c0QjJxZ0Y5dUVqQQpaQzJiNFRuQVBwWG5SYnc5ZnVzTVNjc2Flb0hvTzgwODJQTmR2VUJqUGFzYzE0dk9zRDZwQWdNQkFBR2piakJzCk1BNEdBMVVkRHdFQi93UUVBd0lDcERBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFVSEF3SXcKRHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVNkwyTmhBVktNOWY0WDZOOFNNbkExTTlFazJFdwpDd1lEVlIwUkJBUXdBb0lBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUUJhZ0g1bDkwVjNFam51Z3JrNWIwCldiVmRReFNMSVZ5WDBPcStYRVNvL0RGOElFUlFBdEVHMytqRS9uZlFLM1lVZk1PTzBNUllVN1p4RjNPeVVURVYKRVZ0UCtNL3B5UjZHVnFmYlVvSTYrcTFqMEloUHdEYnVROVl1cGdIU1Vkb2k3dUVyMmFoK2tyWU8zT1RhVDNjSgpyUG5DRndwTTBDcGhwRW5mRjhRcGdDVDI2TURzYzNBYjRFUnpRUVFubFpSanAvTVV6REZqVEtOVklnTUhEOWNtCjlUOFIvTlhpQ2kzT2xJTlZuN05wVkNnSUw5ZXVLTGpKb1o1NFVvZklnWVlKQWpYUGx5Ym9EcDRtZ2l0STNzNUsKaU1mcHYxR3dMVXlyODRnVzM1THFGeHh5aE00Qmw5M2ZkTndzSGliSWYrY2NSNDE0UDhxUm9teEJQdFNLYU9aZQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
password: SDJrMFdDamU4Z1JuZVoyaE5ySlV0ZTg2
kind: Secret
metadata:
annotations:
skupper.io/generated-by: 154bd5bc-6d1c-4f38-8805-d30c848fb948
skupper.io/site-version: 1.2.3
skupper.io/url: https://claims-demo-public.apps.rosa-mgmwm.c4s2.p1.openshiftapps.com:443/be666c93-b1c9-11ed-83a2-f44637808126
creationTimestamp: null
labels:
skupper.io/type: token-claim
name: be666c93-b1c9-11ed-83a2-f44637808126

View File

@ -33,28 +33,23 @@ Before we get into deploying skupper lets get familiar with our demo workload wh
#+NAME: Deploy demo workload on premises #+NAME: Deploy demo workload on premises
#+begin_src tmate :socket /tmp/james.tmate.tmate #+begin_src tmate :socket /tmp/james.tmate.tmate
# Set kubeconfig clear && export KUBECONFIG=$HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
# Ensure namespace exists & set context kubectl create namespace demo-onprem --dry-run=client --output yaml | kubectl apply --filename -
kubectl create namespace demo-onprem --dry-run=client -o yaml | kubectl apply -f -
kubectl config set-context --current --namespace demo-onprem kubectl config set-context --current --namespace demo-onprem
# Create deployments and services kubectl create --filename 1-progressive-migration/database.yaml
kubectl create -f 1-progressive-migration/database.yaml
kubectl rollout status deployment/database kubectl rollout status deployment/database
kubectl create -f 1-progressive-migration/backend.yaml kubectl create --filename 1-progressive-migration/backend.yaml
kubectl rollout status deployment/payment-processor kubectl rollout status deployment/payment-processor
kubectl create -f 1-progressive-migration/frontend.yaml kubectl create --filename 1-progressive-migration/frontend.yaml
kubectl rollout status deployment/frontend kubectl rollout status deployment/frontend
# Launch application in browser firefox --new-window "http://localhost:9090"
flatpak run org.chromium.Chromium --new-window "http://localhost:8080"
# Start port forward kubectl port-forward deployment/frontend 9090:8080 &
kubectl port-forward --pod-running-timeout=10s deployment/frontend 8080 &
#+end_src #+end_src
@ -72,31 +67,33 @@ With skupper initialised lets take a look at the included web console:
#+NAME: Open skupper web interface #+NAME: Open skupper web interface
#+begin_src tmate :socket /tmp/james.tmate.tmate #+begin_src tmate :socket /tmp/james.tmate.tmate
# Retrieve skupper credentials export password=$(kubectl get secret skupper-console-users --output jsonpath="{.data.admin}" | base64 --decode)
export password=$(kubectl get secret skupper-console-users -o json | jq -r '.data.admin' | base64 --decode)
# Retrieve console url
export console=$(kubectl get service skupper --output jsonpath="{.status.loadBalancer.ingress[0].ip}") export console=$(kubectl get service skupper --output jsonpath="{.status.loadBalancer.ingress[0].ip}")
# Open skupper console firefox --new-window "https://admin:${password}@${console}:8080"
flatpak run org.chromium.Chromium --new-window "https://admin:${password}@${console}:8080"
#+end_src #+end_src
** Initialise skupper in public cluster ** Initialise skupper in public cluster
So we've been tasked with migrating this application to public cloud, rather than doing a big bang migration lets use skupper to perform a progressive migration. Our first step is to setup skupper in our public cloud cluster. So we've been tasked with migrating this application to public cloud, rather than doing a big bang migration lets use skupper to perform a progressive migration. Our first step is to setup skupper in our public cloud cluster which is a managed ROSA cluster running in ~ap-southeast-1~ (Singapore).
#+NAME: Initialise #+NAME: Initialise skupper in public cluster
#+begin_src tmate :socket /tmp/james.tmate.tmate #+begin_src tmate :socket /tmp/james.tmate.tmate
# Ensure namespace exists clear && kubectl --kubeconfig=$HOME/.kube/rosa create namespace demo-public --dry-run=client --output yaml | kubectl --kubeconfig=$HOME/.kube/rosa apply --filename -
kubectl --kubeconfig=$HOME/.kube/rosa create namespace demo-public --dry-run=client -o yaml | kubectl --kubeconfig=$HOME/.kube/rosa apply -f -
# Initialise skupper
skupper --kubeconfig=$HOME/.kube/rosa --namespace demo-public init skupper --kubeconfig=$HOME/.kube/rosa --namespace demo-public init
#+end_src #+end_src
Lets quickly review our public cluster deployment using the OpenShift console. Reviewing the ~demo-public~ project metrics we can see how lightweight a skupper installation is.
#+NAME: Review skupper status in public cluster
#+begin_src tmate :socket /tmp/james.tmate.tmate
firefox --new-window "https://console-openshift-console.apps.rosa-mgmwm.c4s2.p1.openshiftapps.com/k8s/cluster/projects/demo-public"
#+end_src
** Link public and private clusters ** Link public and private clusters
Creating a link requires use of two skupper commands in conjunction, ~skupper token create~ and ~skupper link create~. Creating a link requires use of two skupper commands in conjunction, ~skupper token create~ and ~skupper link create~.
@ -107,10 +104,8 @@ First, use ~skupper token create~ in one namespace to generate the token. Then,
#+NAME: Establish link between clusters #+NAME: Establish link between clusters
#+begin_src tmate :socket /tmp/james.tmate.tmate #+begin_src tmate :socket /tmp/james.tmate.tmate
# Create the token on public clear && skupper --kubeconfig=$HOME/.kube/rosa --namespace demo-public token create 1-progressive-migration/secret.token
skupper --kubeconfig=$HOME/.kube/rosa --namespace demo-public token create 1-progressive-migration/secret.token
# Initiate the link from private
skupper link create --name "van" 1-progressive-migration/secret.token skupper link create --name "van" 1-progressive-migration/secret.token
#+end_src #+end_src
@ -119,8 +114,7 @@ Now that we have linked our clusters lets review the skupper interface to confir
#+NAME: Review skupper console #+NAME: Review skupper console
#+begin_src tmate :socket /tmp/james.tmate.tmate #+begin_src tmate :socket /tmp/james.tmate.tmate
# Open skupper console firefox --new-window "https://admin:${password}@${console}:8080"
flatpak run org.chromium.Chromium --new-window "https://admin:${password}@${console}:8080"
#+end_src #+end_src
@ -130,17 +124,13 @@ With a virtual application network in place lets use it to expose our backend se
#+NAME: Expose payments-processor service #+NAME: Expose payments-processor service
#+begin_src tmate :socket /tmp/james.tmate.tmate #+begin_src tmate :socket /tmp/james.tmate.tmate
# Show list of services on public cluster clear && kubectl get svc --kubeconfig $HOME/.kube/rosa --namespace demo-public
kubectl get svc --kubeconfig $HOME/.kube/rosa --namespace demo-public
# Expose the services to the skupper network
skupper expose deployment/payment-processor --port 8080 skupper expose deployment/payment-processor --port 8080
skupper expose deployment/database --port 5432 skupper expose deployment/database --port 5432
# Show list of services after expose
kubectl get svc --kubeconfig $HOME/.kube/rosa --namespace demo-public kubectl get svc --kubeconfig $HOME/.kube/rosa --namespace demo-public
# Describe the new service
kubectl describe svc --kubeconfig $HOME/.kube/rosa --namespace demo-public payment-processor kubectl describe svc --kubeconfig $HOME/.kube/rosa --namespace demo-public payment-processor
#+end_src #+end_src
@ -149,12 +139,34 @@ kubectl describe svc --kubeconfig $HOME/.kube/rosa --namespace demo-public payme
Our backend service is now available in our public cluster thanks to our skupper virtual application network so lets proceed with our cloud migration for our frontend. Our backend service is now available in our public cluster thanks to our skupper virtual application network so lets proceed with our cloud migration for our frontend.
We will scale up a fresh deployment on our public cluster, scale down on our on premises cluster then verify that our application frontend can still talk to our backend services and works as expected.
#+NAME: Migrate frontend to the public cluster #+NAME: Migrate frontend to the public cluster
#+begin_src tmate :socket /tmp/james.tmate.tmate #+begin_src tmate :socket /tmp/james.tmate.tmate
# Deploy a fresh set of frontend replicas on public cluster clear
kubectl --kubeconfig $HOME/.kube/rosa --namespace demo-public create -f 1-progressive-migration/frontend.yaml kubectl --kubeconfig $HOME/.kube/rosa --namespace demo-public create --filename 1-progressive-migration/frontend.yaml
kubectl --kubeconfig $HOME/.kube/rosa --namespace demo-public rollout status deployment/frontend kubectl --kubeconfig $HOME/.kube/rosa --namespace demo-public rollout status deployment/frontend
# Tear down the old frontend on premises kubectl delete --filename 1-progressive-migration/frontend.yaml --ignore-not-found=true
kubectl delete -f 1-progressive-migration/frontend.yaml #+end_src
#+NAME: Verify application functionality
#+begin_src tmate :socket /tmp/james.tmate.tmate
firefox --new-window \
--new-tab --url "https://admin:${password}@${console}:8080" \
--new-tab --url "http://localhost:9090"
#+end_src
In theory our application continues to run as normal, We just performed a progressive migration! 🎉
** Teardown demo
Finished with the demo? Because skupper is so lightweight and only present in our application namespaces it will automatically be torn down when the namespaces are deleted, otherwise you can run the ~skupper delete~ to remove an installation from a namespace.
#+NAME: Teardown demo namespaces
#+begin_src tmate :socket /tmp/james.tmate.tmate
kubectl --kubeconfig $HOME/.kube/config delete namespace demo-onprem
kubectl --kubeconfig $HOME/.kube/rosa delete namespace demo-public
#+end_src #+end_src