Exercise 7.2: Service Mesh and Ingress Controller
{ curl -sL run.linkerd.io/install | sed -E 's/2.12.2/2.10.1/g' | sh export PATH=$PATH:/home/student/.linkerd2/bin echo "export PATH=$PATH:/home/student/.linkerd2/bin" >> $HOME/.bashrc linkerd check --pre linkerd install | kubectl apply -f - linkerd check linkerd viz install --set dashboard.enforcedHostRegexp=" " | kubectl apply -f - linkerd viz check linkerd viz dashboard & }kubectl patch svc web --patch '{"spec":{"type":"NodePort"}}' -n linkerd-vizkubectl get svc web -n linkerd-vizecho "$(curl -s ifconfig.io):$(kubectl -n linkerd-viz get svc web -o=jsonpath='{.spec.ports[?(@.port==8084)].nodePort}')"cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Namespace metadata: name: demo --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx namespace: demo spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - image: nginx:1.20.1 name: nginx ports: - containerPort: 80 protocol: TCP --- apiVersion: v1 kind: Service metadata: name: nginx namespace: demo spec: type: NodePort selector: app: nginx ports: - port: 80 EOFkubectl -n demo get deploy nginx -o yaml | linkerd inject - | kubectl apply -f -kubectl get pod -n demokubectl get svc -n demowatch -n 0.1 curl $(kubectl get svc nginx -o=jsonpath='{.spec.clusterIP}' -n demo)kubectl -n demo scale deploy nginx --replicas=5watch -n 0.1 curl $(kubectl get svc nginx -o=jsonpath='{.spec.clusterIP}' -n demo)kubectl delete ns demo{ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update }{ helm fetch ingress-nginx/ingress-nginx --untar cd ingress-nginx && ls }cat values.yamlhelm install myingress . --set controller.kind=DaemonSetkubectl get ing -Akubectl get svc,pod -l app.kubernetes.io/instance=myingresscat <<EOF | kubectl create -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-one labels: app: web-one spec: selector: matchLabels: app: web-one replicas: 1 template: metadata: labels: app: web-one spec: containers: - image: nginx name: nginx ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: web-one spec: type: ClusterIP selector: app: web-one ports: - port: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: web-two labels: app: web-two spec: selector: matchLabels: app: web-two replicas: 1 template: metadata: labels: app: web-two spec: containers: - image: httpd name: httpd ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: web-two spec: type: ClusterIP selector: app: web-two ports: - port: 80 EOFcat <<EOF | kubectl apply -f - apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-test annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - host: external.example.com http: paths: - backend: service: name: web-one port: number: 80 path: / pathType: ImplementationSpecific EOFkubectl get ingresskubectl get pod -o wide -l app.kubernetes.io/instance=myingresscurl $(kubectl get pod -l app.kubernetes.io/name=ingress-nginx -o=jsonpath='{.items[0].status.podIP}')kubectl get svc -l app.kubernetes.io/instance=myingresscurl $(kubectl get svc myingress-ingress-nginx-controller -o=jsonpath='{.spec.clusterIP}')curl -H "Host: external.example.com" $(kubectl get svc myingress-ingress-nginx-controller -o=jsonpath='{.spec.clusterIP}')kubectl get ds myingress-ingress-nginx-controller -o yaml | linkerd inject --ingress - | kubectl apply -f -cat <<EOF | kubectl apply -f - apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-test annotations: kubernetes.io/ingress.class: "nginx" spec: rules: - host: external.example.com http: paths: - backend: service: name: web-one port: number: 80 path: / pathType: ImplementationSpecific - host: internal.example.com http: paths: - backend: service: name: web-two port: number: 80 path: / pathType: ImplementationSpecific EOFcurl -H "Host: internal.example.com" $(kubectl get svc myingress-ingress-nginx-controller -o=jsonpath='{.spec.clusterIP}'){ kubectl delete deployment web-one web-two kubectl delete svc web-one web-two kubectl delete ing ingress-test helm uninstall myingress linkerd viz uninstall | kubectl delete -f - linkerd uninstall | kubectl delete -f - }
Last updated