Deploy the saleor helm chart on Google Kubernetes Engine (GKE)
TypeScriptTo deploy the Saleor helm chart on Google Kubernetes Engine (GKE), you'll need to perform several steps using Pulumi:
- Set up a GKE cluster where your helm chart will be deployed.
- Install the Helm chart to the cluster.
Here's how you can do this in Pulumi using TypeScript:
Pre-requisites:
- Make sure you have Pulumi installed and configured with access to your Google Cloud account.
- You should have
kubectl
andhelm
installed locally if you need to interact with the cluster directly. - The Saleor helm chart information, including its repository and chart name.
Steps to Deploy Saleor on GKE using Pulumi:
Step 1: Define the GKE cluster. In this step, you create a new GKE cluster using Pulumi's Google Cloud (
gcp
) package.Step 2: Deploy the Saleor Helm chart. After the cluster is provisioned, you deploy Saleor using the Helm chart with the
kubernetes
package.Below is the detailed code for these steps:
import * as pulumi from "@pulumi/pulumi"; import * as gcp from "@pulumi/gcp"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create a GKE cluster const cluster = new gcp.container.Cluster("saleor-cluster", { initialNodeCount: 2, nodeVersion: "latest", // Use the latest available version of GKE node minMasterVersion: "latest", // Use the latest available version of the master nodeConfig: { machineType: "n1-standard-1", // Adjust the machine type based on your needs oauthScopes: [ "https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring" ], }, }); // Export the Cluster name and Kubeconfig export const clusterName = cluster.name; export const kubeconfig = pulumi. all([cluster.name, cluster.endpoint, cluster.masterAuth]). apply(([name, endpoint, masterAuth]) => { const context = `${gcp.config.project}_${gcp.config.zone}_${name}`; return `apiVersion: v1 clusters: - cluster: certificate-authority-data: ${masterAuth.clusterCaCertificate} server: https://${endpoint} name: ${context} contexts: - context: cluster: ${context} user: ${context} name: ${context} current-context: ${context} kind: Config preferences: {} users: - name: ${context} user: auth-provider: config: cmd-args: config config-helper --format=json cmd-path: gcloud expiry-key: '{.credential.token_expiry}' token-key: '{.credential.access_token}' name: gcp `; }); // Step 2: Deploy the Saleor Helm chart to the cluster const saleorChart = new k8s.helm.v3.Chart("saleor", { chart: "saleor", // The name of the chart version: "x.x.x", // Specify the version of Saleor chart you want to deploy fetchOpts: { repo: "https://charts.saleor.io/" // URL to the Saleor helm repository }, }, { provider: new k8s.Provider("k8s-provider", { kubeconfig: kubeconfig }) }); // Export the Saleor frontend service endpoint export const saleorServiceEndpoint = saleorChart.getResourceProperty("v1/Service", "saleor", "status").apply(status => status.loadBalancer.ingress[0].ip);
In this program you:
- Use the
gcp.container.Cluster
resource to create a new GKE cluster.- Configure the node count, and versions for both the nodes and the master.
- Choose an appropriate machine type for the nodes.
- Assign the necessary OAuth scopes needed for GKE nodes to function properly.
- Generate a kubeconfig file to interact with your cluster using
kubectl
.
If you need a reference on the
gcp.container.Cluster
, see the Pulumi documentation.- Define the
kubernetes.helm.v3.Chart
resource to deploy the Saleor Helm chart.- Specify the chart name and version, along with the repository URL where the chart is located.
- Use a
k8s.Provider
which allows Pulumi to authenticate using thekubeconfig
generated in the earlier step.
You can find more information on the
kubernetes.helm.v3.Chart
on its documentation page.Finally, the program exports two values:
clusterName
: The name of your GKE cluster.saleorServiceEndpoint
: The external IP address for the Saleor service frontend, which you can use to access the Saleor application once it's deployed.
To deploy this Pulumi program, save the code in a file named
index.ts
, and then runpulumi up
. This command will provision the resources in your GCP account according to the configuration specified in the code. Once the application is deployed, you can access Saleor by visiting the IP address output fromsaleorServiceEndpoint
.