Before proceeding, ensure you have the following prerequisites in place:
Create two kubernetes node groups (for application & analysis workloads) and label the nodes in the node groups (eg: workload: deepsource-application & workload: deepsource-analysis)
The minimum specifications for the nodes are as follows:
All the values with changeme as the default value must be changed and are considered a security risk if left unchanged.
Wherever applicable, If you have a value that contains newlines (for example, a private key), use a multi-line literal style yaml string (starts with |).
The Persistent Volumes (PVs) don't get cleaned up automatically when the chart is uninstalled. You need to manually delete the PVs if you want to clean up the data.
Global configuration creation parameters
Name
Description
Value
global.secret.create
Determines whether to create a secret. Set to true to create. Set to false if you want to manage secrets yourself (using the external-secrets operator, for example).
true
global.cm.create
Determines whether to create a configuration map. Set to true to create. Do not set it to false unless you really know what you are doing.
true
Cluster Settings configuration parameters
Analysis node group configuration parameters
Name
Description
Value
global.clusterSettings.analysis.namespace
Namespace for analysis jobs
deepsource-analysis
global.clusterSettings.analysis.nodeSelector
Node selector for analysis nodes
{}
global.clusterSettings.analysis.tolerations
Tolerations for analysis nodes
{}
global.clusterSettings.analysis.affinity
Affinity settings for analysis nodes
{}
Application node group configuration parameters
Name
Description
Value
global.clusterSettings.application.namespace
Namespace for application
deepsource-application
global.clusterSettings.application.nodeSelector
Node selector for application nodes
{}
global.clusterSettings.application.tolerations
Tolerations for application nodes
{}
global.clusterSettings.application.affinity
Affinity settings for application nodes
{}
Version Control System (VCS) configuration parameters
Github configuration parameters
Name
Description
Value
global.vcs.github.enabled
Determines whether GitHub integration is enabled. Learn how to configure the application here.
false
global.vcs.github.secret.appId
The App ID for your GitHub App. You can find this in your GitHub App settings.
""
global.vcs.github.secret.appSlug
GitHub generates a slug for each app based on its name. It is the last part of the public link of your app.
""
global.vcs.github.secret.clientId
The Client ID for your GitHub App.
""
global.vcs.github.secret.secretKey
The client secret for your GitHub App.
""
global.vcs.github.secret.webhookSecret
Enter the webhook secret you supplied while creating the app.
""
global.vcs.github.secret.privateKey
After creating the app, generate a private key for token requests and paste it here as a multi-line literal style yaml string
""
Github Enterprise configuration parameters
Name
Description
Value
global.vcs.githubEnterprise.enabled
Determines whether GitHub Enterprise integration is enabled. Learn how to configure the application here.
false
global.vcs.githubEnterprise.secret.hostDomain
Enter the hostname of your GitHub instance, e.g., github.example.com.
""
global.vcs.githubEnterprise.secret.appId
The App ID for your GitHub Enterprise App.
""
global.vcs.githubEnterprise.secret.appSlug
GitHub generates a slug for each app based on its name. It is the last part of the public link of your app.
""
global.vcs.githubEnterprise.secret.clientId
The Client ID for your GitHub Enterprise App.
""
global.vcs.githubEnterprise.secret.secretKey
The client secret for your GitHub Enterprise App.
""
global.vcs.githubEnterprise.secret.webhookSecret
Enter the webhook secret you supplied while creating the app.
""
global.vcs.githubEnterprise.secret.privateKey
After creating the app, generate a private key for token requests and paste it here as a multi-line literal style yaml string
""
Gitlab configuration parameters
Name
Description
Value
global.vcs.gitlab.enabled
Determines whether GitLab integration is enabled. Learn how to configure the application here.
false
global.vcs.gitlab.cm.version
Set the Gitlab Server version you are currently using, if it is the self-hosted version.
""
global.vcs.gitlab.secret.hostDomain
Enter the hostname of your GitLab instance, e.g., gitlab.example.com.
""
global.vcs.gitlab.secret.appId
Enter the generated Application ID for your GitLab App.
""
global.vcs.gitlab.secret.appName
The name of your GitLab App.
""
global.vcs.gitlab.secret.appSecret
Secret generated by GitLab on creation of the app.
""
global.vcs.gitlab.secret.webhookSecret
Enter a desired webhook secret for GitLab. Ensure that the secret matches the value you configured here.
changeme
Bitbucket configuration parameters
Name
Description
Value
global.vcs.bitbucket.enabled
Determines whether Bitbucket integration is enabled. Learn how to configure the application here.
false
global.vcs.bitbucket.secret.addonClientId
The client ID of your Bitbucket app.
""
global.vcs.bitbucket.secret.addonSecret
The secret of your Bitbucket app.
""
global.vcs.bitbucket.secret.oAuthClientId
The Bitbucket OAuth consumer key.
""
global.vcs.bitbucket.secret.oAuthSecret
The Bitbucket OAuth consumer secret.
""
Bitbucket Data Center configuration parameters
Name
Description
Value
global.vcs.bitbucketDataCenter.enabled
Determines whether Bitbucket Data Center integration is enabled. Learn how to configure the application here.
false
global.vcs.bitbucketDataCenter.cm.hostScheme
HTTP scheme of your Bitbucket Data Center instance (options: http or https).
https
global.vcs.bitbucketDataCenter.cm.hostDomain
hostname of your Bitbucket Data Center instance (e.g. bitbucket.acme.com).
""
global.vcs.bitbucketDataCenter.secret.oAuth2Key
Client ID generated by Bitbucket Data Center on creation of the OAuth2 app.
When using embedded PostgreSQL, the values once set are not changed. If you want to change the values, you need to delete the PostgreSQL PVCs & PVs and then change the values.
To configure your PostgreSQL database, follow the guide.
Comma separated emails of users who should be promoted to "Enterprise Admins" and will have access to the Enterprise Control Panel which will allow them to manage other users and view installation-wide audit logs and reports.
Set to true if there is no Ingress controller in your cluster or false if your cluster already has an existing ingress controller
false
global.networking.ingress.controller.className
Class name of the Ingress controller
nginx
global.networking.ingress.controller.annotations
Annotations for the Ingress controller. Add your own annotations if you are bringing your own Ingress controller, otherwise use the annotations from the values.yaml file given.
{}
TLS configuration parameters
Name
Description
Value
global.networking.ingress.tls.enabled
Enable TLS for Ingress
true
global.networking.ingress.tls.certManager.deploy
Set to true if cert-manager should be deployed for certificate management
false
global.networking.ingress.tls.secret.tlsCrt
Secret containing the TLS certificate
""
global.networking.ingress.tls.secret.tlsKey
Secret containing the TLS private key
""
global.networking.ingress.tls.secret.tlsEmail
Email used for registering TLS certificate (if using cert-manager)
""
CustomCA configuration parameters
Name
Description
Value
global.networking.customCA.upload
Set to true if using a custom CA for TLS
false
global.networking.customCA.secret.caBundle
Secret containing the custom CA bundle, make sure it is in PEM format and full chain
Once krew is installed and working run the following command
kubectl krew install support-bundle
Generate the support-bundle by running the following command:
curl https://assets.enterprise.deepsource.com/generate-support-bundle | sh -s <path-to-values-file>
Admin permission issues during initial setup
If you are having permission issues despite your email being in the global.auth.admins block in values file, run the following command after making sure all the DeepSource application pods are up and running.
During installation or upgrade, the migrate job that runs post-install might fail due to various reasons after the backoff-limit is reached. To manually trigger the migration process run the following command
APP_NAMESPACE="<deepsource-application-namespace>"; kubectl exec $(kubectl get pods -l app.kubernetes.io/name=asgard-celery-serveanlytics -n $APP_NAMESPACE -o jsonpath="{.items[0].metadata.name}") -n $APP_NAMESPACE -- make bucket compress migrate