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
    Preview

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
    Preview
  • 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
      Preview

First Version of Library:

  • Lets create a users database replicaset
  • Lets create a books database replicaset
    Preview
  • Refer Here for the changes done
  • Now lets create rs for users service and books service Refer Here for changes
    Preview
  • 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 Reply

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

Please turn AdBlock off
Animated Social Media Icons by Acurax Responsive Web Designing Company

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube