Triển khai JIRA/Confluence trên Kubernetes

Tram Ho

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-homelocal-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.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo