Manual Kubernetes Deployment
Manual deployment installs each AI/Run CodeMie component individually using Helm charts. All three cloud providers are supported: AWS (EKS), GCP (GKE), and Azure (AKS).
Use manual deployment when you need fine-grained control over individual component configuration, want to selectively deploy certain components, or are troubleshooting specific services.
For automated installation, see Automated Deployment instead.
Component Installation Order
Components must be installed in the following order to satisfy dependencies:
| Step | Component | Purpose |
|---|---|---|
| 1 | Kubernetes Components | Storage Class + Nginx Ingress Controller |
| 2 | Data Layer | Elasticsearch + PostgreSQL connection |
| 3 | Security and Identity | Keycloak Operator, Keycloak, OAuth2 Proxy |
| 4 | Plugin Engine | NATS, NATS Auth Callout |
| 5 | Core Components | CodeMie API, UI, MCP Connect, Mermaid |
| 6 | Observability | Fluent Bit, Kibana, Kibana Dashboards |
Installing components out of order will cause deployment failures. Always follow the numbered sequence to ensure dependencies are satisfied.
Prerequisites
Verification Checklist
- AWS
- Azure
- GCP
- Infrastructure Deployed: Completed Infrastructure Deployment phase
- Cluster Access:
kubectlconfigured for EKS cluster (see Cluster Access) - Container Registry:
gcp-artifact-registrypull secret exists (see Container Registry Access) - Helm Installed: Helm 3.16.0+
- Repository Cloned:
codemie-helm-chartsavailable locally - Deployment Outputs: Have
deployment_outputs.envfrom infrastructure deployment - Tools:
kubectl,helm,gcloudCLI,awsCLI
- Infrastructure Deployed: Completed Infrastructure Deployment phase
- Cluster Access: Connected to Jumpbox VM and
kubectlconfigured for AKS (see Cluster Access) - Container Registry:
gcp-artifact-registrypull secret exists (see Container Registry Access) - Helm Installed: Helm 3.16.0+
- Repository Cloned:
codemie-helm-chartsavailable locally - Deployment Outputs: Have
deployment_outputs.envfrom infrastructure deployment - Tools:
kubectl,helm,gcloudCLI,azCLI
- Infrastructure Deployed: Completed Infrastructure Deployment phase
- Cluster Access: Connected to Bastion Host (private cluster) or
kubectlconfigured for GKE (see Cluster Access) - Container Registry:
gcp-artifact-registrypull secret exists (see Container Registry Access) - Helm Installed: Helm 3.16.0+
- Repository Cloned:
codemie-helm-chartsavailable locally - Tools:
kubectl,helm,gcloudCLI
Getting Started
Step 1: Clone Repository
git clone git@gitbud.epam.com:epm-cdme/codemie-helm-charts.git
cd codemie-helm-charts
Step 2: Configure Cloud-Specific Values
- AWS
- Azure
- GCP
source deployment_outputs.env
sed -i "s/%%DOMAIN%%/${CODEMIE_DOMAIN_NAME}/g" codemie-api/values-aws.yaml
sed -i "s/%%AWS_DEFAULT_REGION%%/${AWS_DEFAULT_REGION}/g" codemie-api/values-aws.yaml
sed -i "s|%%EKS_AWS_ROLE_ARN%%|${EKS_AWS_ROLE_ARN}|g" codemie-api/values-aws.yaml
sed -i "s/%%AWS_KMS_KEY_ID%%/${AWS_KMS_KEY_ID}/g" codemie-api/values-aws.yaml
sed -i "s/%%AWS_S3_BUCKET_NAME%%/${AWS_S3_BUCKET_NAME}/g" codemie-api/values-aws.yaml
sed -i "s/%%AWS_S3_REGION%%/${AWS_S3_REGION}/g" codemie-api/values-aws.yaml
CODEMIE_DOMAIN_NAME="airun.example.com"
find . -name "values-aws.yaml" -exec sed -i "s/%%DOMAIN%%/${CODEMIE_DOMAIN_NAME}/g" {} \;
CODEMIE_DOMAIN_NAME="airun.example.com"
find . -name "values-azure.yaml" -exec sed -i "s/private.lab.com/$CODEMIE_DOMAIN_NAME/g" {} \;
DOMAIN="airun.example.com"
PROJECT_ID="my-gcp-project"
REGION="europe-west3"
find . -name "values-gcp.yaml" -exec sed -i "s/%%DOMAIN%%/$DOMAIN/g" {} \;
sed -i "s/%%GOOGLE_PROJECT_ID%%/$PROJECT_ID/g" codemie-api/values-gcp.yaml
sed -i "s/%%GOOGLE_REGION%%/$REGION/g" codemie-api/values-gcp.yaml
sed -i "s/%%GOOGLE_KMS_PROJECT_ID%%/$PROJECT_ID/g" codemie-api/values-gcp.yaml
sed -i "s/%%GOOGLE_KMS_REGION%%/$REGION/g" codemie-api/values-gcp.yaml
Also create the GCP service account key file:
- Open IAM & Admin in Google Cloud Console
- Locate the
codemie-gsaservice account - Create and download a new JSON key
- Save as
codemie-helm-charts/codemie-gsa-key.json
Step 3: Authenticate to Container Registry
export GOOGLE_APPLICATION_CREDENTIALS=key.json
gcloud auth application-default print-access-token | \
helm registry login -u oauth2accesstoken --password-stdin europe-west3-docker.pkg.dev
Step 4: Get CodeMie Version
bash get-codemie-latest-release-version.sh -c key.json
# Note the version (e.g., 2.26.0) — you will use it in each helm install command
Begin Installation
Start the installation process with Kubernetes Components and follow each guide in numbered order.