Running Bitbucket Data Center on a Kubernetes cluster
What is Kubernetes?
Kubernetes (K8s) is a high-availability rapid deployment and container orchestration framework that allows you to easily manage and automate your deployments in one place. Because it makes heavy use of containers, your applications stay up-to-date with no downtime and always have safe and reliable access to the dependencies they require. Learn more on the official Kubernetes website
How does it work?
Kubernetes automates the management of containerized applications. It provides a centralized control plane to manage containers and the underlying infrastructure, automate scaling, rollouts and rollbacks, and more. The platform abstracts away the underlying infrastructure and provides a unified way of managing containers and applications, making it easier for developers to build, deploy, and run applications at scale.
Kubernetes is a powerful platform that comes with a number of benefits, including:
Automated operations for containers
Accelerated upgrades and rollbacks
Better scalability and resiliency
On top of that, the ability to manage your infrastructure as code by using simple YAML files helps you reduce unnecessary resource consumption.
How does Atlassian integrate with Kubernetes?
Manage Kubernetes with Helm charts
To help you deploy our products, we’ve created Data Center Helm charts—customizable templates that can be configured to meet the unique needs of your business. You can even choose how to run them: either on your own hardware or on a cloud provider’s infrastructure. This allows you to stay in control of your data and meet your compliance needs while still using a more modern infrastructure. Helm charts have their own lifecycle, so updates contain certain features and are upgraded automatically.
Helm charts provide the essential building blocks needed to deploy Atlassian Data Center products (Jira, Confluence, Bitbucket, Bamboo, and Crowd) in Kubernetes clusters and give you the capability to integrate with your operation and automation tools. Learn more about Helm charts
Use Docker images for improved agility
To speed up development, you can take advantage of Data Center’s hardened Docker container images. Using our Docker container images as part of your Data Center deployment allows you to cut significant time by streamlining and automating workflows.
After defining your required configuration once, you can instantly deploy exact replicas of your environment from the command line at every stage of your deployment lifecycle, giving you the agility needed to keep valuable work moving forward, and the flexibility to accommodate your organization’s evolving development strategy over time.
Learn Kubernetes deployment architecture
The Kubernetes cluster can be a managed environment, such as Amazon EKS, Azure Kubernetes Service, Google Kubernetes Engine, or a custom on-premise system. We strongly recommend you set up user management, central logging storage, a backup strategy, and monitoring just as you would for a Data Center installation running on your own hardware.
Here's an architectural overview of what you'll get when deploying your Data Center application on a Kubernetes cluster using the Helm charts:
The following Kubernetes entities are required for product deployment:
Ingress and Ingress controller (ing)—the Ingress defines the rules for traffic routing, which indicate where a request will go in the Kubernetes cluster. The Ingress controller is the component responsible for fulfilling those rules.
Service (svc)—provides a single address for a set of pods to enable load-balancing between application nodes.
Pod—a group of one or more containers, with shared storage and network resources, and a specification for how to run the containers. Pods are the smallest deployable units of computing that you can create and manage in Kubernetes.
StatefulSets (sts)—manages the deployment and scaling of a set of pods requiring persistent state.
PersistentVolume (pv)—a "physical" volume on the host machine that stores your persistent data.
PersistentVolumeClaim (pvc)—reserves the Persistent Volume (PV) to be used by a pod or potentially multiple pods.
StorageClass (sc)—provides a way for administrators to describe the "classes" of storage they offer.
Install your Data Center application on a Kubernetes cluster
To install and operate your Data Center application on a Kubernetes cluster using our Helm charts: