Deploy the python-fastapi-postgres helm chart on AWS EKS
TypeScriptTo deploy the python-fastapi-postgres Helm chart on AWS EKS, you will need to follow these steps:
- Create an EKS cluster by provisioning the required AWS resources such as an EKS Cluster resource, IAM roles, and security groups.
- Once the EKS cluster is prepared, configure
kubectl
to connect to the new EKS cluster. - Deploy the python-fastapi-postgres Helm chart to the EKS cluster.
Below is a Pulumi program written in TypeScript that shows how you can accomplish this. The program includes the use of
eks.Cluster
to create an EKS cluster, and then thekubernetes.helm.v3.Chart
resource to deploy the Helm chart.Explanation
-
EKS Cluster: an EKS cluster is provisioned using the
eks.Cluster
component from the@pulumi/eks
package, which will create an Amazon EKS cluster and all necessary infrastructural components such as VPC, subnets, and worker nodes. -
Helm Chart: The Helm chart deployment is managed using the
kubernetes.helm.v3.Chart
resource from the@pulumi/kubernetes
package, which will install the Helm chart on your EKS cluster. Pulumi will need to be configured with the correct Kubernetes context to communicate with the cluster.
Pulumi Program
import * as awsx from '@pulumi/awsx'; import * as eks from '@pulumi/eks'; import * as k8s from '@pulumi/kubernetes'; // Create an EKS cluster with the default configuration. const cluster = new eks.Cluster("my-eks-cluster"); // Export the cluster's kubeconfig. export const kubeconfig = cluster.kubeconfig; // Create a Kubernetes provider instance that uses our EKS cluster from above. const k8sProvider = new k8s.Provider("k8s-provider", { kubeconfig: cluster.kubeconfig.apply(JSON.stringify), }); // Deploy the python-fastapi-postgres helm chart using the kubernetes provider. const chart = new k8s.helm.v3.Chart("python-fastapi-postgres", { chart: "python-fastapi-postgres", // You will need to specify the repository containing the chart and other chart-related configurations // such as version, if necessary. // Repo information and specific settings for the chart may vary. Ensure that you have the correct // chart details, or modify the `chart` and related parameters accordingly. // For example: // repo: "https://charts.example.com/", // version: "1.2.3", }, { provider: k8sProvider }); // Export the URL for the fastapi route to ensure the service is accessible. const frontend = chart.getResourceProperty("v1/Service", "python-fastapi-postgres", "status"); export const frontendUrl = frontend.apply(status => `http://${status.loadBalancer.ingress[0].hostname}/`);
This program deploys a Helm chart for a python FastAPI with PostgreSQL back end on Amazon EKS. The steps are split into creating the EKS cluster, providing the cluster's kubeconfig to a Kubernetes provider, and then using that provider to deploy the helm chart. The program ends with exporting a potential URL where you’d be able to access the FastAPI frontend if the service type of the chart is LoadBalancer.
Please make sure you have the correct Helm chart name and repository URL before you run this program, as you might need to change the
chart
parameter and add arepo
property if your Helm chart is hosted in a non-default Helm repo.