Kubernetes manifests for deploying Corridor Platform with Kustomize.
- Get the docker credentials from the Corridor Team - Contact support@corridorplatforms.com
- Create a kubernetes secret with the docker credentials
- Deploy the services (Note: For more customized setups, check the Configurations section below)
- Verify the rollout
# 1. Copy the provided docker credentials json file to /tmp/corridor-registry-key.json (or a preferred path)
# 2. Create a kubernetes secret with the docker credentials
kubectl create secret docker-registry corridor-registry-secret \
--docker-server=us-central1-docker.pkg.dev \
--docker-username=_json_key \
--docker-password="$(cat /tmp/corridor-registry-key.json)" \
--namespace corridor
# 3. Deploy the services (NOTE: Use --dry-run=server for safety)
kubectl apply -k shared/redis
kubectl apply -k overlays/corridor
# 4. Verify rollout
kubectl get pods -n corridor
kubectl get svc -n corridor
kubectl get ingress -n corridor
kubectl get pods -n shared
kubectl get svc -n sharedThe deployment architecture is the following:
corridor-app: Primary API and Web application which serves the platform pagescorridor-worker: Background worker process for heavy execution taskscorridor-jupyter: Jupyter/JupyterHub-facing service for ad-hoc analytics- Shared persistent volumes for data, uploads, notebooks, Jupyter state, and backups
- A single ingress which routes
/to the app-service and/jupyterto jupyter-service
This repo is cloud agnostic.
It can be used on any Kubernetes cluster, including managed Kubernetes offerings such as GKE from Google Cloud, EKS from AWS, AKS from Azure, OpenShift from RedHat, etc.
base/ Reusable application manifests
shared/redis/ Shared Redis deployment for one or more Corridor environments
overlays/corridor/ Minimal deployable overlay with placeholder configuration
It is possible to host multiple instances of corridor - for example:
overlays/prod, overlays/staging, overlays/dev. Or overlays/team1 and /overlays/team2
Feel free to configure the kubernetes setup based on your needs. Some common configurations are:
- By default the
kustomization.yamluses thelatesttag. To use a older version of Corridor, set the docker image tag inoverlays/corridor/kustomization.yaml>newTagvariable. - Set the public hostname based on your egress domain name in
overlays/corridor/kustomization.yaml - Set database, Redis, and application-specific settings in
overlays/corridor/configs/api_config.py - If your cluster uses a different RWX storage class, update the PVC patches in
overlays/corridor/kustomization.yaml. - Configure TLS secret keys etc in
base/ingress.yaml - Configure other nginx configs like gzip/timeout etc. in
base/ingress.yaml - Change Memory requests and limits in the respective
base/*.yamlfiles for that service.
My pod is showing ImagePullBackOff
If your pod events show ImagePullBackOff or registry authorization errors -> The
image authentication is likely the culprit. Double check if the correct docker credentials
are added to the kubernetes secret
App is taking a long time to start
The app deployment runs a database migration in an init container before the main API starts. This can be decoupled to reduce restart time.