Personal kubernetes environment
This commit is contained in:
parent
5e1897e370
commit
c681a80cd9
|
@ -0,0 +1,67 @@
|
||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Provision a personal Kubernetes in 3 minutes on Azure"
|
||||||
|
tags:
|
||||||
|
- kubernetes
|
||||||
|
- azure
|
||||||
|
---
|
||||||
|
|
||||||
|
At my previous company one frequent request made by developers was along the
|
||||||
|
lines of "I want to be able to run a development stack on my machine." Frankly,
|
||||||
|
I never understood this desire, and still don't. While I would agree that my
|
||||||
|
laptop is underpowered, running a stack of JVMs and other applications, in
|
||||||
|
addition to a web browser, would bring most machines to a crawl. An ideal
|
||||||
|
alternative, is to simply operate a personal Kubernetes environment in a public
|
||||||
|
cloud. Fortunately, that is now a genuinely __simple__ task.
|
||||||
|
|
||||||
|
|
||||||
|
Last year the team at Microsoft working on Azure introduced "AKS", a managed
|
||||||
|
[Kubernetes](https://kubernetes.io) environment. They also introduced [Cloud
|
||||||
|
Shell](https://azure.microsoft.com/en-us/features/cloud-shell/) which allows
|
||||||
|
for a quick shell in the Azure portal for running authenticated commands. What
|
||||||
|
they didn't talk too much about, was that Cloud Shell comes pre-baked with:
|
||||||
|
|
||||||
|
* `az` the Azure CLI tool, already authenticated.
|
||||||
|
* `kubectl` the Kubernetes command-line interface.
|
||||||
|
* `helm` a package manager for Kubernetes.
|
||||||
|
|
||||||
|
With both of these, it's **absurdly** easy to provision a Kubernetes
|
||||||
|
environment in under 3 minutes.
|
||||||
|
|
||||||
|
* Create a resource group: `az group create -n <name> -l <location>`
|
||||||
|
* Create a Kubernetes environment: `az aks create -n <name> -l <location> -g
|
||||||
|
<group> -k <kubernetes-version> --node-count <count>`
|
||||||
|
|
||||||
|
|
||||||
|
Below is an example I just ran:
|
||||||
|
|
||||||
|
```
|
||||||
|
tyler@Azure:~$ az group create -n unethicalblogger -l eastus
|
||||||
|
Location Name
|
||||||
|
---------- ----------------
|
||||||
|
eastus unethicalblogger
|
||||||
|
tyler@Azure:~$ az aks create -n ub -g unethicalblogger --node-count 1 --generate-ssh-keys -k 1.8.2 -l eastus
|
||||||
|
SSH key files '/home/tyler/.ssh/id_rsa' and '/home/tyler/.ssh/id_rsa.pub' have been generated under ~/.ssh to allow SSH acces
|
||||||
|
s to the VM. If using machines without permanent storage like Azure Cloud Shell without an attached file share, back up your
|
||||||
|
keys to a safe location
|
||||||
|
AAD role propagation done[############################################] 100.0000%
|
||||||
|
DnsPrefix Fqdn KubernetesVersion Location Name
|
||||||
|
ProvisioningState ResourceGroup
|
||||||
|
-------------------------- -------------------------------------------------------- ------------------- ---------- ------ ------------------- ----------------
|
||||||
|
ub-unethicalblogger-be5308 ub-unethicalblogger-be5308-ccbb80df.hcp.eastus.azmk8s.io 1.8.2 eastus ub Succeeded unethicalblogger
|
||||||
|
```
|
||||||
|
|
||||||
|
![Provisioning with Cloud Shell](/images/post-images/provision-kubernetes/cloud-shell.png)
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
In the above example I only deployed on "node" (Virtual Machine) which means
|
||||||
|
the Kubernetes environment is going to cost about $50/month. Of course, I can
|
||||||
|
scale that up with `az aks scale` if I need more capacity, but for small
|
||||||
|
personal projects, this is more t han enough.
|
||||||
|
|
||||||
|
With my own personal Kubernetes provisioned, I can start dropping Helm charts
|
||||||
|
into the environment without wasting any of laptops resources.
|
||||||
|
|
||||||
|
Quite fancy!
|
Binary file not shown.
After Width: | Height: | Size: 93 KiB |
Loading…
Reference in New Issue