Follow these instructions to install your Atlassian product using the Helm charts. Before you proceed with the installation, make sure you have followed the Prerequisites guide.
1. Add the Helm chart repository ¶
Add the Helm chart repository to your local Helm installation:
helm repo add atlassian-data-center \ https://atlassian.github.io/data-center-helm-charts
Update the repository:
helm repo update
Obtain the default product
values.yaml file from the chart:
helm show values atlassian-data-center/<product> > values.yaml
If deploying Bamboo, be sure to read about the current limitations relating to Bamboo deployments and values.yaml
3. Configure database ¶
Automated setup steps
By providing all the required database values, you will bypass the database connectivity configuration during the product setup.
If you are migrating an existing Data Center product to Kubernetes, use the values of your product's database. See Migration guide.
Create a Kubernetes secret to store the connectivity details of the database:
kubectl create secret generic <secret_name> --from-literal=username='<db_username>' --from-literal=password='<db_password>'
Using the Kubernetes secret, update the
database stanza within
values.yaml appropriately. Refer to the commentary within the
values.yaml file for additional details on how to configure the remaining database values:
database: type: <db_type> url: <jdbc_url> driver: <engine_driver> credentials: secretName: <secret_name> usernameSecretKey: username passwordSecretKey: password
For additional information on how the above values should be configured, see the Database connectivity section of the configuration guide.
Read about Kubernetes secrets.
4. Configure Ingress ¶
values.yaml file obtained in step 2, configure the Ingress controller provisioned as part of the Prerequisites. The values you provide here will be used to provision an Ingress resource for the controller. Refer to the associated comments within the
values.yaml file for additional details on how to configure the Ingress resource:
ingress: create: true #1. Setting true here will create an Ingress resource nginx: true #2. If using the ingress-nginx controller set this property to true maxBodySize: 250m host: <dns_host_name> #2. Hosts can be precise matches (for example “foo.bar.com”) or a wildcard (for example “*.foo.com”). path: "/" annotations: cert-manager.io/issuer: <certificate_issuer> https: true tlsSecretName: <tls_certificate_name>
For additional details on Ingress controllers see the Ingress section of the configuration guide.
See an example of how to set up a controller.
5. Configure persistent storage ¶
If you are migrating an existing Data Center product to Kubernetes, use the values of your product's shared home.
volumes: sharedHome: customVolume: persistentVolumeClaim: claimName: <pvc_name>
Each pod will also require its own
local-home storage. This can be configured with a
StorageClass, as can be seen in the local home example. Having created the
values.yaml to make use of it:
volumes: localHome: persistentVolumeClaim: create: true storageClassName: <storage-class-name>
For more details, refer to the Volumes section of the configuration guide.
Bitbucket shared storage
Bitbucket needs a dedicated NFS server providing persistence for a shared home. Prior to installing the Helm chart, a suitable NFS shared storage solution must be provisioned. The exact details of this resource will be highly site-specific, but you can use this example as a guide: Implementation of an NFS Server for Bitbucket.
6. Configure clustering ¶
By default, the Helm charts will not configure the products for Data Center clustering. You can enable clustering in the
clustering: enabled: true
Because of the limitations outlined under Bamboo and clustering the
clustering stanza is not available as a configurable property in the Bamboo
7. Configure license ¶
Pre-provisioning a license in this way is only applicable to
Bamboo deployments. For
Jira deployments a license can be supplied via the setup wizard post deployment.
You can configure the product license if you provide a
license stanzas within the
values.yaml obtained in step 2. To do that, create a Kubernetes secret to hold the product license:
kubectl create secret generic <license_secret_name> --from-literal=license-key='<product_license_key>'
values.yaml file with the secrets:
license: secretName: <secret_name> secretKey: license-key
Sysadmin credentials for Bitbucket and Bamboo
Bamboo are slightly different from the other products in that they can be completely configured during deployment, meaning no manual setup is required. To do this, you need to update the
sysadminCredentials and also provide the
license stanza from the previous step.
Create a Kubernetes secret to hold the Bitbucket/Bamboo system administrator credentials:
kubectl create secret generic <sysadmin_creds_secret_name> --from-literal=username='<sysadmin_username>' --from-literal=password='<sysadmin_password>' --from-literal=displayName='<sysadmin_display_name>' --from-literal=emailAddress='<sysadmin_email>'
values.yaml file with the secrets:
sysadminCredentials: secretName: <sysadmin_creds_secret_name> usernameSecretKey: username passwordSecretKey: password displayNameSecretKey: displayName emailAddressSecretKey: emailAddress
8. Configure container images ¶
In air-gapped environments that cannot directly access DockerHub you will need to pass custom repositories/tags to the Helm installation/upgrade command.
Product images ¶
For product images (such as Jira, Bitbucket, Confluence, Bamboo), update
image: registry: artifactory.mycompany.com repository: jira tag: 7.8.20
Helper containers ¶
volumes.sharedHome.persistentVolumeClaim.sharedHome.nfsPermissionFixer.enabled is set to
volumes: sharedHome: nfsPermissionFixer: imageRepo: artifactory.mycompany.com/alpine imageTag: latest
fluentd.enabled is set to
true (false by default), update
fluentd: imageRepo: artifactory.mycompany.com/fluentd-kubernetes-daemonset imageTag: v1.11.5-debian-elasticsearch7-1.2
9. Install your chosen product ¶
helm install <release-name> \ atlassian-data-center/<product> \ --namespace <namespace> \ --version <chart-version> \ --values values.yaml
Values & flags
<release-name>the name of your deployment. You can also use
<product>the product to install. Options include:
<namespace>optional flag for categorizing installed resources.
<chart-version>optional flag for defining the chart version to be used. If omitted, the latest version of the chart will be used.
values.yamloptional flag for defining your site-specific configuration information. If omitted, the chart config default will be used.
--waitif you wish the installation command to block until all of the deployed Kubernetes resources are ready, but be aware that this may wait for several minutes if anything is mis-configured.
Elasticsearch for Bitbucket
We highly recommend you use an external Elasticsearch installation for Bitbucket. When you run more than one node you need to have a separate Elasticsearch cluster to enable code search. See Bitbucket Elasticsearch recommendations.
9. Test your deployed product ¶
Make sure the service pod/s are running, then test your deployed product:
helm test <release-name> --logs --namespace <namespace>
- This will run some basic smoke tests against the deployed release.
- If any of these tests fail, it is likely that the deployment was not successful. Check the status of the deployed resources for any obvious errors that may have caused the failure.
10. Complete product setup ¶
Using the service URL provided by Helm post install, open your product in a web browser and complete the setup via the setup wizard.
11. Additional deployments ¶
Bamboo agents and Bitbucket mirrors can also be deployed via their dedicated charts:
The deployment and all of its associated resources can be un-installed with the following command:
helm uninstall <release-name> atlassian-data-center/<product>