Skip to content

Azure AKS Deployment Guide

Infrastructure Setup

Prerequisites

  • Azure CLI v2.50+
  • kubectl v1.25+
  • Helm v3.0+
  • Azure subscription with admin access

Initial Setup

  1. Login to Azure:
bash
az login
  1. Create Resource Group:
bash
az group create --name prime-edm-rg --location eastus
  1. Create AKS cluster:
bash
az aks create \
  --resource-group prime-edm-rg \
  --name prime-edm-cluster \
  --node-count 3 \
  --enable-addons monitoring \
  --generate-ssh-keys

Network Configuration

  1. Create Virtual Network:
bash
az network vnet create \
  --name prime-edm-vnet \
  --resource-group prime-edm-rg \
  --subnet-name prime-edm-subnet
  1. Configure Network Security:
bash
az network nsg create \
  --resource-group prime-edm-rg \
  --name prime-edm-nsg

Secrets Management

Azure Key Vault Setup

  1. Create Key Vault:
bash
az keyvault create \
  --name prime-edm-kv \
  --resource-group prime-edm-rg \
  --location eastus
  1. Create Service Principal:
bash
az ad sp create-for-rbac --name prime-edm-sp
  1. Set Key Vault permissions:
bash
az keyvault set-policy \
  --name prime-edm-kv \
  --spn <CLIENT_ID> \
  --secret-permissions get list

External Secrets Configuration

yaml
apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
  name: azure-backend
spec:
  provider:
    azurekv:
      tenantId: "your-tenant-id"
      vaultUrl: "https://prime-edm-kv.vault.azure.net"
      authSecretRef:
        clientId:
          name: azure-secret-creds
          key: client-id
        clientSecret:
          name: azure-secret-creds
          key: client-secret

Ingress Configuration

Application Gateway Setup

  1. Enable Application Gateway Ingress Controller:
bash
az aks enable-addons \
  --resource-group prime-edm-rg \
  --name prime-edm-cluster \
  --addons ingress-appgw
  1. Configure Ingress:
yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prime-edm-ingress
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
    - host: api.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: prime-edm-service
                port:
                  number: 80

Production Configuration

High Availability Setup

  1. Create node pools for HA:
bash
az aks nodepool add \
  --resource-group prime-edm-rg \
  --cluster-name prime-edm-cluster \
  --name prodpool \
  --node-count 3 \
  --node-vm-size Standard_DS3_v2
  1. Enable cluster autoscaler:
bash
az aks update \
  --resource-group prime-edm-rg \
  --name prime-edm-cluster \
  --enable-cluster-autoscaler \
  --min-count 3 \
  --max-count 6

Monitoring Setup

  1. Enable Azure Monitor:
bash
az aks enable-addons \
  --addons monitoring \
  --resource-group prime-edm-rg \
  --name prime-edm-cluster

Backup Configuration

  1. Enable Azure Backup:
bash
az backup vault create \
  --name prime-edm-vault \
  --resource-group prime-edm-rg \
  --location eastus

Cost Optimization

Resource Management

  1. Configure resource requests and limits:
yaml
resources:
  requests:
    cpu: 250m
    memory: 512Mi
  limits:
    cpu: 500m
    memory: 1Gi
  1. Use Spot Instances:
bash
az aks nodepool add \
  --resource-group prime-edm-rg \
  --cluster-name prime-edm-cluster \
  --name spotpool \
  --priority Spot \
  --eviction-policy Delete \
  --spot-max-price -1

Troubleshooting

Common Issues

  1. Application Gateway Issues:

    • Check network configuration
    • Verify SSL certificate setup
    • Review Application Gateway logs
  2. Node Pool Issues:

    • Check VM scale set status
    • Verify network connectivity
    • Review node pool logs
  3. Networking Issues:

    • Verify VNet configuration
    • Check NSG rules
    • Review route tables

Debug Commands

bash
# Check Application Gateway status
az network application-gateway show-backend-health \
  --name prime-edm-agw \
  --resource-group prime-edm-rg

# View node status
kubectl get nodes -o wide

# Check pod status
kubectl get pods --all-namespaces

# View service endpoints
kubectl get endpoints

Released under the MIT License.