Helm Chart
The Cartesian Outpost can be deployed on Kubernetes using our official Helm chart. This method is recommended for Kubernetes environments and provides advanced deployment options, including autoscaling and custom resource management.
Chart Repository
The Helm chart is available on Amazon's Elastic Container Registry:
public.ecr.aws/cartesian/outpost
You can browse available versions at the AWS ECR Gallery.
Prerequisites
- Kubernetes 1.32+ (might work on earlier versions)
- Helm 3.x
- A Redis or Valkey cache instance (required for multi-instance deployments)
Installing the Chart
- Add the Cartesian Helm repository:
helm repo add cartesian public.ecr.aws/cartesian/outpost
helm repo update
- Install the chart:
helm install my-outpost cartesian/outpost \
--set config.outpostProjectId=your-project-id \
--set config.outpostAccessKey.value=your-access-key
Configuration
The following table lists the configurable parameters of the Outpost chart and their default values.
Core Configuration
Parameter | Description | Default |
---|---|---|
replicaCount | Number of Outpost replicas | 1 |
image.repository | Outpost container image | public.ecr.aws/cartesian/outpost-backend |
image.pullPolicy | Image pull policy | IfNotPresent |
image.tag | Image tag | The current chart appVersion |
Outpost Configuration
Parameter | Description | Default |
---|---|---|
config.outpostProjectId | Project ID (provided by Cartesian) | N/A |
config.outpostAccessKey.value | Outpost access key | N/A |
config.outpostAccessKey.createSecret | Create a Kubernetes secret for the access key | false |
config.outpostAccessKey.secretName | Name of existing secret for access key | N/A |
config.enableErrorMonitoring | Enable error monitoring telemetry to be sent to Cartesian | false |
config.enableTelemetry | Enable telemetry metrics to be sent to Cartesian | false |
Cache Configuration
Parameter | Description | Default |
---|---|---|
config.cache.enabled | Enable Redis/Valkey cache | false |
config.cache.host | Cache host | N/A |
config.cache.port | Cache port | N/A |
config.cache.password.value | Cache password | N/A |
config.cache.password.createSecret | Create a Kubernetes secret for cache password | false |
config.cache.password.secretName | Name of existing secret for cache password | N/A |
AWS Bedrock Configuration
Parameter | Description | Default |
---|---|---|
config.bedrock.awsRegion | AWS Region | us-east-1 |
config.bedrock.credentials.createSecret | Create secrets for the credentials | false |
config.bedrock.credentials.values.awsAccessKeyId | AWS Access Key ID | N/A |
config.bedrock.credentials.values.awsSecretAccessKey | AWS Secret Access Key | N/A |
Networking
Parameter | Description | Default |
---|---|---|
service.type | Kubernetes service type | ClusterIP |
service.port | Service port | 3001 |
ingress.enabled | Enable ingress | false |
ingress.className | Ingress class name | N/A |
Scaling and Resources
Parameter | Description | Default |
---|---|---|
autoscaling.enabled | Enable autoscaling | false |
autoscaling.minReplicas | Minimum replicas | 1 |
autoscaling.maxReplicas | Maximum replicas | 100 |
autoscaling.targetCPUUtilizationPercentage | Target CPU utilization | 80 |
Example Configurations
Basic Installation
# values.yaml
config:
outpostProjectId: 'your-project-id'
outpostAccessKey:
value: 'your-access-key'
Production Setup with Cache
# values.yaml
replicaCount: 2
config:
outpostProjectId: 'your-project-id'
outpostAccessKey:
createSecret: true
value: 'your-access-key'
cache:
enabled: true
host: 'redis.default.svc.cluster.local'
port: '6379'
password:
createSecret: true
value: 'your-redis-password'
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 5
targetCPUUtilizationPercentage: 80
ingress:
enabled: true
className: nginx
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt
hosts:
- host: outpost.your-domain.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: outpost-tls
hosts:
- outpost.your-domain.com
Health Monitoring
The chart includes pre-configured liveness and readiness probes that check the /health
endpoint. The default configuration is:
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 5
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 5
Upgrading
To upgrade an existing installation:
helm repo update
helm upgrade my-outpost cartesian/outpost -f values.yaml
Uninstalling
To uninstall/delete the deployment:
helm uninstall my-outpost
Notes
-
For production deployments:
- Enable autoscaling for high availability
- Configure appropriate resource requests and limits
- Use secrets for sensitive information
- Enable and configure ingress with TLS
- Set up proper monitoring and alerting
-
Security considerations:
- Store sensitive values in Kubernetes secrets
- Use TLS for ingress
- Configure network policies to restrict access
- Regular updates and security patches