Deploy the ravendb-cluster helm chart on Oracle Kubernetes Engine (OKE)
TypeScriptTo deploy the
ravendb-cluster
Helm chart on Oracle Kubernetes Engine (OKE), we will proceed with the following steps:- Create an Oracle Kubernetes Engine (OKE) cluster: To deploy a Helm chart, we first need a running Kubernetes cluster. We'll create an OKE cluster resource.
- Deploy the Helm chart: Once the cluster is ready, we will use the
kubernetes.helm.v3.Chart
resource from Pulumi's Kubernetes provider to deploy theravendb-cluster
Helm chart.
Below is the TypeScript program that accomplishes these steps. Please make sure that you have the necessary access and permissions to create and manage resources in Oracle Cloud Infrastructure before running this code. Additionally, you will need to have Pulumi installed and configured to work with your Oracle Cloud account.
import * as pulumi from '@pulumi/pulumi'; import * as oci from '@pulumi/oci'; import * as k8s from '@pulumi/kubernetes'; // Create an Oracle Kubernetes Engine cluster const okeCluster = new oci.ContainerEngine.Cluster('okeCluster', { // Specify required information for OKE // Compartment ID where the OKE cluster should be created compartmentId: 'your-compartment-id', // VCN ID where the OKE cluster should reside vcnId: 'your-vcn-id', // Kubernetes version kubernetesVersion: 'v1.21.1', // Node pool configuration, etc. options: { // Additional OKE options if necessary }, }); // Define the kubeconfig to connect to the OKE cluster const kubeconfig = pulumi.all([okeCluster.id]).apply(([clusterId]) => { // Use the OKE cluster to generate the kubeconfig return oci.ContainerEngine.getClusterKubeconfig({ clusterId: clusterId, }); }); // Using the generated kubeconfig, setup the Kubernetes provider to deploy Helm charts const k8sProvider = new k8s.Provider('k8sProvider', { kubeconfig: kubeconfig, }); // Deploy the ravendb-cluster Helm chart using the Kubernetes provider const ravendbChart = new k8s.helm.v3.Chart('ravendb-cluster', { chart: 'ravendb-cluster', // You may need to specify the repository if the chart is not in the default Helm repo fetchOpts: { repo: 'http://charts.ravendb.net/', }, // Specify namespace or leave as default namespace: 'default', // Values to override within the Helm chart values: { // Custom values to configure ravendb-cluster }, }, { provider: k8sProvider }); // Export any required information, for example the cluster's endpoint export const clusterEndpoint = okeCluster.endpoints.apply(ep => ep.kubernetes); // Program finished - the Helm chart inside the OKE cluster will be deployed
Here is a breakdown of the code:
- The
oci.ContainerEngine.Cluster
resource is used to create a new Oracle Kubernetes Engine cluster. You need to replace'your-compartment-id'
and'your-vcn-id'
with the appropriate identifiers for your Oracle Cloud account. - Once the OKE cluster is ready, we use the
oci.ContainerEngine.getClusterKubeconfig
function to generate the kubeconfig, which allows us to interact with the cluster using Kubernetes commands. - We create a new Pulumi Kubernetes provider instance, passing the kubeconfig of our OKE cluster.
- Using the
k8s.helm.v3.Chart
resource, we deploy theravendb-cluster
Helm chart into our cluster. If the Helm chart is not in the default repository, we specify the chart's repository URL. - The
values
field in the Helm chart resource is where you can specify any configurations that are specific toravendb-cluster
. Check the chart's documentation for what values you can configure. - An endpoint of the OKE cluster is exported as
clusterEndpoint
, which you can use to interact with your Kubernetes cluster.
You must have
pulumi
,@pulumi/pulumi
,@pulumi/oci
, and@pulumi/kubernetes
libraries installed in your project. You can install them using npm or yarn:npm install @pulumi/pulumi @pulumi/oci @pulumi/kubernetes
or
yarn add @pulumi/pulumi @pulumi/oci @pulumi/kubernetes
After writing the code, you can deploy the cluster and the Helm chart by running the following commands:
pulumi up
This command will provision the resources as defined in the code. Follow the on-screen prompts provided by Pulumi to approve and monitor the deployment process.