export SUFFIX=$(echo $RANDOM)
export AKS_GRP=aks-grp-$SUFFIX
export AZ_KV_GRP=kv-grp-$SUFFIX
export LOC=westeurope
export AKS_NAME=aks-$SUFFIX
export AZ_KV_NAME=kv-$SUFFIX
export SP_NAME=az-aks-kv-sp-$SUFFIX
export CSI_STORAGE_CLASS_NAME=nginx-csi-storage-class
export SP_AKS_SECRET=secrets-store-creds
export CSI_NAMESPACE=azure-cs-driver
export TENANTID=$(echo $(az account show) | jq -r '.tenantId')
export SUBID=$(echo $(az account show) | jq -r '.id')
SPObj=$(az ad sp create-for-rbac --name $SP_NAME --skip-assignment)
export SP_CLIENT_ID=$(echo $SPObj | jq -r '.appId')
export SP_CLIENT_SECRET=$(echo $SPObj | jq -r '.password')
az group create -n $AKS_GRP -l $LOC --tags label=$SUFFIX
az aks create -n $AKS_NAME -g $AKS_GRP --node-count 2 --network-plugin azure --generate-ssh-keys
az aks get-credentials --name $AKS_NAME -g $AKS_GRP
kubectl get nodes -o wide
kubectl create ns $CSI_NAMESPACE
This helm repo provide both the csi-secrets-store-driver as well as csi-secrets-store-driver-azure-provider as well
helm repo add csi-secrets-store-provider-azure https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/charts
helm install -n $CSI_NAMESPACE csi-secrets-store-provider-azure/csi-secrets-store-provider-azure --generate-name
kubectl get all -n $CSI_NAMESPACE
az group create -n $AZ_KV_GRP -l $LOC --tags label=$SUFFIX
az keyvault create --name $AZ_KV_NAME --resource-group $AZ_KV_GRP
az role assignment create --role Reader --assignee $SP_CLIENT_ID --scope /subscriptions/$SUBID/resourcegroups/$AZ_KV_GRP/providers/Microsoft.KeyVault/vaults/$AZ_KV_NAME
Then assign get policies for the secrets && create two key vault secrets with name as dbusername and dbpassword. Provide some secret values
az keyvault set-policy -n $AZ_KV_NAME --secret-permissions get --spn $SP_CLIENT_ID
az keyvault secret set --name dbusername --value=dbadmin --vault-name $AZ_KV_NAME
az keyvault secret set --name dbpassword --value=supersecretpassword --vault-name $AZ_KV_NAME
kubectl create secret generic $SP_AKS_SECRET --from-literal clientid=$SP_CLIENT_ID --from-literal clientsecret=$SP_CLIENT_SECRET
envsubst < azure-kv-provider.yaml | kubectl apply -f -
envsubst < nginx-deployment.yaml | kubectl apply -f -
kubectl exec nginx-app -- ls /mnt/secrets/
kubectl exec nginx-app -- cat /mnt/secrets/DB_PASSWORD
az ad sp delete --id $SP_CLIENT_ID
for rg in $(az group list --tag label=$SUFFIX --query '[].name' | jq -r '.[]'); do echo "Delete Resource Group: ${rg}"; az group delete -n ${rg}; done