#!/bin/bash # <--- Change the following environment variables according to your Azure service principal name ---> export subscriptionId='' export appId='' export password='' export tenantId='' export resourceGroup='' export arcClusterName='' export k8sExtensionName='' #default: 'microsoft.azuredefender.kubernetes' # Installing Helm 3 echo "Installing Helm 3" curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh # Installing Azure CLI & Azure Arc Extensions echo "Installing Azure CLI" sudo apt-get update sudo apt-get install -y ca-certificates curl apt-transport-https lsb-release gnupg curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null AZ_REPO=$(lsb_release -cs) echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list sudo apt-get install azure-cli echo "Clear cached helm Azure Arc Helm Charts" rm -rf ~/.azure/AzureArcCharts echo "Checking if you have up-to-date Azure Arc AZ CLI 'connectedk8s' extension..." az extension show --name "connectedk8s" &> extension_output if cat extension_output | grep -q "not installed"; then az extension add --name "connectedk8s" rm extension_output else az extension update --name "connectedk8s" rm extension_output fi echo "" echo "Checking if you have up-to-date Azure Arc AZ CLI 'k8s-extension' extension..." az extension show --name "k8s-extension" &> extension_output if cat extension_output | grep -q "not installed"; then az extension add --name "k8s-extension" rm extension_output else az extension update --name "k8s-extension" rm extension_output fi echo "" echo "Login to Az CLI using the service principal" az login --service-principal --username $appId --password $password --tenant $tenantId echo "Create Azure Defender Kubernetes extension instance" az k8s-extension create --name $k8sExtensionName --cluster-name $arcClusterName --resource-group $resourceGroup --cluster-type connectedClusters --extension-type microsoft.azuredefender.kubernetes