Azure CLI Guide - Install, Connect, Deploy Kubernetes and PostgreSQL
| 3 minute read | Using 553 words
Complete guide to Azure CLI installation, cloud connection, Kubernetes cluster deployment, and PostgreSQL setup
1. Installing Azure CLI
Linux (Ubuntu/Debian)
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
macOS
brew install azure-cli
Windows
Download and run the MSI installer from: https://aka.ms/installazurecliwindows
Verify Installation
az --version
2. Connect to Azure Cloud
Login to Azure
az login
Login with Service Principal
az login --service-principal -u <app-id> -p <password> --tenant <tenant-id>
Set Default Subscription
az account list --output table
az account set --subscription <subscription-id>
Verify Connection
az account show
3. Deploy Kubernetes Clusters
Create Resource Group
az group create --name myResourceGroup --location eastus
Create AKS Cluster
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 3 \
--enable-addons monitoring \
--generate-ssh-keys
Get Cluster Credentials
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Verify Cluster Connection
kubectl get nodes
kubectl cluster-info
Scale Cluster Nodes
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 5
Upgrade Cluster
az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version 1.28.0
4. Deploy PostgreSQL
Create PostgreSQL Flexible Server
az postgres flexible-server create \
--resource-group myResourceGroup \
--name mypostgresqlserver \
--location eastus \
--admin-user myadmin \
--admin-password <password> \
--sku-name Standard_B1ms \
--tier Burstable \
--storage-size 32
Create Database
az postgres flexible-server db create \
--resource-group myResourceGroup \
--server-name mypostgresqlserver \
--database-name mydatabase
Configure Firewall Rules
# Allow Azure services
az postgres flexible-server firewall-rule create \
--resource-group myResourceGroup \
--name mypostgresqlserver \
--rule-name AllowAzureServices \
--start-ip-address 0.0.0.0 \
--end-ip-address 0.0.0.0
# Allow specific IP
az postgres flexible-server firewall-rule create \
--resource-group myResourceGroup \
--name mypostgresqlserver \
--rule-name AllowMyIP \
--start-ip-address <your-ip> \
--end-ip-address <your-ip>
Connect to PostgreSQL
# Get connection string
az postgres flexible-server show-connection-string \
--server-name mypostgresqlserver \
--database-name mydatabase \
--admin-user myadmin \
--admin-password <password>
# Connect using psql
psql "host=mypostgresqlserver.postgres.database.azure.com port=5432 dbname=mydatabase user=myadmin password=<password> sslmode=require"
5. Deploy PostgreSQL on Kubernetes
Create Kubernetes Secret for PostgreSQL
kubectl create secret generic postgres-secret \
--from-literal=username=postgres \
--from-literal=password=mypassword
Deploy PostgreSQL on AKS
# postgres-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:15
env:
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: postgres-secret
key: username
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-secret
key: password
- name: POSTGRES_DB
value: myapp
ports:
- containerPort: 5432
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-pvc
---
apiVersion: v1
kind: Service
metadata:
name: postgres-service
spec:
selector:
app: postgres
ports:
- port: 5432
targetPort: 5432
type: ClusterIP
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
Apply PostgreSQL Configuration
kubectl apply -f postgres-deployment.yaml
Verify PostgreSQL Deployment
kubectl get pods -l app=postgres
kubectl get svc postgres-service
kubectl logs deployment/postgres
6. Useful Management Commands
Monitor Cluster
az aks browse --resource-group myResourceGroup --name myAKSCluster
Check PostgreSQL Status
az postgres flexible-server show --resource-group myResourceGroup --name mypostgresqlserver
Clean Up Resources
# Delete AKS cluster
az aks delete --resource-group myResourceGroup --name myAKSCluster
# Delete PostgreSQL server
az postgres flexible-server delete --resource-group myResourceGroup --name mypostgresqlserver
# Delete resource group (removes all resources)
az group delete --name myResourceGroup
Cost Management
# Check resource costs
az consumption usage list --start-date 2025-09-01 --end-date 2025-09-30
# Stop AKS cluster to save costs
az aks stop --resource-group myResourceGroup --name myAKSCluster
# Start AKS cluster
az aks start --resource-group myResourceGroup --name myAKSCluster
Page link: /posts/azure-cli-kubernetes-postgres-guide/