A Helm chart deployed to AKS that stores TODOs in an Azure Cosmos DB MongoDB API
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#
-
Install Pulumi.
-
Install .NET 5
-
We will be deploying to Azure, so you will need an Azure account. If you do not have an account, sign up for free here.
-
Setup and authenticate the native Azure provider for Pulumi.
Running the Example#
In this example we will provision a Kubernetes cluster running a public Apache web server, verify we can access it, and clean up when done.
-
Get the code:
Terminal window git clone git@github.com:pulumi/examples.gitcd examples/azure-cs-aks-cosmos-helm -
Create a new stack, which is an isolated deployment target for this example:
Terminal window pulumi stack init -
Set the required configuration variables for this program:
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, and then deploys the Apache 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 will be 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>... -
Once you are done, you can destroy all of the resources, and the stack:
Terminal window pulumi destroypulumi stack rmrm kubeconfig.yaml