Terraform example project to provision EKS on AWS and install Istio (Istioctl).
- TERRAFORM: https://learn.hashicorp.com/terraform/getting-started/install.html
- ISTIOCTL: https://istio.io/latest/docs/setup/getting-started/
- AWS-IAM_AUTHENTICATOR: https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html
- WGET: https://www.gnu.org/software/wget/
Optional
- VPC: https://github.com/terraform-aws-modules/terraform-aws-vpc
- EKS: https://github.com/terraform-aws-modules/terraform-aws-eks
EKS are provisioned with Spot node instances on EC2. Read about Terraform-Aws-Eks module and configure as you need.
Run terraform
terraform init -backend=true -backend-config=bucket=[BUCKET_NAME]
terraform plan
terraform apply
Deploy an example Istio BookInfo application on K8s cluster:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.5/samples/bookinfo/platform/kube/bookinfo.yaml
# Get External IngressGateway
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.6/samples/bookinfo/networking/bookinfo-gateway.yaml
kubectl -n istio-system get svc istio-ingressgateway
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
open http://$INGRESS_HOST/productpage
kubectl -n default port-forward $(kubectl -n default get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}') 9080:9080
open http://localhost:9080/productpage
Kiali: istioctl dashboard kiali -n default
Grafana: istioctl dashboard grafana -n default
Prometheus: istioctl dashboard prometheus -n default
Other available Dashs:
Access to Istio web UIs
Usage:
istioctl dashboard [flags]
istioctl dashboard [command]
Aliases:
dashboard, dash, d
Available Commands:
controlz Open ControlZ web UI
envoy Open Envoy admin web UI
grafana Open Grafana web UI
jaeger Open Jaeger web UI
kiali Open Kiali web UI
prometheus Open Prometheus web UI
zipkin Open Zipkin web UI