Demo

Demo Steps to Create GKE cluster #

login to gcp console #

gcloud auth login

Create gke regional cluster #

gcloud container clusters create demo-regional-cluster \
    --region us-central1 \
    --node-locations us-central1-a,us-central1-b,us-central1-c \
    --enable-master-authorized-networks \
    --enable-ip-alias \
    --preemptible \
    --project <project-id>

Connect to GKE cluster #

gcloud beta container clusters get-credentials demo-regional-cluster --region us-central1 --project <project-id>
kubectl get pods --all-namespaces

Add my IP to master autoized networks #

gcloud container clusters update demo-regional-cluster \
    --project <project-id> --region us-central1 \
    --enable-master-authorized-networks \
    --master-authorized-networks 103.252.202.101/32

Show pods all #

kubectl get pods --all-namespaces

Show available gke nodes #

kubectl get nodes 

Delete gke cluster #

gcloud container clusters delete demo-regional-cluster --project <project-id> --region us-central1

Deploy simple hello applicaton #

deployment-hello-dep.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-dep
  namespace: default
spec:
  replicas: 10
  selector:
    matchLabels:
      app: hello-dep 
  template:
    metadata:
      labels:
        app: hello-dep
    spec:
      containers:
      - image: gcr.io/google-samples/hello-app:1.0
        imagePullPolicy: Always
        name: hello-dep
        ports:
        - containerPort: 8080
kubectl apply -f deployment-hello-dep.yaml

Expose application using ClusterIP #

apiVersion: "v1"
kind: "Service"
metadata:
  name: "service-cluster-ip-hello-dep"
  namespace: "default"
spec:
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 8080
  selector:
    app: "hello-dep"
  type: "ClusterIP"

Expose application using NodePort #

apiVersion: "v1"
kind: "Service"
metadata:
  name: "service-node-port-hello-dep"
  namespace: "default"
spec:
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 8080
  selector:
    app: "hello-dep"
  type: "NodePort"

Open firewall for nodeport #

gcloud compute firewall-rules create service-node-port-hello-dep --allow tcp:31358 --project <project-id>

gcloud compute firewall-rules delete service-node-port-hello-dep  --project <project-id>

Expose application using LoadBalancer #

apiVersion: "v1"
kind: "Service"
metadata:
  name: "service-loadbalancer-hello-dep"
  namespace: "default"
spec:
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 8080
  selector:
    app: "hello-dep"
  type: "LoadBalancer"
  loadBalancerIP: ""