Deploy the nginx-file-browser helm chart on Kubernetes
TypeScriptTo deploy the
nginx-file-browser
Helm chart on Kubernetes using Pulumi, we'll use thekubernetes.helm.v3.Chart
resource from the Pulumi Kubernetes provider. This resource allows us to deploy a Helm chart to a Kubernetes cluster, similar to how you would usehelm install
from the Helm CLI tool.Here's a step-by-step overview of deploying the
nginx-file-browser
Helm chart:-
Setting up a Kubernetes cluster: Before deploying our Helm chart, we need a running Kubernetes cluster. You might have a cluster created manually or via Pulumi. If you don't have one, you'll need to provision one using Pulumi or your cloud provider's web console.
-
Adding the Helm repository: The Helm chart registry that contains the
nginx-file-browser
chart must be known to Helm. Typically you would add viahelm repo add
, with Pulumi you define it in the code. -
Deploy the Helm chart: Using the
kubernetes.helm.v3.Chart
resource, we specify thechart
name, which isnginx-file-browser
in this example, and if it's from a custom repository, we also specify therepo
URL. -
Configuring the chart values: If you need to override default values of the Helm chart (for example, customizing service type or setting persistent volume claims), you pass an object to the
values
property. -
Running Pulumi up: Finally, you run
pulumi up
, which executes the Pulumi program and creates the resources in your Kubernetes cluster.
Now, let's translate this into a Pulumi TypeScript program:
import * as kubernetes from '@pulumi/kubernetes'; // Replace 'your_kubernetes_config_name' with the name of your Kubernetes context if necessary. // This step assumes that you have a configured Kubernetes provider. const k8sProvider = new kubernetes.Provider('k8s-provider', { kubeconfig: 'your_kubeconfig_file_path' // optionally you can use 'kubeconfig' parameter to specify your kubeconfig file }); // Deploying the nginx-file-browser Helm chart to the Kubernetes cluster const nginxFileBrowserChart = new kubernetes.helm.v3.Chart('nginx-file-browser', { // Replace with the actual repository URL or name, if it's in the official Helm repository this is not needed. repo: 'the_helm_chart_repository', // e.g., 'https://charts.bitnami.com/bitnami' chart: 'nginx-file-browser', // Specify the version of the chart you want to deploy. version: 'the_chart_version', // e.g., '1.0.0' // Any extra configuration values for the chart can go here. For example: values: { // Refer to nginx-file-browser's Helm chart documentation for the values you can configure. // e.g., service: { type: 'LoadBalancer' } }, }, { provider: k8sProvider }); // Export the public IP or hostname of the nginx-file-browser if it is exposed via LoadBalancer or similar export const nginxFileBrowserEndpoint = nginxFileBrowserChart.getResourceProperty('v1/Service', 'nginx-file-browser', 'status').apply(status => { const ingress = status.loadBalancer?.ingress[0]; if (!ingress) { return 'not exposed externally'; } return ingress.hostname || ingress.ip; });
Explanation of the steps in the Pulumi TypeScript program:
- We import the Pulumi Kubernetes SDK.
- We create a Kubernetes provider instance that points to our desired Kubernetes cluster. In real scenarios, you might have to specify the path to your
kubeconfig
file or ensure Pulumi has access to it through your environment. - We then create an instance of
kubernetes.helm.v3.Chart
to deploy thenginx-file-browser
chart. Therepo
is the URL of the Helm repository that contains the chart. Thechart
parameter is the name of the chart, and if you need to specify a particular version, use theversion
parameter. Thevalues
are any customizations you want to apply. - We set the Kubernetes provider to use the
k8sProvider
we created earlier if your Kubernetes cluster requires specific configurations. - We expose the endpoint information with
export
which, onpulumi up
, will display this information as an output, showing us where to access the deployednginx-file-browser
.
To finalize and apply your deployment, run the Pulumi CLI command
pulumi up
in the same directory as your Pulumi program. This step assumes you have Pulumi CLI installed and configured to access your cloud resources. The command will prompt for confirmation before proceeding to create or update actual resources in your cloud/cluster environment.Remember to check the Helm chart's values and documentation to adjust any configurations matching your needs.
-