JIRA là một ứng dụng để theo dõi, quản lý lỗi, các vấn đề phát sinh trong dự án, giúp cho việc quản lý phát triển dự án dễ dàng hơn cho mọi tổ chức. Đối với các tổ chức/ cá nhân triển khai một dự án hiện nay, JIRA gần như là công cụ số một để kiểm soát, theo dõi và tối ưu quy trình phát triển.
Đi kèm với JIRA là Confluence, một không gian làm việc nhóm, nơi chia sẻ, kết hợp kiến thức và cộng tác theo nhóm. Confluence là một công cụ tuyệt vời cho phép tạo ra các không gian theo nhóm nhằm mục đích cấu trúc, tổ chức và chia sẻ tài liệu, ý tưởng về dự án, giúp mọi thành viên trong nhóm có khả năng tiếp cận thông tin một cách thuận lợi và nhanh chóng nhất.
Cả JIRA/ Confluence đều thuộc sở hữu của Atlasssian — một gã khổng lồ về các công cụ hỗ trợ quản lý và phát triển dự án. JIRA/ Confluence phù hợp với mọi loại dự án, từ nhỏ đến lớn, từ startup đến các công ty lớn.
Phương thức triển khai cài đặt JIRA/ Confluence thường là trên một máy chủ vật lý, hoặc trên một máy ảo. Tuy nhiên, hiện nay kiến trúc microservices đang dần trở thành trào lưu, đi cùng với nó là sự hiện diện của Kubernetes với những ưu điểm vượt trội trong các tổ chức, dự án. Nếu vẫn cài đặt JIRA/ Confluence trên máy vật lý/ máy ảo theo cách cũ, ta sẽ mất một phần tài nguyên cho các công cụ quản lý này. Điều này có thể không là vấn đề đối với một công ty lớn với nguồn tài nguyên dồi dào, nhưng có thể gây ra lãng phí với một đội ngũ có tài nguyên khiêm tốn hơn, vừa muốn có JIRA/ Confluence để quản lý dự án, lại vừa muốn duy trì Kubernetes cho việc triển khai ứng dụng.
Để tận dụng sức mạnh của Kubernetes, mà lại tránh gây lãng phí tài nguyên, tại sao không triển khai JIRA/ Confluence trên chính Kubernetes nhỉ? Và trong khuôn khổ bài viết này, mình sẽ giới thiệu với các bạn về cách để triển khai JIRA/ Confluence trên Kubernetes.
Cài đặt
Giả định rằng bạn đã cài Kubernetes lên trước đó, nếu chưa bạn có thể tham khảo các bài viết khác về cài đặt Kubernetes. Do đã có rất nhiều bài viết hướng dẫn nên mình sẽ không trình bày lại ở đây.
Cài đặt Helm
Cách 1: Triển khai cài đặt Helm bằng script, có thể bỏ qua nếu đã cài Helm trước đó
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
Hoặc ngắn gọn hơn
$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Cách 2: Cài Helm bằng Apt
$ curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
$ sudo apt-get install apt-transport-https --yes
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
$ sudo apt-get update
$ sudo apt-get install helm
Cài đặt Database
JIRA/ Confluence cần một backend database. Bỏ qua bước này nếu bạn muốn dùng database bên ngoài Kubernetes
JIRA/ Confluence hỗ trợ khá nhiều loại database, trong phần này sẽ hướng dẫn bạn triển khai postgresql bằng Helm
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm repo update
$ helm install postgresql --set auth.postgresPassword=secretpassword --set auth.username=username --set auth.password=password --set auth.database=database bitnami/postgresql
Thêm Helm chart repository
Thêm Helm chart repository
$ helm repo add atlassian-data-center \ https://atlassian.github.io/data-center-helm-charts
Cập nhật repository
$ helm repo update
Tải file values.yaml
Tải file mặc định values.yaml từ chart thông qua lệnh sau
$ helm show values atlassian-data-center/<product> > values.yaml
Trong đó < product> là tên dịch vụ mà bạn muốn triển khai, bao gồm
- Jira
- Confluence
Cấu hình Database
Để sử dụng Database với JIRA/ Confluence, ta cần nhập cấu hình Database vào file values.yaml có được từ bước trên
Tạo Kubernetes secret để chứa thông tin username/ password truy cập vào database
$ kubectl create secret generic jira-connect --from-literal=username='username' --from-literal=password='password'
Sau khi tạo xong secret, điền thông tin database vào các trường thông tin tương ứng trong file values.yaml như sau
database: type: <db_type> url: <jdbc_url> driver: <engine_driver> credentials: secretName: jira-connect usernameSecretKey: username passwordSecretKey: password
Cấu hình Ingress
Để sử dụng URL truy cập vào JIRA/ Confluence, ta cần cấu hình Ingress Controller vào file values.yaml
ingress: create: true #1. Chọn true để tạo Ingress nginx: true #2. Nếu sử dụng ingress-nginx controller maxBodySize: 250m host: <dns_host_name> #2. Địa chỉ host để truy cập vào JIRA/ CONFLUENCE path: "/" annotations: cert-manager.io/issuer: <certificate_issuer> https: true tlsSecretName: <tls_certificate_name>
Cấu hình Persistent Storage (Tùy chọn)
Nếu triển khai JIRA/ Confluence theo cluster, ta cần cấu hình Persistent Storage
Có 2 Storage cần cấu hình đó là share-home và local-home
Với share-home, ta cần tạo Persistent Volume sử dụng EFS filesystem và cấu hình cho storage trong file values.yaml
volumes: sharedHome: customVolume: persistentVolumeClaim: claimName: <pvc_name>
Mỗi pod trong JIRA/ Confluence cluster cần có local-home storage, cần cấu hình StorageClass cho local-home trong file values.yaml
volumes: localHome: persistentVolumeClaim: create: true storageClassName: <storage-class-name>
Cấu hình cluster
Nếu muốn triển khai JIRA/ Confluence theo cluster, ta có thể cấu hình trong file values.yaml
clustering: enabled: true
Cấu hình License
Tạo Kubernetes secret chứa thông tin License
$ kubectl create secret generic jira-license --from-literal=license-key='<product_license_key>'
Cập nhật thông tin license trong file values.yaml
license: secretName: jira-license secretKey: license-key
Cấu hình container images
Nếu muốn chỉ định version của JIRA/ Confluence, điền tag name trong file values.yaml hoặc điền latest để sử dụng phiên bản mới
Kết
Đến đây là các bạn đã hoàn thành các bước triển khai JIRA/ Confluence trên Kubernetes. Việc còn lại là thêm user và tạo dự án theo nhu cầu của công việc.
Đối với các bạn không có đủ điều kiện để triển khai Kubernetes mà vẫn muốn trải nghiệm JIRA trên nền container, thì có một sự lựa chọn khác dành cho các bạn, đó là sử dụng nền tảng Sun Spinner của Sunteco Cloud.
Trải nghiệm Sun Spinner miễn phí ngay tại đây.