Skip to content

Shanshashvili/azure-k8s-python-deploy

Repository files navigation

Azure Kubernetes Deployment Guide

1️⃣ Create Resource Group & AKS Cluster

🔹 (a) Create the Resource Group

az group create --name rg-greetinglab-ds-centralus --location centralus

🔹 (b) Create the AKS Cluster with a Default Node Pool

az aks create \
  --resource-group rg-greetinglab-ds-centralus \
  --name aks-greetinglab-ds \
  --node-count 1 \
  --generate-ssh-keys

🔹 (c) Add Two Additional Node Pools (Frontend & Backend)

az aks nodepool add \
  --resource-group rg-greetinglab-ds-centralus \
  --cluster-name aks-greetinglab-ds \
  --name frontendpool \
  --node-count 1 \
  --labels agentpool=frontendpool

az aks nodepool add \
  --resource-group rg-greetinglab-ds-centralus \
  --cluster-name aks-greetinglab-ds \
  --name backendpool \
  --node-count 1 \
  --labels agentpool=backendpool

✅ Verify AKS Cluster

az aks show --resource-group rg-greetinglab-ds-centralus --name aks-greetinglab-ds --query "agentPoolProfiles[].{Name:name, Count:count}"

2️⃣ Create Azure Container Registry (ACR)

🔹 (a) Create ACR

az acr create \
  --resource-group rg-greetinglab-ds-centralus \
  --name acrgreetinglabds \
  --sku Basic \
  --admin-enabled true

✅ Verify ACR Creation

az acr show --resource-group rg-greetinglab-ds-centralus --name acrgreetinglabds --query "loginServer" --output tsv

🔹 (b) Retrieve ACR Credentials

ACR_NAME=acrgreetinglabds
ACR_USERNAME=$(az acr credential show --name $ACR_NAME --query "username" --output tsv)
ACR_PASSWORD=$(az acr credential show --name $ACR_NAME --query "passwords[0].value" --output tsv)

🔹 (c) Create .dockerconfigjson for Kubernetes Secret

cat <<EOF > config.json
{
  "auths": {
    "$ACR_NAME.azurecr.io": {
      "username": "$ACR_USERNAME",
      "password": "$ACR_PASSWORD",
      "auth": "$(echo -n "$ACR_USERNAME:$ACR_PASSWORD" | base64 -w 0)"
    }
  }
}
EOF

🔹 (d) Encode & Store in Kubernetes Secret

cat config.json | base64 -w 0

Paste the Base64 value inside acr-secret.yaml:

apiVersion: v1
kind: Secret
metadata:
  name: acr-secret
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: <PASTE_BASE64_ENCODED_VALUE>

🔹 (e) Connect to AKS Cluster

az aks get-credentials --resource-group rg-greetinglab-ds-centralus --name aks-greetinglab-ds
kubectl get nodes

🔹 (f) Apply the Secret

kubectl apply -f acr-secret.yaml
kubectl get secret acr-secret --output=yaml

3️⃣ Build & Push Docker Image to ACR

🔹 (a) Build the Docker Image

ACR_NAME=acrgreetinglabds
IMAGE_NAME=greetings-app
TAG=latest

docker build -t $ACR_NAME.azurecr.io/$IMAGE_NAME:$TAG .

🔹 (b) Log in to ACR

az acr login --name acrgreetinglabds

🔹 (c) Push the Image to ACR

docker push acrgreetinglabds.azurecr.io/greetings-app:latest

✅ Verify Image in ACR

az acr repository list --name acrgreetinglabds --output table
az acr repository show-tags --name acrgreetinglabds --repository greetings-app --output table

🔹 (d) Update k8s-deployment.yaml

containers:
  - name: greetings-app
    image: acrgreetinglabds.azurecr.io/greetings-app:latest

4️⃣ Deploy Application in AKS

🔹 (a) Deploy Redis First

kubectl apply -f redis-deployment.yaml
kubectl apply -f redis-service.yaml
kubectl get pods
kubectl get svc

🔹 (b) Deploy the Greetings App

kubectl apply -f k8s-deployment.yaml
kubectl apply -f greetings-config.yaml
kubectl get pods

🔹 (c) Expose the Greetings App

kubectl apply -f greetings-service.yaml
kubectl get svc

5️⃣ Access the Greetings App in Browser

🔹 (a) Get External IP

kubectl get svc

🔹 (b) Open in Browser

http://<EXTERNAL-IP>

✔ Expected Output:

Greetings from DavitS 1 times!!!

Deployment Completed Successfully! 🎉

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published