AKS Helm chart with Azure Cosmos DB
A Helm chart deployed to AKS that stores TODOs in an Azure Cosmos DB MongoDB API
This example lives in the pulumi/examples repository. Check out just this directory to use it:
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examplesgit -C pulumi-examples sparse-checkout set azure-cs-aks-cosmos-helmcd pulumi-examples/azure-cs-aks-cosmos-helmStands up an Azure Kubernetes Service (AKS) cluster and a MongoDB-flavored instance of
Azure Cosmos DB. On top of the AKS cluster, we also deploy a Helm Chart with a simple
Node.js TODO app bitnami/node, swapping out the usual in-cluster MongoDB instance
with our managed Cosmos DB instance.
Prerequisites#
Deploying the example#
-
Create a new stack, which is an isolated deployment target for this example:
Terminal window pulumi stack init dev -
Set the Azure region location to use:
Terminal window pulumi config set azure-native:location westus2 -
Deploy everything with the
pulumi upcommand. This provisions all the Azure resources necessary, including an Active Directory service principal, AKS cluster, Cosmos DB instance, and then deploys the Helm Chart, all in a single gesture (takes 5-10 min):Terminal window pulumi upType Name Status Info+ pulumi:pulumi:Stack azure-cs-aks-cosmos-helm-dev created 1 warning+ ├─ kubernetes:helm.sh/v3:Chart node created+ │ ├─ kubernetes:core/v1:Service node created+ │ └─ kubernetes:apps/v1:Deployment node created+ ├─ example:component:CosmosDBMongoDB mongo-todos created+ │ ├─ azure-native:documentdb:DatabaseAccount cosmos-mongodb created+ │ └─ azure-native:documentdb:MongoDBResourceMongoDBDatabase todos created+ ├─ example:component:AksCluster demoaks created+ │ ├─ azuread:index:Application app created+ │ ├─ random:index:RandomPassword pw created+ │ ├─ tls:index:PrivateKey ssh-key created+ │ ├─ azuread:index:ServicePrincipal service-principal created+ │ ├─ azuread:index:ServicePrincipalPassword sp-password created+ │ ├─ azure-native:containerservice:ManagedCluster demoaks created+ │ └─ pulumi:providers:kubernetes k8s-provider created+ ├─ azure-native:resources:ResourceGroup cosmosrg created+ └─ kubernetes:core/v1:Secret mongo-secrets createdOutputs:Endpoint: "http://20.73.205.163" -
Now your database, your cluster, and application are ready. An output variable is printed to provide the application endpoint:
Terminal window curl $(pulumi stack output Endpoint)<!doctype html><!-- ASSIGN OUR ANGULAR MODULE --><html ng-app="scotchTodo"><head><!-- META --><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- Optimize mobile viewport --><title>Node/Angular Todo App</title>...
Cleaning up#
Once you are done, you can destroy all of the resources, and the stack:
pulumi destroypulumi stack rmrm kubeconfig.yaml