DevOps Classroom notes 20/Oct/2024

Managed Kubernetes clusters

  • Cloud providers offer managed kubernetes clusters
  • Cloud providers manage the control plane i.e. we need not install k8s and the control plane will be a black box

Azure Kubernetes Services (AKS)

  • AKS is managed k8s offered by Azure Refer Here
  • Lets setup AKS Cluster
  • Pre-reqs:
    • Azure CLI is installed and configured
  • Refer Here for steps
  • Azure cli user data
#!/bin/bash
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -sLS https://packages.microsoft.com/keys/microsoft.asc |
  gpg --dearmor | sudo tee /etc/apt/keyrings/microsoft.gpg > /dev/null
sudo chmod go+r /etc/apt/keyrings/microsoft.gpg
AZ_DIST=$(lsb_release -cs)
echo "Types: deb
URIs: https://packages.microsoft.com/repos/azure-cli/
Suites: ${AZ_DIST}
Components: main
Architectures: $(dpkg --print-architecture)
Signed-by: /etc/apt/keyrings/microsoft.gpg" | sudo tee /etc/apt/sources.list.d/azure-cli.sources
sudo apt-get update
sudo apt-get install azure-cli -y
  • Commands to create AKS cluster from bash (linux/mac)
# variables 
export MY_RESOURCE_GROUP_NAME="myAKSResourceGroup"
export REGION="eastus"
export MY_AKS_CLUSTER_NAME="myAKSCluster"
export MY_DNS_LABEL="mydnslabel"
# Create a resource group
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
az aks create --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAME --node-count 1 --node-vm-size "Standard_B2ms" --generate-ssh-keys
# install kubectl
az aks install-cli 
# get kube config
az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAME
  • Commands to create AKS cluster from powershell using Azure CLI
$MY_RESOURCE_GROUP_NAME="myAKSResourceGroup"
$REGION="eastus"
$MY_AKS_CLUSTER_NAME="myAKSCluster"
$MY_DNS_LABEL="mydnslabel"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
az aks create --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAME --node-count 1 --node-vm-size "Standard_B2ms" --generate-ssh-keys
az aks install-cli 
az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAME

Lets deploy spc using replicaset and a service of type load balancer


Library Application

  • Architecture
  • Technical stack
    • users-service: REST API
      • python
      • fast api
    • user-db:
      • postgres
    • books-service: REST API
      • python
      • fast api
    • user-db:
      • postgres
    • library-frontend:
      • react js
  • To run books database
    • image: postgres:15-alpine
    • environmental variables:
      • POSTGRES_USER: user
      • POSTGRES_PASSWORD: password
      • POSTGRES_DB: booksdb
    • port: 5432
  • To run books service
    • image: shaikkhajaibrahim/libbookssvc:1.0
    • environmental variables:
      • DATABASE_URL: “postgresql://:@:5432/“
      • SECRET_KEY: ‘YtDEVWnL35aAIP-5yxeLjAZ49R920-mMNDfwPyWULu63HFsYzo0f-LO2InxC8eu428k’
    • port: 8000
  • To run user database
    • image: postgres:15-alpine
    • environmental variables:
      • POSTGRES_USER: user
      • POSTGRES_PASSWORD: password
      • POSTGRES_DB: usersdb
    • port: 5432
  • To run users servics:
    • image: shaikkhajaibrahim/libuserssvc:1.0
    • environmental variables:
      • DATABASE_URL: “postgresql://:@:5432/“
      • SECRET_KEY: ‘YtDEVWnL35aAIP-5yxeLjAZ49R920-mMNDfwPyWULu63HFsYzo0f-LO2InxC8eu428k’
    • port: 8000
  • To run library webstore
    • image: shaikkhajaibrahim/libwebstore:1.0
    • environmental variables
      • REACT_APP_BACKEND_API_URL: http://:8000/api/v1
      • REACT_APP_BOOKS_API_URL: http://:8000/api/v1/books
      • REACT_APP_USERS_API_URL: http://:8000/api/v1/users
    • port: 3000

First Version of Library:

  • Lets create a users database replicaset
  • Lets create a books database replicaset
  • Refer Here for the changes done
  • Now lets create rs for users service and books service Refer Here for changes
  • Lets add rs and service for library store Refer Here for changes
  • To create a admin user run this from any container
curl -X 'POST' \
  'http://users-svc:8000/api/v1/users/' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "username": "qtdevops",
  "email": "admin@admin.com",
  "user_type": "administrator",
  "password": "admin@123"
}'
Published
Categorized as Uncategorized Tagged

By continuous learner

devops & cloud enthusiastic learner

Leave a comment

Turn on JavaScript to leave a comment.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Plugin for Social Media by Acurax Wordpress Design Studio
Exit mobile version
%%footer%%