Deploy the sonatype-nexus3 helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo deploy the Sonatype Nexus3 Helm chart on Azure Kubernetes Service (AKS), we'll follow these steps:
- Create an AKS cluster: We'll start by provisioning an Azure Kubernetes Service (AKS) cluster using Pulumi's
azure-native
provider. - Install the Helm chart for Sonatype Nexus3: Once the AKS cluster is ready, we will deploy Sonatype Nexus3 to the cluster using the Helm chart through Pulumi's
kubernetes
provider.
For this, you will need to have Pulumi installed and configured for use with Azure. You'll also need the
kubectl
andhelm
CLI tools installed in order to work with your Kubernetes cluster and to pull down the necessary Helm charts.Here is the Pulumi TypeScript program to accomplish this:
import * as azure from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; import * as pulumi from "@pulumi/pulumi"; // Create an Azure Resource Group const resourceGroup = new azure.resources.ResourceGroup("myResourceGroup"); // Create an AKS cluster const cluster = new azure.containerservice.ManagedCluster("myAksCluster", { resourceGroupName: resourceGroup.name, agentPoolProfiles: [{ count: 2, vmSize: azure.containerservice.AgentVMSizeTypes.Standard_DS2_v2, mode: "System", }], dnsPrefix: "myakscluster" }); // Export the Kubeconfig export const kubeconfig = cluster.kubeConfigRaw; // Create a Kubernetes provider instance that uses our AKS cluster from above. const k8sProvider = new k8s.Provider("k8sProvider", { kubeconfig: cluster.kubeConfigRaw, }); // Deploy Nexus3 using Helm Chart const nexus3Chart = new k8s.helm.v3.Chart("nexus-chart", { chart: "sonatype-nexus", version: "5.0.0", // use the desired chart version fetchOpts: { repo: "https://sonatype.github.io/helm3-charts/", }, }, { provider: k8sProvider }); // Export the Nexus3 service URL export const nexus3ServiceUrl = pulumi.interpolate`http://${nexus3Chart.getResourceProperty("v1/Service", "sonatype-nexus", "status").loadBalancer.ingress[0].ip}:8081`;
Explanation
-
We first create a resource group using the
azure.resources.ResourceGroup
class. This is a container that holds related resources for an Azure solution. -
We then create a Kubernetes cluster in AKS using the
azure.containerservice.ManagedCluster
class. TheagentPoolProfiles
parameter defines the size and number of VMs for the node pool. -
We export the raw kubeconfig which is the configuration file used by
kubectl
to connect to the Kubernetes cluster. -
We instantiate the
k8s.Provider
, which is the Pulumi provider for Kubernetes. It uses the kubeconfig of the AKS cluster we created. -
Next, we deploy the Sonatype Nexus3 Helm chart using Pulumi's
k8s.helm.v3.Chart
class. We specify the chart's name and the repository URL. -
Finally, we export the URL that you can use to access the Sonatype Nexus3 once it's deployed.
Don't forget to replace
version
with the desired Helm chart version relevant to your use. The chart repository URL (repo
option) should point to the official Helm repository for Sonatype Nexus.In a production environment, be sure to configure additional settings like role-based access control, persistent storage, and more according to your requirements.
- Create an AKS cluster: We'll start by provisioning an Azure Kubernetes Service (AKS) cluster using Pulumi's