Last active
March 29, 2024 10:28
-
-
Save vfarcic/801c99d6acc5a1e68bcee2591fac90eb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Source: https://gist.github.com/801c99d6acc5a1e68bcee2591fac90eb | |
#################### | |
# Creating Cluster # | |
#################### | |
# Docker for Desktop: https://gist.github.com/33fd661da626a167687ecb4267700588 | |
# minikube: https://gist.github.com/e7ad0cc633831147d2dbcd4fe2a97a74 | |
# GKE: https://gist.github.com/a260c0812459a57b46b9ea807a26173e | |
# EKS: https://gist.github.com/073edd549bc0c4d9bda6b4b7bd6bed99 | |
# AKS: https://gist.github.com/c288e9a8dd45ce855d477d1780d2d2e1 | |
# NOTE: We removed Istio in the previous section, so we need to install it even if you did not destroy the cluster | |
istioctl manifest install \ | |
--set profile=demo | |
################# | |
# Using Gateway # | |
################# | |
# Open https://github.com/vfarcic/go-demo-7 | |
# Fork it | |
GH_USER=[...] | |
git clone \ | |
https://github.com/$GH_USER/go-demo-7.git | |
cd go-demo-7 | |
git pull | |
ls -1 k8s/istio/gateway/ | |
ls -1 k8s/istio/gateway/app | |
cat k8s/istio/gateway/app/istio.yaml | |
kubectl create namespace go-demo-7 | |
kubectl label namespace go-demo-7 \ | |
istio-injection=enabled | |
kubectl --namespace go-demo-7 apply \ | |
--filename k8s/istio/gateway \ | |
--recursive | |
kubectl --namespace go-demo-7 \ | |
rollout status \ | |
deployment go-demo-7-primary | |
kubectl --namespace go-demo-7 \ | |
get pods | |
kubectl --namespace go-demo-7 \ | |
get virtualservices | |
kubectl --namespace go-demo-7 \ | |
describe virtualservice go-demo-7 | |
kubectl run curl \ | |
--image alpine \ | |
-it --rm \ | |
-- sh -c "apk add -U curl && curl go-demo-7.go-demo-7/demo/hello" | |
kubectl --namespace go-demo-7 \ | |
get ingress | |
kubectl --namespace go-demo-7 \ | |
get gateways | |
kubectl --namespace go-demo-7 \ | |
describe gateway go-demo-7 | |
# If minikube | |
export INGRESS_PORT=$(kubectl \ | |
--namespace istio-system \ | |
get service istio-ingressgateway \ | |
--output jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}') | |
# If minikube | |
export INGRESS_HOST=$(minikube ip):$INGRESS_PORT | |
# If Docker Desktop | |
export INGRESS_HOST=127.0.0.1 | |
# If EKS | |
export INGRESS_HOST=$(kubectl \ | |
--namespace istio-system \ | |
get service istio-ingressgateway \ | |
--output jsonpath="{.status.loadBalancer.ingress[0].hostname}") | |
# If GKE or AKS (NOT minikube and NOT Docker Desktop and NOT EKS) | |
export INGRESS_HOST=$(kubectl \ | |
--namespace istio-system \ | |
get service istio-ingressgateway \ | |
--output jsonpath="{.status.loadBalancer.ingress[0].ip}") | |
echo $INGRESS_HOST | |
curl -v -H "Host: go-demo-7.acme.com" \ | |
"http://$INGRESS_HOST/demo/hello" | |
curl -v -H "Host: something-else.acme.com" \ | |
"http://$INGRESS_HOST/demo/hello" | |
kubectl --namespace go-demo-7 delete \ | |
--filename k8s/istio/gateway \ | |
--recursive | |
################# | |
# Using Ingress # | |
################# | |
istioctl profile dump demo | |
istioctl manifest install \ | |
--set values.global.k8sIngress.enabled=true | |
ls -1 k8s/istio/ingress/app | |
cat k8s/istio/ingress/app/ingress.yaml | |
kubectl --namespace go-demo-7 apply \ | |
--filename k8s/istio/ingress/ \ | |
--recursive | |
# If `no matches for kind "Ingress" in version "networking.k8s.io/v1beta1"`, upgrade Kubernetes to 1.14+ | |
kubectl --namespace go-demo-7 \ | |
rollout status \ | |
deployment go-demo-7-primary | |
curl -H "Host: go-demo-7.acme.com" \ | |
"http://$INGRESS_HOST/demo/hello" | |
kubectl --namespace go-demo-7 delete \ | |
--filename k8s/istio/ingress \ | |
--recursive | |
############## | |
# References # | |
############## | |
# https://istio.io/docs/reference/config/networking/gateway/ | |
############### | |
# Cleaning Up # | |
############### | |
cd .. | |
kubectl delete namespace go-demo-7 | |
# Destroy the cluster (optional) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment