Deploy the prometheus-operator-csv helm chart on Oracle Kubernetes Engine (OKE)
TypeScriptTo deploy the
prometheus-operator-csv
Helm chart on Oracle Kubernetes Engine (OKE), we will use Pulumi'skubernetes
provider. Pulumi is a modern infrastructure as code platform that allows you to declare infrastructure using real programming languages like TypeScript, allowing for abstractions, sharing, and reuse of code.Helm charts are packages of pre-configured Kubernetes resources. To deploy a Helm chart, you would typically use the Helm client from your command line. But with Pulumi, you can manage Helm charts directly through code.
For this task, we will utilize the
kubernetes.helm.v3.Chart
resource from Pulumi which represents a Helm chart in a Kubernetes cluster. It allows us to provide the chart name, version, repository, and values to configure the chart.Below is a Pulumi program written in TypeScript that will deploy the
prometheus-operator-csv
Helm chart to an Oracle Kubernetes Engine cluster.Before running this code, you need to have Pulumi set up with the appropriate credentials and the
Oracle Cloud Infrastructure (OCI)
provider configured for Pulumi.Here's the program that accomplishes this:
import * as k8s from "@pulumi/kubernetes"; import * as pulumi from "@pulumi/pulumi"; // A Pulumi project requires a Pulumi stack, which keeps track of your project's state. Ensure you have selected a stack with `pulumi stack select`. // Create a Kubernetes provider instance that uses our existing kubeconfig for the OKE cluster. const provider = new k8s.Provider("okeProvider", { kubeconfig: pulumi.output(pulumi.getStackReference("<your-oci-stack-reference>").requireOutput("kubeconfig")), }); // Define the prometheus-operator-csv Helm chart from the official Helm repository. const prometheusOperator = new k8s.helm.v3.Chart("prometheus-operator-csv", { // If the chart you're deploying is not from a public repository, you can specify `repo` along with the URL chart: "prometheus-operator-csv", // Make sure you specify the right namespace where you want to deploy, if not specified it will use 'default' namespace: "monitoring", // 'fetchOpts' specify chart fetching options such as the repo url fetchOpts: { repo: "https://<chart-repository-url>", // Replace with the correct chart repo URL }, // If applicable, specify the version of the chart you want to deploy version: "9.3.1", // Replace with the desired chart version // The 'values' field is used to provide a set of values to customize the deployment, such as resource limits, ingress settings, etc. values: { // These values will be specific to the prometheus-operator-csv Helm chart and documented by the chart maintainers serviceMonitorsSelectorNilUsesHelmValues: false, prometheus: { prometheusSpec: { retention: "10d", // Add more Prometheus specific values here }, }, // Add other custom values or configuration here }, }, { provider }); // Exporting a URL if the chart includes a component like an Ingress that has a URL endpoint. export const endpointUrl = prometheusOperator.getResourceProperty("v1/Service", "prometheus-operator-csv-prometheus", "status").apply(status => status.loadBalancer.ingress[0].hostname);
Replace
<your-oci-stack-reference>
with the name of the stack reference that points to the stack where your Oracle Kubernetes Engine cluster information is stored. If you have this information stored in a different way, you may retrieve yourkubeconfig
accordingly. Additionally, replace<chart-repository-url>
with the repository URL of the prometheus-operator-csv chart.This program does the following:
- Establishes a provider for the Oracle Kubernetes Engine using your kubeconfig, which sets the context for where the Helm chart should be deployed.
- Instantiates a new Helm chart resource representing the prometheus-operator-csv Helm chart. The
namespace
and other optional properties such asversion
orvalues
can be specified for customization purposes. - Exports the URL of the Prometheus instance if the service type is LoadBalancer, which can be used to access Prometheus.
To run this program:
- Ensure that you have Pulumi, Node.js, and npm installed.
- Create a new Pulumi project and replace your
index.ts
with the provided code. - Run
npm install @pulumi/kubernetes
to install the necessary Pulumi Kubernetes package. - Run
pulumi up
to have Pulumi apply the changes defined by this code to your OKE cluster.
Remember to replace the placeholder values with the information that corresponds to your own OKE cluster setup and the Prometheus Helm chart.