Bring Your Own Cluster (HELM)
If you already have a cluster ready to deploy the Sandbox apps set to, you can do so with Helm.
If you're installing on a local Kind cluster, check the Quick Start guide for local cluster specific instructions.
0. Pre-Requisites
See the guide for Common Sandbox Pre-Reqs for the set of parameters you'll need to have available.
In short, they include:
clusterDomain: # e.g. yourdomain.com
clusterIngressIP: # e.g. 1.2.3.4
oidcClientID: # e.g. some-client-id (optional if using Local Dex)
oidcClientSecret: # e.g. some-secret-value (optional if using Local Dex)
oidcIssuerURL: # e.g. "https://login.microsoftonline.com/TENANT/v2.0" (optional if using Local Dex)
oidcPermittedEmailDomains: # e.g. "yourdomain.com" (optional if using Local Dex)
letsEncryptContactEmail: # e.g. "someone@yourdomain.com"
1. Install Helm
See the Helm Installation Guide for instructions.
2. Add the Sandbox Chart Repo
helm repo add sandbox-charts https://clhain.github.io/sandbox-helm-charts
3. Configure the installation values.yaml
We can pass a custom values.yaml file to the helm install command to set the parameters gathered in step 0 above. Copy the Example Bring Your Own Cluster Config and modify as needed.
The most common values needed look like this:
clusterDomain: # e.g. yourdomain.com
clusterIngressIP: # e.g. 1.2.3.4
oidcClientID: # e.g. some-client-id
oidcClientSecret: # e.g. some-secret-value
oidcIssuerURL: # e.g. "https://login.microsoftonline.com/TENANT/v2.0"
oidcPermittedEmailDomains: # e.g. "yourdomain.com"
letsEncryptContactEmail: # e.g. "someone@yourdomain.com"
- You can remove all
oidc*
values if you're using the included local dex IDP. - You can remove
letsEncryptContactEmail
if you've set clusterTLSEnabled=false.
4. Install The Sandbox Base Helm Chart
helm upgrade --install sandbox sandbox-charts/sandbox-base --namespace argocd --values sandbox-values.yaml --wait --atomic --create-namespace
Following that, the individual sandbox components will be installed by ArgoCD over the next 10-20 minutes. You can track the installation progress after connecting to the cluster with:
kubectl get application -n argocd
Once you see the following, you should be good to go (see verification step below):
NAME SYNC STATUS HEALTH STATUS
argo-virtual-server Synced Healthy
cert-manager Synced Healthy
grafana Synced Healthy
loki Synced Healthy
nginx-ingress Synced Healthy
nginx-mesh Synced Healthy
oauth-proxy Synced Healthy
opentelemetry-operator Synced Healthy
prometheus-operator Synced Healthy
prometheus-operator-crds Synced Healthy
sandbox-apps Synced Healthy
temppo Synced Healthy
5. Verification
If you have the argocd CLI utility installed, you can use it to view additional information and troubleshoot issues as needed:
1) Fetch the ArgoCD Admin Password
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
2) Port Forward ArgoCD CLI Commands
export ARGOCD_OPTS='--port-forward-namespace argocd'
3) Login To The ArgoCD Instance
argocd login --port-forward --insecure
4) View App Rollout Progress
argocd app get sandbox-apps
When complete you should see a list that looks like this (all items are Synced and Healthy/blank):
GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
Secret oauth-proxy dex-config-secret Synced secret/dex-config-secret configured
argoproj.io Application argocd cert-manager Synced Healthy application.argoproj.io/cert-manager configured
argoproj.io Application argocd nginx-ingress Synced Healthy application.argoproj.io/nginx-ingress configured
ConfigMap kube-system coredns Synced
Namespace oauth-proxy Synced
Secret oauth-proxy oauth-proxy-creds Synced
argoproj.io AppProject argocd cluster-services Synced
argoproj.io Application argocd argo-virtual-server Synced Healthy
argoproj.io Application argocd gatekeeper Synced Healthy
argoproj.io Application argocd grafana Synced Healthy
argoproj.io Application argocd loki Synced Healthy
argoproj.io Application argocd nginx-mesh Synced Healthy
argoproj.io Application argocd oauth-proxy Synced Healthy
argoproj.io Application argocd opentelemetry-operator Synced Healthy
argoproj.io Application argocd prometheus-operator Synced Healthy
argoproj.io Application argocd prometheus-operator-crds Synced Healthy
argoproj.io Application argocd sealed-secrets Synced Healthy
argoproj.io Application argocd tempo Synced Healthy
6. Access Sandbox Services
Once all services are in 'Synced, Healthy' state, and you've updated the DNS records as described here, you should be able to securely access the ArgoCD and Grafana services at:
https://argocd.YOUR_DOMAIN/
https://grafana.YOUR_DOMAIN/
If you're using the default Dex IDP, you can fetch the credentials for the admin@example.com domain from the cluster as follows:
kubectl get secret -n oauth-proxy oauth-proxy-creds -o jsonpath="{.data.admin-password}" | base64 -d; echo
Please see the troubleshooting guide for investigating issues.