Skip to main content

Helm

Deploy Expo Open OTA using Helm, a package manager for Kubernetes.

A ready-to-use Helm chart is available to deploy Expo Open OTA on your Kubernetes cluster.

Prerequisites

A running Kubernetes cluster and Helm installed on your local machine are required to deploy the application. If you are not familiar with Helm or Kubernetes, we recommend you to deploy the server with custom docker deployment or railway.

Clone the repository and navigate to the helm directory.

git clone https://github.com/axelmarciano/expo-open-ota
cd expo-open-ota/helm

Configuration

The Helm chart uses a set of configurable values defined in values.yaml. These values can be overridden by passing a custom values.yaml file when deploying the chart.

Conditional Logic for Environment Variables

The environment variables used by the application depend on the following key settings:

  • secretName: If defined, environment variables are loaded from the specified Kubernetes secret instead of being set directly.
  • storageMode:
    • s3: Requires AWS_REGION and S3_BUCKET_NAME to be set.
    • local: Requires LOCAL_BUCKET_BASE_PATH to be set.
  • keysStorageType:
    • aws-secrets-manager: Requires AWS Secrets Manager variables (AWSSM_EXPO_PUBLIC_KEY_SECRET_ID, AWSSM_EXPO_PRIVATE_KEY_SECRET_ID).
    • local: Requires local key paths (PRIVATE_LOCAL_EXPO_KEY_PATH, PUBLIC_LOCAL_EXPO_KEY_PATH).
    • environment: Requires base64-encoded keys (PUBLIC_EXPO_KEY_B64, PRIVATE_EXPO_KEY_B64).
  • useCloudfrontRedirect:
    • If true, requires CLOUDFRONT_DOMAIN, CLOUDFRONT_KEY_PAIR_ID, and a CloudFront private key (CLOUDFRONT_PRIVATE_KEY_B64, PRIVATE_CLOUDFRONT_KEY_PATH, or AWSSM_CLOUDFRONT_PRIVATE_KEY_SECRET_ID, depending on keysStorageType).
  • useAWSAccessKeys:
    • If true, requires AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set.

Deployment

To install the Helm chart with default values:

helm install expo-open-ota -n NAMESPACE ./chart

To override values, create a custom my-values.yaml file and run:

helm install expo-open-ota ./chart -n NAMESPACE -f my-values.yaml

To upgrade an existing release:

helm upgrade expo-open-ota -n NAMESPACE ./chart -f my-values.yaml

For additional configuration details, refer to the Environment Variables documentation.

Ingress Configuration

The Ingress configuration is crucial for exposing Expo Open OTA through a specific domain and must match the BASE_URL defined in the application.