-
-
Notifications
You must be signed in to change notification settings - Fork 0
Container Orchestrator Kubernetes
- Kubernetes
- kubectl
- minikube
- microk8s
Kubernetes: The orchestrator
kubectl: The orchestator cli
minikube: Allow to have a local cluster with a single node (used to test kubernetes locally)
microk8s: Allows to define a multicluster kubernetes node on linux ubuntu running on both bare metal, VM or on windows WSL2
kubectl version
kubectl --help
minikube version
minikube --helpThe basic commands to monitor your cluster -official-
# Get resources info
kubectl get deployments
kubectl get nodes
kubectl get services
kubectl get pods
kubectl get storageclass
# Delete resources
kubectl delete --all storageclass
kubectl delete --all services
kubectl delete --all pods
kubectl delete --all deployments
kubectl delete --all nodes
# Delete a resource
kubectl delete service <service-name>
# Watch the service status
kubectl get service --watch
kubectl get service qrcode-backend-service --watchHow to create a namespace
kubectl create namespace genocsHow to run a deployment
kubectl apply -f azure-vote.yamlHow to run single image (will be removed)
kubectl run kuberneteters-boocamp --image=gcr.io/google-samples/kuberneters-bootcamp:v1 --port=8080
kubectl run genocs-qrcode --image=genocs/qrcode:latest --port=8083The following procedure can be used both on bare metal VM or WSL2
The procedure has been validated on Ubuntu 20.04
Check snap
snap list
snap refresh microk8s -edgekubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:kubeconfig-sa
$TOKENNAME=`kubectl -n kube-system get serviceaccount/kubeconfig-sa -o jsonpath='{.secrets[0].name}'`
kubectl -n kube-system get secret $TOKENNAME -o jsonpath='{.data.token}'How to get the token
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $tokenHow to check the list of services and forward the post to allow access to the dashboard from windows host
microk8s kubectl get services -A
microk8s kubectl -n kube-system port-forward --address 0.0.0.0 service/kubernetes-dashboard 5000:443
redis-server-7db4b86f-frmnl
kubectl port-forward genocs-solomon-frontend-68bd5f656c-7xxzr 5002:5002- Install the dashboard plugin
- Get the daskboard login token
- Run the daskboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
kubectl -n kube-system describe secret token
kubectl proxyTo run the dashboard
minikube dashboard (--url)The dashboard URL
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/(. | #/login)
wsl hostname -I
microk8s status
microk8s kubectl get all --all-namespaces
microk8s kubectl apply -f qrcode.yamlmicrok8s kubectl get services -A
microk8s kubectl -n kube-system port-forward --address 0.0.0.0 service/kubernetes-dashboard 5000:443
kubectl port-forward 'service name' 5002:5002This section show how to setup the infrastructure to secure the configuration with an Azure User Managed Identity.
This configuration allow you to secure the Azure Resource Accces usign the ADD. In this way it is possible to provide access to resources like
- Azure Key Vault
- Azure blob Storage
without sharing sensitive information and on the same time managing the access rights by AAD (Azure Active Directory)
Running following steps on your subscription only once
# Register the Pod identity Preview Feature
az feature register --name EnablePodIdentityPreview --namespace Microsoft.ContainerService
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to be sure have the latest version installed
az extension update --name aks-preview
# Check whether the Managed Pod Identity is registered
az feature show --name EnablePodIdentityPreview --namespace Microsoft.ContainerService -o table
# Register the Microsoft Pod Identity
az provider register --namespace Microsoft.ContainerServiceFollow the steps below to setup your cluster in an hand made fashion.
# Login to Azure
az login
# Login to the Azure Container registry
az acr login --name "genoc-acr"
# Install the azure AKS CLI
# should be installed by default
az aks install-cli
# Create the resource-group
az group create --name "rg-genocs-aks" --location "West Europe"
# Create the Kubernates cluster with binding to ACR (Azure Container Registry)
az aks create -n "genocs-aks" -g "rg-genocs-aks" --location "West Europe" \
--node-count 1 --node-vm-size Standard_DS2_v2 --generate-ssh-keys \
--network-plugin azure \
--enable-managed-identity --enable-pod-identity \
--enable-addons monitoring \
--attach-acr "genoc-acr"
# Get AKS credentials (needed to connect to AKS)
az aks get-credentials -n "genocs-aks" -g "rg-genocs-aks"
# List the resources
az acr list --resource-group "rg-genocs-aks" --query "[].{acrLoginServer:loginServer}" --output table
# Delete the AKS cluster (to save your money)
az aks delete -n "genocs-aks" -g "rg-genocs-aks" --yes# Enable the Azure Pod Identity feature on your cluster
# not required if you have use the command shown above
az aks update -g "rg-genocs-aks-dev" -n "genocs-aks-dev" --enable-pod-identity
# Bind the Pod Identity to the cluster
az aks pod-identity add --resource-group "rg-genocs-aks-dev" \
--cluster-name "genocs-aks-dev" --namespace default \
--name csi-to-key-vault \
--identity-resource-id /subscriptions/f20b0dac-53ce-44d4-a673-eb1fd36ee03b/resourceGroups/RG-Genocs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aad-aks-id
# Check the Binding
kubectl get azureidentity-
Setup the project
- Describe the idea
- Identify the product shape
-
Project management
- Define the MVP (Minimum Viable Product)
- Identify the KPIs (Key Performance Indicators)
- Define the process
- Identify and define the roadmap, checkpoints, deadlines
-
Implement the solution
- Patterns and practices
- Technologial Stack
- Tools, languages, libraries and services
-
Operations maintenance support and feedback
- Strategical organization
- Pratical implementation