How to Deploy and Scale Strapi on a Kubernetes Cluster 2/2

This page summarizes the projects mentioned and recommended in the original post on dev.to

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • strapi-k8s-blog-post

    All resources for the blog post titled "How to Deploy and Scale Strapi on a Kubernetes Cluster"

  • You can check out the source code of this article on GitHub. The code is separated into two folders, one for each part.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • nfs-ganesha-server-and-external-provisioner

    NFS Ganesha Server and Volume Provisioner.

  • Now, for the purposes of this article, in case you don't have an NFS server available, we will use a simple NFS Server Provisioner, which we'll use only for example purposes. As mentioned before, using a managed solution from a cloud provider or a properly configured HA NFS server in your infrastructure is highly recommended. We'll install not the most up-to-date solution, but it should work for example purposes. We will follow the Quickstart found in the repo, mixed with this repo which does some small tweaks to make it work with K3d, which is summarized in the following commands run from the helm folder:

  • k3d-nfs-dynamic-volumes

    Dynamic nfs volumes using k3d and nfs-ganesha-server-and-external-provisioner

  • Now, for the purposes of this article, in case you don't have an NFS server available, we will use a simple NFS Server Provisioner, which we'll use only for example purposes. As mentioned before, using a managed solution from a cloud provider or a properly configured HA NFS server in your infrastructure is highly recommended. We'll install not the most up-to-date solution, but it should work for example purposes. We will follow the Quickstart found in the repo, mixed with this repo which does some small tweaks to make it work with K3d, which is summarized in the following commands run from the helm folder:

  • helm-charts

    Prometheus community Helm charts

  • We need a way of monitoring our cluster, the most recommended stack (but not the only one) is Prometheus, Alert Manager and Grafana. Prometheus is a monitoring system, and Grafana is a visualization system that can work as the frontend for Prometheus. The Prometheus community provides and easy way to install these tools via the Kube Prometheus Stack. This chart has many parameters you can configure, so we will not get into much detail here. The easiest way to install it is the following:

  • Vegeta

    HTTP load testing tool and library. It's over 9000!

  • But for the purposes of this article, given that we want to show the process, we will run everything on the same computer. We will use the tool vegeta, and if you want to read more about it, you can read this article. Our Strapi project is based on the Getting started guide, therefore we have restaurants and categories, so we will use these endpoints.

  • autoscaler

    Autoscaling components for Kubernetes

  • Cluster Autoscaler, is a cluster autoscaling solution designed for any cloud provider.

  • jaeger

    CNCF Jaeger, a Distributed Tracing Platform

  • Jaeger, another tracing solution that can work in tandem with OpenTelemetry.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • Strapi

    πŸš€ Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable and developer-first.

  • Strapi is the leading open-source headless CMS based on NodeJS, and its projects can vary a lot between themselves, but also Kubernetes provides a lot of flexibility. Therefore, it's worth investing some time in the best practices to integrate them.

  • rook

    Storage Orchestration for Kubernetes

  • Rook (this is a nice article for Rook NFS)

  • opentelemetry-go

    OpenTelemetry Go API and SDK

  • OpenTelmetry, a tracing solution that can help increase your observability.

  • longhorn

    Cloud-Native distributed storage built on and for Kubernetes

  • Longhorn

  • litmus

    Litmus helps SREs and developers practice chaos engineering in a Cloud-native way. Chaos experiments are published at the ChaosHub (https://hub.litmuschaos.io). Community notes is at https://hackmd.io/a4Zu_sH4TZGeih-xCimi3Q

  • LitmusChaos, is a platform that helps you to run Chaos Engineering in your cluster to identify weaknesses and improvement opportunities.

  • keda

    KEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes

  • The HPA will use by default only basic metrics like CPU and memory. If you implement your own metrics, you might want to switch the autoscaling to use those metrics instead. To achieve this, the most recommended tool would be to rely on the KEDA controller. This grants you more advanced options for horizontal autoscaling. To use it, you should install it via Helm, and then you can use it by replacing the HorizontalPodAutoscaler object with their ScaledObject custom object.

  • karpenter-provider-aws

    Karpenter is a Kubernetes Node Autoscaler built for flexibility, performance, and simplicity.

  • Karpenter, is a cluster autoscaling solution that, for the moment, only works with AWS infrastructure, but helps you increase the number of nodes automatically depending on your Pods requirements.

  • Grafana

    The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.

  • We need a way of monitoring our cluster, the most recommended stack (but not the only one) is Prometheus, Alert Manager and Grafana. Prometheus is a monitoring system, and Grafana is a visualization system that can work as the frontend for Prometheus. The Prometheus community provides and easy way to install these tools via the Kube Prometheus Stack. This chart has many parameters you can configure, so we will not get into much detail here. The easiest way to install it is the following:

  • fluent-bit

    Fast and Lightweight Logs and Metrics processor for Linux, BSD, OSX and Windows

  • FluentBit, is a logging processor that can help you to push all of your application logs to a central location like an ElasticSearch or OpenSearch cluster.

  • falco

    Cloud Native Runtime Security

  • Falco, is a security project that can help you detect threats from within your cluster.

  • argo-cd

    Declarative Continuous Deployment for Kubernetes

  • ArgoCD, a declarative tool to continuous delivery your applications via the GitOps way to K8s. Argo has other projects like Workflows or Rollouts very interesting as well.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Clusters Are Cattle Until You Deploy Ingress

    16 projects | dev.to | 30 May 2024
  • Go and ElasticSearch full-text search microservice in k8sπŸ‘‹βœ¨πŸ’«

    13 projects | dev.to | 16 Aug 2022
  • Building a distributed lab with an observability stack

    3 projects | /r/homelab | 7 Aug 2022
  • Building my first Monitoring stack - Security concerns

    5 projects | /r/PrometheusMonitoring | 30 Apr 2022
  • Processing large datasets from mongodb in realtime

    1 project | /r/golang | 30 Jul 2021