From ff4219ab5ddbebcd77a2a5935be0aae293b0bcf2 Mon Sep 17 00:00:00 2001 From: Jerome Petazzoni Date: Mon, 8 Apr 2019 06:15:23 -0500 Subject: [PATCH] Add managed installation options --- slides/k8s/setup-managed.md | 235 ++++++++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 slides/k8s/setup-managed.md diff --git a/slides/k8s/setup-managed.md b/slides/k8s/setup-managed.md new file mode 100644 index 00000000..7097319b --- /dev/null +++ b/slides/k8s/setup-managed.md @@ -0,0 +1,235 @@ +# Installing a managed cluster + +*"The easiest way to install Kubernetes is to get someone +else to do it for you." +
+([Jérôme Petazzoni](https://twitter.com/jpetazzo))* + +- Let's see a few options to install managed clusters! + +- All the options mentioned here require an account +with a cloud provider + +- ... And a credit card + +--- + +## EKS (the hard way) + +- [Read the doc](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) + +- Create service roles, VPCs, and a bunch of other oddities + +- Try to figure out why it doesn't work + +- Start over, following an [official AWS blog post](https://aws.amazon.com/blogs/aws/amazon-eks-now-generally-available/) + +- Try to find the missing Cloud Formation template + +-- + +.footnote[(╯°□°)╯︵ ┻━┻] + +--- + +## EKS (the easy way) + +- Install `eksctl` + +- Set the usual environment variables + + ([AWS_DEFAULT_REGION](https://docs.aws.amazon.com/general/latest/gr/rande.html#eks_region), AWS_ACCESS_KEY, AWS_SECRET_ACCESS_KEY) + +- Create the cluster: + ```bash + eksctl create cluster + ``` + +- Wait 15-20 minutes (yes, it's sloooooooooooooooooow) + +- Add cluster add-ons + + (by default, it doesn't come with metrics-server, logging, etc.) + +--- + +## EKS (cleanup) + +- Delete the cluster: + ```bash + eksctl delete cluster + ``` + +- If you need to find the name of the cluster: + ```bash + eksctl get clusters + ``` + +--- + +## GKE (initial setup) + +- Install `gcloud` + +- Login: + ```bash + gcloud auth init + ``` + +- Create a "project": + ```bash + gcloud projects create my-gke-project + gcloud config set project my-gke-project + ``` + +- Pick a [region](https://cloud.google.com/compute/docs/regions-zones/) + + (example: `europe-west1`, `us-west1`, ...) + +--- + +## GKE (create cluster) + +- Create the cluster: + ```bash + gcloud container clusters create my-gke-cluster --region us-west1 --num-nodes=2 + ``` + + (without `--num-nodes` you might exhaust your IP address quota!) + +- The first time you try to create a cluster in a given project, you get an error + + - you need to enable the Kubernetes Engine API + - the error message gives you a link + - follow the link and enable the API (and billing) +
(it's just a couple of clicks and it's instantaneous) + +- Wait a couple of minutes (yes, it's faaaaaaaaast) + +- The cluster comes with many add-ons + +--- + +## GKE (cleanup) + +- List clusters (if you forgot its name): + ```bash + gcloud container clusters list + ``` + +- Delete the cluster: + ```bash + gcloud container clusters delete my-gke-cluster --region us-west1 + ``` + +- Delete the project (optional): + ```bash + gcloud projects delete my-gke-project + ``` + +--- + +## AKS (initial setup) + +- Install the Azure CLI + +- Login: + ```bash + az login + ``` + +- Select a [region](https://azure.microsoft.com/en-us/global-infrastructure/services/?products=kubernetes-service®ions=all +) + +- Create a "resource group": + ```bash + az group create --name my-aks-group --location westeurope + ``` + +--- + +## AKS (create cluster) + +- Create the cluster: + ```bash + az aks create --resource-group my-aks-group --name my-aks-cluster + ``` + +- Wait 15 minutes (sometimes longer) + +- Add credentials to `kubeconfig`: + ```bash + az aks get-credentials --resource-group my-aks-group --name my-aks-cluster + ``` + +- The cluster has a lot of goodies pre-installed + +--- + +## AKS (cleanup) + +- Delete the cluster: + ```bash + az aks delete --resource-group my-aks-group --name my-aks-cluster + ``` + +- Delete the resource group: + ```bash + az group delete --resource-group aks-test + ``` + +- Note: delete actions can take a long time too! + + (10 minutes is typical) + +--- + +## Digital Ocean (initial setup) + +- Install `doctl` + +- Generate API token (in web console) + +- Set up the CLI authentication: + ```bash + doctl auth init + ``` + (It will ask you for the API token) + +- Check the list of regions and pick one: + ```bash + doctl compute region list + ``` + (If you don't specify the region later, it will use `nyc1`) + +--- + +## Digital Ocean (create cluster) + +- Create the cluster: + ```bash + doctl kubernetes cluster create my-do-cluster [--region xxx1] + ``` + +- Wait 5 minutes + +- Update `kubeconfig`: + ```bash + kubectl config use-context do-xxx1-my-do-cluster + ``` + +- The cluster comes with some goodies (like Cilium) but no metrics server + +--- + +## Digital Ocean (cleanup) + +- List clusters (if you forgot its name): + ```bash + doctl kubernetes cluster list + ``` + +- Delete the cluster: + ```bash + doctl kubernetes cluster delete my-do-cluster + ```