You are looking at the documentation of a prior release. To read the documentation of the latest release, please visit here.

Using ArgoCD

KubeDB can be deployed via ArgoCD using the Helm chart support for Application resources. Deploy the following Application manifests in order to your ArgoCD cluster.

Ready-to-use Application manifests for KubeDB and the rest of the AppsCode stack (e.g. kubestash, kubevault, stash, panopticon, monitoring-operator) are maintained in the appscode/gitops repository. Install ace-user-roles and license-proxyserver first, then pick whichever component manifests you need from there.

1. Install ace-user-roles

The ace-user-roles chart provisions the cluster roles required by KubeDB and related operators. Create the following ArgoCD Application:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: ace-user-roles
  namespace: argocd
spec:
  destination:
    namespace: kubeops
    server: https://kubernetes.default.svc
  project: default
  source:
    chart: ace-user-roles
    helm:
      values: |
        enableClusterRoles:
          ace: false
          appcatalog: true
          catalog: false
          cert-manager: false
          kubedb: true
          kubedb-ui: false
          kubestash: true # enable if used
          kubevault: true # enable if used
          license-proxyserver: true
          metrics: true
          prometheus: false
          secrets-store: false
          stash: true # enable if used
          virtual-secrets: false
        annotations:
          "helm.sh/hook": null
          "helm.sh/hook-delete-policy": null        
    repoURL: ghcr.io/appscode-charts
    targetRevision: v2026.2.16
  syncPolicy:
    automated: {}
    syncOptions:
    - CreateNamespace=true

2. Install license-proxyserver

The license-proxyserver chart distributes license tokens to KubeDB and other AppsCode operators inside the cluster. Before applying the manifest below, generate an online license-proxyserver token by following the License Proxyserver guide and replace the placeholder token value with it.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: license-proxyserver
  namespace: argocd
spec:
  project: default
  source:
    chart: license-proxyserver
    repoURL: ghcr.io/appscode-charts
    targetRevision: v2026.2.16
    helm:
      values: |
        platform:
          baseURL: https://appscode.com
          token: '****************************************'        
  destination:
    server: "https://kubernetes.default.svc"
    namespace: kubeops
  syncPolicy:
    automated: {}
    syncOptions:
    - CreateNamespace=true

  ignoreDifferences:
  - jsonPointers:
    - /data
    kind: Secret
    name: license-proxyserver-apiserver-cert
    namespace: kubeops
  - group: apiregistration.k8s.io
    kind: APIService
    name: v1alpha1.proxyserver.licenses.appscode.com
    jsonPointers:
    - /spec/caBundle

3. Install KubeDB

Finally, deploy the KubeDB operators themselves. The ace-user-roles sub-chart is disabled here because it was already installed in the first step.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kubedb
  namespace: argocd
spec:
  project: default
  source:
    chart: kubedb
    repoURL: ghcr.io/appscode-charts
    targetRevision: v2026.6.18-rc.2
    helm:
      values: |
        ace-user-roles:
          enabled: false        
  destination:
    server: "https://kubernetes.default.svc"
    namespace: kubedb
  syncPolicy:
    automated: {}
    syncOptions:
    - CreateNamespace=true

  ignoreDifferences:
  - jsonPointers:
    - /data
    kind: Secret
    name: kubedb-kubedb-webhook-server-cert
    namespace: kubedb
  - jsonPointers:
    - /data
    kind: Secret
    name: kubedb-petset-cert
    namespace: kubedb
  - jsonPointers:
    - /data
    kind: Secret
    name: kubedb-sidekick-cert
    namespace: kubedb

  - group: admissionregistration.k8s.io
    kind: MutatingWebhookConfiguration
    name: mutators.petset.appscode.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: MutatingWebhookConfiguration
    name: mutators.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: MutatingWebhookConfiguration
    name: mutators.autoscaling.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: MutatingWebhookConfiguration
    name: mutators.elasticsearch.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: MutatingWebhookConfiguration
    name: mutators.schema.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle

  - group: admissionregistration.k8s.io
    kind: ValidatingWebhookConfiguration
    name: validators.autoscaling.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: ValidatingWebhookConfiguration
    name: validators.elasticsearch.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: ValidatingWebhookConfiguration
    name: validators.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: ValidatingWebhookConfiguration
    name: validators.ops.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: ValidatingWebhookConfiguration
    name: validators.petset.appscode.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle
  - group: admissionregistration.k8s.io
    kind: ValidatingWebhookConfiguration
    name: validators.schema.kubedb.com
    jqPathExpressions:
    - .webhooks[].clientConfig.caBundle

  - group: apps
    kind: StatefulSet
    name: kubedb-kubedb-autoscaler
    namespace: kubedb
    jsonPointers:
    - /spec/template/metadata/annotations/reload
  - group: apps
    kind: StatefulSet
    name: kubedb-kubedb-ops-manager
    namespace: kubedb
    jsonPointers:
    - /spec/template/metadata/annotations/reload
  - group: apps
    kind: StatefulSet
    name: kubedb-kubedb-provisioner
    namespace: kubedb
    jsonPointers:
    - /spec/template/metadata/annotations/reload
  - group: apps
    kind: Deployment
    name: kubedb-kubedb-webhook-server
    namespace: kubedb
    jsonPointers:
    - /spec/template/metadata/annotations/reload
  - group: apps
    kind: Deployment
    name: kubedb-petset
    namespace: kubedb
    jsonPointers:
    - /spec/template/metadata/annotations/reload
  - group: apps
    kind: Deployment
    name: kubedb-sidekick
    namespace: kubedb
    jsonPointers:
    - /spec/template/metadata/annotations/reload

To see the detailed configuration options for each chart, visit the AppsCode Charts repository.

Next: enable database engines and verify the installation.