Deploy the postgrest helm chart on AWS EKS
TypeScriptTo deploy the PostgREST Helm chart on AWS EKS (Elastic Kubernetes Service), we will need to perform several steps:
-
Create an EKS cluster: We will need a Kubernetes cluster to deploy our applications. We'll create an EKS cluster using Pulumi's
awsx
library because it provides higher-level abstractions that simplify cluster creation. -
Create an IAM Role: Amazon EKS requires an IAM role to create AWS resources on your behalf.
-
Deploy PostgREST using Helm: After we have a running EKS cluster, we will deploy PostgREST using the Helm chart. We'll use Pulumi's Kubernetes provider to manage the Helm release.
Let's go through the Pulumi program step by step:
Step 1: Installing Pulumi and Setting Up Your AWS Credentials
Before running the Pulumi program, you need to install Pulumi and set up your AWS credentials.
- Install Pulumi: Follow the instructions from the Pulumi Installation Guide.
- Configure AWS Credentials: Set up your AWS credentials by following the AWS Setup Guide.
Step 2: Writing the Pulumi Program
import * as awsx from '@pulumi/awsx'; import * as eks from '@pulumi/eks'; import * as pulumi from '@pulumi/pulumi'; import * as kubernetes from '@pulumi/kubernetes'; // Create an EKS cluster with the default configuration. const cluster = new eks.Cluster("my-cluster", { desiredCapacity: 2, minSize: 1, maxSize: 3, storageClasses: "gp2", deployDashboard: false, }); // Export the clusters' kubeconfig. export const kubeconfig = cluster.kubeconfig; // Deploy the PostgREST helm chart to the created EKS cluster. const postgrestChart = new kubernetes.helm.v3.Chart("postgrest", { chart: "postgrest", version: "<CHART_VERSION>", // Specify the chart version you want to deploy fetchOpts: { repo: "http://charts.postgrest.org", // Specify the Helm chart repository }, }, { provider: cluster.provider }); // Export the PostgREST endpoint once it is available export const postgrestEndpoint = postgrestChart.getResourceProperty("v1/Service", "postgrest", "status").apply(status => status.loadBalancer.ingress[0].hostname);
Step 3: Explanation
- The
eks.Cluster
is responsible for creating a managed Kubernetes cluster on AWS EKS. The parametersdesiredCapacity
,minSize
, andmaxSize
control the scaling properties of the cluster's node group. - We configure the cluster to use the 'gp2' storage class and disable the Kubernetes dashboard by setting
deployDashboard
to false. - The
kubeconfig
is exported, which you'll use to connect to your Kubernetes cluster withkubectl
or other Kubernetes management tools. - We then define a
postgrestChart
using thekubernetes.helm.v3.Chart
constructor to deploy the PostgREST Helm chart. Note that you should specify the chart version you wish to use. - We specify the Helm chart repository that hosts PostgREST.
- Finally, we export the
postgrestEndpoint
, which will output the hostname of the PostgREST service once the deployment is complete and the service is available.
Step 4: Run the Pulumi Program
To create the resources and deploy PostgREST, you will run the following commands in your terminal:
pulumi up
After running
pulumi up
, Pulumi will show you a preview of the resources that will be created. If everything looks correct, you can proceed to create the resources in your AWS account. Once the command completes, it will output thekubeconfig
andpostgrestEndpoint
which you can use to interact with your EKS cluster and PostgREST.Keep in mind that you need to replace
<CHART_VERSION>
with the actual version of the PostgREST Helm chart you wish to deploy. You can search for the versions available in thepostgrest
Helm chart repository.Step 5: Access PostgREST
Once the deployment is successful, you can use the
postgrestEndpoint
exported value to access the PostgREST service.This program should get you started with deploying PostgREST on AWS EKS using Pulumi. You can further customize the EKS cluster and Helm chart configurations to suit your specific requirements.
-