Deploy Pulse-IT on Kubernetes
1. Requirements:
1.1 Kubernetes Cluster:
-
Version: 1.31
-
Metrics Server needs to be installed and enabled on the cluster. See the official Metrics Server documentation for installation instructions.
-
NGINX Ingress Controller should be installed on the cluster to manage routing and ingress. Follow the official NGINX Ingress Controller documentation for installation instructions.
1.2 External services:
Note: Database, RabbitMQ, and Redis are not included in the Pulse-IT Helm Chart. You need to deploy these services separately.
- Postgres 16.x from RDS Database
- RabbitMQ 3.13.x from Amazon MQ
- Redis 6.2. from Amazon ElastiCache
1.3 Kubernetes tools
- kubectl configured to connect with the EKS Cluster
- Helm
1.4 Dedicated namespace for embrace
Pulse-IT should be deployed on a dedicated namespace named embrace
. Use the following command to create the namespace:
kubectl create namespace embrace
1.5 Service Account for emb-app
The emb-app-sa
service account must be created in the embrace
namespace. Use the following command to create the
service account:
kubectl create serviceaccount emb-app-sa -n embrace
1.6 Embrace credentials for DockerHub saved on cluster secret
The Embrace images are kept in a private repository. To retrieve the images, you'll need to store the Embrace repository credentials in a Kubernetes secret. For detailed instructions, please consult the official Kubernetes documentation
kubectl create secret docker-registry emb-registry-cred --docker-server=https://index.docker.io/v1/ --docker-username=embracecustomer --docker-password=<password> -n embrace
2. Deploy Pulse-IT with Helm
2.1 Edit values to match with your environment:
- Create a new file named values.local.yml next to the Pulse-IT Chart
touch values.<my_env>.yaml
Replace
<my_env>
with an environment name of your choice
- Copy these minimal configurations into values.local.yaml by Replacing
<...>
to match with your environment values
# values.<my_env>.yaml
imagePullSecrets:
- name: emb-registry-cred
kubernetesHostType: "kubernetes"
database:
host: "<database-host-address>"
port: "5432"
name: "ait_factory"
redis:
host: "<redis-host-address>"
port: "6379"
embApp:
replicasCount: 1
serviceAccount:
create: false
user: emb-app-sa
name: emb-app-sa
annotations: {
}
service:
type: ClusterIP
serviceAnnotations: {
}
embDbg:
debgguerSvc:
type: ClusterIP
serviceAnnotations: {
}
embAppNginx:
serviceNginx:
type: ClusterIP
serviceAnnotations: {
}
secrets:
provider: kubernetes
kubernetes:
database:
user: <database-user>
password: <database-password>
su:
username: <pulse-it-super-user-username>
password: <pulse-it-super-user-password>
rabbitmq:
username: <rabbitmq-username-if-any>
password: <rabbitmq-password-if-any>
redis:
username: <redis-username-if-any>
password: <redis-password-if-any>
ingress:
enabled: true
tlsEnabled: false
className: "nginx"
annotations: {
}
conf:
debug: "false"
logLevel: "INFO"
protocol: "http"
hostName: "<pulse-it-hostname>"
kubernetesHost: "https://kubernetes.default.svc"
kubernetesCluster: "<kubernetes-cluster-name>"
timeZone: "Europe/Paris"
WebSocketTimeout: "60"
NodeMaxDayLogs: "6"
ChannelLayerCapacity: "10000"
ChannelLayerHttpRequestCapacity: "5000"
ChannelLayerWebSocketSendCapacity: "10000"
PlannedWorkflowProcessorsCount: "4"
WorkflowEventsProcessorsCount: "4"
sslEnabled: "False"
storage:
enabled: false
2.2 Deploy Pulse-IT using Helm
helm install <my-release> \
oci://registry-1.docker.io/embracemedia/pulse_it_chart \
--version 4.2.2306 \
--values=values.local.yaml \
-n embrace
<my-release>
can be replaced by "pulse-it" as release name for example.Replace 4.2.2306 by latest stable Pulse-IT release.
2.3 Verify installation:
After running helm install, Pulse-IT components should be created on the Kubernetes cluster. These components can be listed using this command:
kubectl get pods -n embrace
Output:
NAME READY STATUS RESTARTS AGE
pod/emb-app-79666d6bdc-xjt9q 2/2 Running 0 25h
pod/emb-celery-beat-7776d9844-8jnd9 1/1 Running 0 25h
pod/emb-celery-worker-5c56574788-bzn6z 1/1 Running 0 25h
pod/emb-dbg-7b697c686f-v2s6g 1/1 Running 0 25h
...