Installs the yorkie-cluster, which provides cluster mode for Yorkie server to handle large amount of workloads with ensuring high availability, reliability, and scalability.
- Kubernetes 1.28+
- Helm 3+
- Istio 1.25+ (installed via Helm, see below)
If you are using Minikube, ensure it has enough resources allocated for the MongoDB sharded cluster:
minikube start --cpus=4 --memory=4096The Percona MongoDB replsets are configured with resource requests (100m CPU, 256Mi memory per shard), so the cluster needs sufficient capacity to schedule all pods.
Before installing the chart, install Istio using Helm.
# Add Istio Helm repository
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update
# Create namespaces
kubectl create namespace istio-system
kubectl create namespace yorkie
# 1. Install Istio base (CRDs)
helm install istio-base istio/base -n istio-system \
-f build/charts/yorkie-cluster/istio-values/base.yaml
# 2. Install istiod (control plane)
helm install istiod istio/istiod -n istio-system --wait \
-f build/charts/yorkie-cluster/istio-values/istiod.yaml
# 3. Install yorkie-gateway
helm install yorkie-gateway istio/gateway -n yorkie --wait \
-f build/charts/yorkie-cluster/istio-values/gateway.yamlhelm repo add yorkie-team https://yorkie-team.github.io/yorkie/helm-charts
helm repo updateSee helm repo for command documentation.
# Uses pre-configured development credentials (clearly marked as dev-only)
helm install [RELEASE_NAME] yorkie-team/yorkie-cluster --namespace yorkieUse --set flags (Recommended)
# Generate strong random passwords
helm install [RELEASE_NAME] yorkie-team/yorkie-cluster --namespace yorkie \
--set mongodb.credentials.databaseAdmin.password="$(openssl rand -base64 32)" \
--set mongodb.credentials.userAdmin.password="$(openssl rand -base64 32)" \
--set mongodb.credentials.clusterAdmin.password="$(openssl rand -base64 32)"Install Yorkie cluster with MongoDB deployed by Percona Operator:
Important
Setting namespace is needed to ensure MongoDB is deployed in the same namespace with Yorkie cluster.
# Install yorkie cluster with MongoDB
helm install [RELEASE_NAME] yorkie-team/yorkie-cluster --namespace yorkie \
--set mongodb.credentials.databaseAdmin.password="<your-password>" \
--set mongodb.credentials.userAdmin.password="<your-password>" \
--set mongodb.credentials.clusterAdmin.password="<your-password>"Install Yorkie cluster using an external MongoDB instance:
# Install yorkie cluster with external MongoDB
helm install [RELEASE_NAME] yorkie-team/yorkie-cluster \
--set yorkie.args.dbConnectionUri="mongodb://mongodb.mongodb.svc.cluster.local:27017"See configuration below for custom installation
See helm install for command documentation.
helm uninstall [RELEASE_NAME] --namespace yorkieThis removes all the Kubernetes components associated with the chart and deletes the release.
See helm uninstall for command documentation.
Also, uninstall Istio components:
helm uninstall yorkie-gateway -n yorkie
helm uninstall istiod -n istio-system
helm uninstall istio-base -n istio-system
kubectl delete namespace istio-system
kubectl delete namespace yorkiehelm upgrade [RELEASE_NAME] yorkie-team/yorkie-clusterWith Helm v3, CRDs created by this chart are not updated by default and should be manually updated. Consult also the Helm Documentation on CRDs.
See helm upgrade for command documentation.
If you are upgrading from a previous installation that used istioctl install
with IstioOperator, follow the revision-based canary upgrade approach:
-
Install the new Istio control plane via Helm with a revision tag:
helm install istiod-1-25 istio/istiod -n istio-system \ --set revision=1-25 \ -f build/charts/yorkie-cluster/istio-values/istiod.yaml
-
Deploy a new gateway for the new revision:
helm install yorkie-gateway-1-25 istio/gateway -n yorkie \ --set revision=1-25 \ -f build/charts/yorkie-cluster/istio-values/gateway.yaml
-
Switch workloads to the new revision:
kubectl label namespace yorkie istio.io/rev=1-25 --overwrite kubectl rollout restart deployment -n yorkie
-
Verify traffic routing, consistent hashing, and ALB health checks.
-
Remove the old Istio 1.17 control plane:
istioctl uninstall --revision default kubectl delete istiooperator -n istio-system --all
See Customizing the Chart Before Installing. To see all configurable options with detailed comments:
helm show values yorkie-team/yorkie-clusterYou may also helm show values on this chart's dependencies for additional options.