Skip to content

A brief introduction into Istio and its role in modern production Kubernetes. We prepare for the future instalments of Practical Istio.

Notifications You must be signed in to change notification settings

raonelakurti/gke-istio-bootstrap

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GKE Istio - Boostrap

Google Cloud Platform Istio bootstrap for GKE


Guides



Architecture


Architecture Diagram


Endpoints

istio-system Namespace

Service Endpoint
kiali http://gke.devopstar.com:15029/kiali/console
prometheus http://gke.devopstar.com:15030
grafana http://gke.devopstar.com:15031
tracing http://gke.devopstar.com:15032

default Namespace

Service Endpoint
prometheus http://gke.devopstar.com/prometheus
grafana http://gke.devopstar.com/grafana/login

Setup


Deploy Script Usage

./deploy.sh <project_id> <resource> <action>

Resources must be deployed and removed in the following order

create delete
iam dns
network bastion
cloud-router gke
gke cloud-router
bastion network
dns iam

Or simply run the following to bring it all up

./deploy.sh <project_id> all create

Manage


Connect

Connect to the bastion host and manage the kubernetes cluster from there using the steps below

SCP Bastion

gcloud compute scp \
  --recurse ./k8s* <project_id>-bastion:~/ \
  --zone australia-southeast1-a

SSH Bastion

gcloud compute ssh <project_id>-bastion \
  --project <project_id> \
  --zone australia-southeast1-a

Kubernetes Connect

gcloud container clusters get-credentials <project_id>-gke \
  --project <project_id> \
  --region australia-southeast1

Istio


Istio Install

Note: If you have a domain name you will be using, make sure to replace DNS_NAME with that entry. If you aren't going to use one, you'll need to patch out references to gke.devopstar.com replacing it with the ingres IP you are assigned later.

# Initialize Istio
./k8s/istio/istio.sh <project_id> init

# Install Istio Services
./k8s/istio/istio.sh <project_id> install

Configure Istio

Gateways

kubectl apply -f k8s/istio/gateways

Virtual Services

kubectl apply -f k8s/istio/virtual-services

Destination Rules

kubectl apply -f k8s/istio/destination-rules

Whitelist

kubectl apply -f k8s/istio/whitelists

Helm


Role-based Access Control (RBAC)

We'll deploy an RBAC configuration that is used by helm. Perform the following actions from the Bastion server

# Create tiller service account & cluster role binding
kubectl create -f k8s/rbac-config.yaml

# init helm with the service account
helm init --service-account tiller --history-max 200

Install External DNS

helm install \
  --name external-dns stable/external-dns \
  -f k8s/external-dns.yaml --wait

Install Prometheus & Grafana

helm install \
  --name prometheus stable/prometheus \
  -f k8s/prometheus/values.yaml --wait

kubectl apply \
  -f k8s/grafana/configmap.yaml
helm install \
  --name grafana stable/grafana \
  -f k8s/grafana/values.yaml --wait

Delete Packages

helm delete --purge external-dns grafana prometheus
./k8s/istio/istio.sh <project_id> remove

Attribution


About

A brief introduction into Istio and its role in modern production Kubernetes. We prepare for the future instalments of Practical Istio.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 70.0%
  • Shell 30.0%