kubeup can be configured for different event delivery methods and security options.
Before deploying, choose your configuration options. For a quick start, follow the quickstart guide and return here for advanced configuration.
All delivery options can be combined. Event logging is enabled by default.
kubeup writes all events to stderr. With the provided Bicep templates, logs are forwarded to a Log Analytics workspace and stored in the ContainerAppConsoleLogs_CL table. On other platforms, use any log shipping solution.
Send events as emails using SMTP. Mailtrap offers a free tier that works well with kubeup.
Send events as emails using Twilio SendGrid's email API. SendGrid no longer offers free plans.
Authorization options are mutually exclusive. If both client secrets and Entra ID are configured, Entra ID takes precedence.
No authorization is enforced, meaning anyone who knows your webhook endpoint can trigger it. This is useful for testing in development environments but not recommended for production.
Requires two secrets that can be used interchangeably. This enables seamless key rotation by replacing one key at a time without service disruption. The sender must include one key as a query parameter when calling the webhook.
Validates that the sender has a valid Entra ID access token with the correct role claim. This is the recommended and most secure authorization method.
Note: Setting up Entra ID authorization requires specific Entra ID privileges often not granted to end users or developers. See below for details.
To deploy kubeup to Microsoft Azure:
- Azure subscription - Sign up for free
- Bash environment - Available on macOS/Linux. On Windows 10/11, install Windows Subsystem for Linux
- Task - For running build and deployment steps
- Azure CLI - For deploying Bicep templates
- Bicep CLI - Install with
az bicep install - Email service (optional) - Twilio SendGrid account or SMTP access for email notifications
- Microsoft Graph CLI (optional) - Required only for Entra ID authorization
Note: The Microsoft Graph CLI was deprecated in July 2024 but remains functional for our needs. For PowerShell users, refer to this Azure Event Grid script.
Alternatively, use Azure Cloud Shell, which has all required tools except Microsoft Graph CLI. Follow the Linux installation steps to install mgc in Cloud Shell.
If you don't have an AKS cluster, create one using the included script. Adjust the names and region as needed:
# Set variables in .env file first
cp .env.template .env
# Edit .env with your cluster details
task deploy:aksNote: The provided instructions assume that your cluster and the
kubeupresources are deployed in the same Azure region. This is just to keep things simple. You can runkubeupin any public Azure region.
Copy the template and configure for your deployment:
cp .env.template .envSee the configuration guide for required settings, then continue with deployment.
Deploy kubeup using the included Bicep templates. This creates both the Azure Container App and Event Grid subscription for your AKS cluster events.
task deploy:azureRequires Application Developer role or higher in Entra ID, unless your tenant allows all users to register applications.
Sign in to Microsoft Graph CLI:
tenant_id="Your Entra ID tenant ID"
mgc login --tenant-id $tenant_id --scopes "Application.ReadWrite.All User.Read"Note: Application.ReadWrite.All requires administrator consent. Ask an Entra ID administrator to grant this scope for your user or the entire tenant.
Deploy everything:
task deploy:allCreates required Entra ID objects and role assignments. Same prerequisites as above apply.
task deploy:entraid
```### Verification
After `kubeup` has been deployed, it may take some time before you will receive notifications, depending on when new Kubernetes version become available or when you upgrade your cluster to a newer Kubernetes version.
If you want to test `kubeup` right away, trigger a Kubernetes update to the latest version offered by AKS and check the logs.
```bash
version=$(az aks get-upgrades -n $KU_AKS_CLUSTER -g $KU_AKS_RESOURCE_GROUP \
--query 'controlPlaneProfile.upgrades[].kubernetesVersion' -o tsv | sort | head -1)
az aks upgrade -n $KU_AKS_CLUSTER -g $KU_AKS_RESOURCE_GROUP -k $version -yOnce Kubernetes events are published for your AKS cluster, you will receive emails (if configured) and log entries in your Log Analytics workspace's ContainerAppConsoleLogs_CL table.

