Deploy the ansible-automation-platform helm chart on Oracle Kubernetes Engine (OKE)
TypeScriptTo deploy the Ansible Automation Platform Helm chart on Oracle Kubernetes Engine (OKE), you will need to perform several steps. This will involve setting up an OKE cluster, integrating it with a container repository (if required), and deploying the Helm chart on your OKE cluster.
Below is how you could use Pulumi to accomplish these tasks:
-
Create an OKE Cluster: Initialize an OKE Kubernetes cluster where you'll deploy your Helm chart. We'll use the
oci.ContainerEngine.Cluster
resource to create a new cluster. -
Set up OCI Artifacts Container Repository (if required): If you're using a custom Docker image for your Helm chart that needs to be stored in a container repository, you can create one with
oci.Artifacts.ContainerRepository
. This step is optional and only necessary if you need a private repository for your Helm chart's images. -
Deploy Helm Chart: Use the
kubernetes.helm.v3.Chart
resource to deploy the Helm chart onto the created OKE cluster. This resource will install the Helm chart according to specifications like chart name, version, and any custom values you want to provide.
Here is the TypeScript program which will set up an OKE cluster and deploy the Ansible Automation Platform Helm chart onto this cluster:
import * as pulumi from "@pulumi/pulumi"; import * as oci from "@pulumi/oci"; import * as k8s from "@pulumi/kubernetes"; // Configure the Oracle provider with the appropriate compartment ID const provider = new oci.Provider("oci", { compartmentId: "ocid1.compartment.oc1..xxxxxx", // replace with your Compartment's OCID }); // Create an OKE cluster const cluster = new oci.ContainerEngine.Cluster("oke-cluster", { compartmentId: provider.compartmentId, kubernetesVersion: "v1.20.8", // Specify your desired Kubernetes version name: "ansible-automation", // The name of your cluster options: { // Add any additional options required for your cluster setup }, vcnId: "ocid1.vcn.oc1..xxxxxx", // Specify the OCID of the VCN for the cluster // ... add more configuration as needed }, { provider: provider }); // Once the cluster is created, we will need to configure the Kubernetes provider const k8sProvider = new k8s.Provider("okeK8sProvider", { kubeconfig: cluster.kubeconfig.apply(kubeconfig => JSON.stringify(kubeconfig)), }); // Deploy the Ansible Automation Platform Helm chart const ansibleChart = new k8s.helm.v3.Chart("ansible-automation-platform", { // Make sure to replace below with the actual repository and chart details chart: "ansible-automation-platform", version: "x.y.z", // Replace with the chart's version you want to deploy fetchOpts: { repo: "https://charts.example.com/", // Provide the Helm chart repository URL }, // You can specify additional values or configurations for your chart deployment }, { provider: k8sProvider }); // Export the kubeconfig to allow access to the cluster with kubectl export const kubeConfig = cluster.kubeconfig;
Explanation:
- We first initialize the
oci
provider plugin with our compartment ID. - We create an OKE cluster using the
oci.ContainerEngine.Cluster
resource. You'll need to replace placeholders with the actual values specific to your OCI environment, such as thevcnId
andkubernetesVersion
. - After creating the Kubernetes cluster, we configure the
k8s.Provider
with the kubeconfig file of the new cluster. - Using the
k8s.helm.v3.Chart
resource, we deploy the Helm chart. Therepo
property infetchOpts
should point to the URL of the Helm chart repository containing the Ansible Automation Platform chart. Thechart
andversion
will specify which chart and version you want to deploy. - Lastly, we export the
kubeConfig
, so you can use it outside of Pulumi withkubectl
, for direct cluster interaction.
When you run this Pulumi program, it will provision the infrastructure and deploy the Helm chart as defined. Please ensure you have the necessary OCI credentials configured in your environment for Pulumi to authenticate with Oracle Cloud Infrastructure.
-