Helm Deployment
Deploy Governance Studio to a Kubernetes cluster.
Overview
Section titled “Overview”This guide covers deploying the Governance Platform to a Kubernetes cluster after:
- Preparing
values.yamlandsecrets.yamlfiles - Provisioning all external cloud resources (storage, key management, authentication)
- Setting up the Kubernetes cluster with required components
Prerequisites
Section titled “Prerequisites”Before deploying, ensure the following are available:
- Kubernetes 1.21+ cluster
- Helm 3.8+ (installation guide)
- kubectl configured to access the cluster
- Persistent volume provisioner available in the cluster
- NGINX Ingress Controller installed (installation guide)
- cert-manager installed (installation guide)
- Certificate Issuer configured (e.g. Let’s Encrypt ClusterIssuer) (configuration guide)
- Domain name with ability to configure DNS A records
- Completed
values.yamlandsecrets.yamlfiles from previous setup steps
Step 1: Create Kubernetes Namespace
Section titled “Step 1: Create Kubernetes Namespace”Create a dedicated namespace for the Governance Platform:
# Create namespacekubectl create namespace governance
# Set as default context (optional)kubectl config set-context --current --namespace=governanceStep 2: Deploy with Helm
Section titled “Step 2: Deploy with Helm”Authenticate to GitHub Container Registry
Section titled “Authenticate to GitHub Container Registry”helm registry login ghcr.ioEnter GitHub username and personal access token when prompted.
Deploy the Platform
Section titled “Deploy the Platform”Replace <chart-version> with the governance-platform chart version recorded in
the release manifest for the platform version you are deploying.
helm upgrade --install governance-platform \ oci://ghcr.io/eqtylab/charts/governance-platform \ --version <chart-version> \ --namespace governance \ --create-namespace \ --values values.yaml \ --values secrets.yaml \ --wait \ --timeout 10mAlways pass --version. Without it Helm installs whichever chart version is newest
in the registry, which may not be the version your values, images, and release
manifest were validated against.
Note: Run the same command to upgrade after changing values or deploying a new
version, updating --version to the target release.
Monitor Deployment
Section titled “Monitor Deployment”kubectl get pods -n governance -whelm status governance-platform -n governanceVerify Deployment
Section titled “Verify Deployment”Check Pods and Services
Section titled “Check Pods and Services”kubectl get pods -n governancekubectl get svc -n governancekubectl get ingress -n governanceAll pods should show Running status and Ready state.
Verify TLS Certificates
Section titled “Verify TLS Certificates”kubectl get certificates -n governancekubectl describe certificate <cert-name> -n governanceIf certificates are not issuing:
- Check ClusterIssuer status:
kubectl describe clusterissuer letsencrypt-prod - Check certificate events:
kubectl describe certificate <cert-name> -n governance - Check cert-manager logs:
kubectl logs -n ingress-nginx -l app=cert-manager
Configure DNS
Section titled “Configure DNS”Get the external IP of the ingress controller:
kubectl get svc -n ingress-nginxCreate a DNS A record pointing the configured domain to the LoadBalancer’s external IP address. The domain should match what was configured in values.yaml for the ingress hosts.
Troubleshooting
Section titled “Troubleshooting”If pods fail to start, check the logs:
kubectl get pods -n governancekubectl logs <pod-name> -n governancekubectl describe pod <pod-name> -n governanceCommon issues:
- ImagePullBackOff: Check image tags in
values.yamland registry access - CrashLoopBackOff: Check pod logs for application errors
- Pending PVCs: Verify persistent volume provisioner is available
- Database connection errors: Verify database credentials in
secrets.yaml
Access the Platform
Section titled “Access the Platform”Once DNS propagates, access Governance Studio at the configured domain. The platform will redirect to the configured identity provider for authentication.
Uninstalling
Section titled “Uninstalling”To completely remove the platform:
# Uninstall the Helm releasehelm uninstall governance-platform -n governance
# Delete the namespace (optional)kubectl delete namespace governanceWarning: This will delete all data stored in Kubernetes. External resources (S3 buckets, KMS keys, Entra apps) must be deleted separately.
Next Steps
Section titled “Next Steps”- Review the Chart Values documentation for customization options
- Set up monitoring and alerting
- Configure backups for the PostgreSQL database
- Review security best practices for your deployment