th
ภาษา
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
การแปลโดย AI
  • cs
  • hu
  • it
  • pl
  • nl
  • tr
  • ae
  • se
  • ua
  • id
  • vn
  • cn
  • th
  • ro
  • bg
  • dk
  • fi
  • no
  • gr
  • il
  • ee
  • eu

Redmine ใน Kubernetes - ส่วนที่ 2: ติดตั้ง Redmine

12/31/2023
4 minutes
ลูคาช เบญา, จากอังกฤษ (สหราชอาณาจักร) เป็นไทย (ประเทศไทย)

นี่คือส่วนที่สองของซีรีส์เกี่ยวกับการติดตั้ง Redmine ลงใน Kubernetes ในบทความนี้เราจะให้คำแนะนำเกี่ยวกับวิธีการติดตั้ง Redmine ที่เป็นไปได้และเชื่อถือได้

นับถอยหลัง ส่วนที่ 1

ตอนนี้คุณต้องกำลังตั้งค่า Redmine บน Kubernetes ใช่ไหม หลังจากทั้งหมดนี้ นั่นคือสิ่งที่คุณมาที่นี่ใช่ไหม?

ใน Redmine in Kubernetes - ส่วนที่ 1: เตรียมสภาพแวดล้อม เราได้ติดตั้ง Ingress Controller ซึ่งเป็นส่วนประกอบที่เปลี่ยนเส้นทางคำขออินเทอร์เน็ตภายในคลัสเตอร์ของคุณ และเราได้สร้างโดเมน DNS ชื่อ redminek8s.ddns.net แล้ว ตอนนี้เราเพียงแค่ต้องกำหนดค่า HTTPS และเราก็พร้อมที่จะติดตั้ง Redmine แล้ว


HTTPS ด้วย cert-manager

แม้ว่าเราสามารถใช้ Redmine ของเราเป็น HTTP ได้ แต่ HTTPS กลายเป็นมาตรฐานสำหรับเว็บไซต์ ถึงขนาดที่เบราว์เซอร์ส่วนใหญ่จะเตือนคุณเมื่อมีปัญหาด้านความปลอดภัยเมื่อไม่ได้ใช้ HTTPS โดยเฉพาะ

โดยทั่วไปการเปิดใช้งาน HTTPS ไม่ใช่งานที่ง่าย เนื่องจากคุณต้องซื้อใบรับรองและอัปโหลดไปยังเว็บไซต์ของคุณ ต้องต่ออายุใบรับรองหลังจากเวลาที่กำหนด และต้องทำซ้ำกระบวนการนี้ Cert-manager จะทำให้งานทั้งหมดนี้เป็นอัตโนมัติ รวมถึงการรับรองฟรี คุณสามารถดูข้อมูลเพิ่มเติมได้ที่ เว็บไซต์ของพวกเขา แต่ฉันจะอธิบายสิ่งที่คุณต้องรู้ต่อไป


ติดตั้ง cert-manager

ดำเนินการตามขั้นตอนต่อไปนี้เพื่อติดตั้ง cert-manager ในคลัสเตอร์ของคุณ:

helm repo add jetstack https://charts.jetstack.io && helm repo update

helm install cert-manager jetstack/cert-manager --set installCRDs=true

ก่อนอื่นคุณเพิ่มที่เก็บข้อมูลที่ cert-manager อยู่ แล้วคุณติดตั้งเวอร์ชันล่าสุดของ cert-manager


เชื่อมต่อกับ Certificate Authority

ตอนนี้เราต้องแนะนำ cert-manager เพื่อเชื่อมต่อกับผู้ให้บริการ Certificate ที่เราเลือก พวกเราจะใช้ LetsEncrypt ซึ่งเป็นหน่วยความปลอดภัยฟรี สร้างไฟล์นี้ก่อน (อย่าลืมแทนที่ <your-email-address> ด้วยที่อยู่อีเมลจริง) และตั้งชื่อไฟล์ว่า cluster-issuer.yaml

apiVersion: cert-manager.io/v1alpha2

kind: ClusterIssuer

metadata:

  name: letsencrypt

spec:

  acme:

    server: https://acme-v02.api.letsencrypt.org/directory

    email: <your-email-address>

    privateKeySecretRef:

      name: letsencrypt

    solvers:

    - http01:

        ingress:

          class: nginx

จากนั้นใช้คำสั่งนี้ในคลัสเตอร์ของคุณ

kubectl apply -f cluster-issuer.yaml

ขอแสดงความยินดี! ไฟล์ด้านบนคือการกำหนดค่า Kubernetes แรกที่เราเขียนและนำไปใช้กับคลัสเตอร์ คุณอาจจะสังเกตได้ว่ามันแสดงวิธีการเชื่อมต่อกับ LetsEncrypt แต่ก็อธิบาย Ingress Controller ที่เราสร้างในส่วนที่ 1 ด้วย (The class: nginx ที่สุดท้าย) ประเภทของการกำหนดค่านี้มีบางบรรทัดที่มีช่องว่างเพื่อแสดงความขึ้นต่อกันของคุณสมบัติต่าง ๆ ให้สังเกตว่าช่องว่างเหล่านี้ต้องเหมือนที่แสดงเพื่อให้ไฟล์ถูกอ่านและนำไปใช้ได้อย่างถูกต้อง

ตอนนี้คลัสเตอร์ของคุณเปิดใช้งา

การติดตั้ง Redmine

นี่คือสิ่งที่เราทุกคนรอคอย สามารถติดตั้ง Redmine ได้หลายวิธี แต่วิธีที่สะดวกที่สุดคือการใช้ Helm อย่างแน่นอน ตามที่เราทำไปก่อนหน้านี้ เราจะเพิ่มเครื่องหมายที่ Redmine อยู่

helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update

แต่ในครั้งนี้ แทนที่จะติดตั้งทันที เราจะสร้างไฟล์การกำหนดค่า เพื่อระบุพฤติกรรมที่เราต้องการให้ Redmine มี

เราจะแยกการกำหนดค่าทั้งหมดในส่วนของตัวเอง แต่คุณสามารถใส่ทั้งหมดในไฟล์เดียวกันได้ ต่อจากกัน ให้ตั้งชื่อไฟล์ว่า values.yaml

แอปพลิเคชัน Helm ทั้งหมดมีไฟล์ values.yaml ที่มีการกำหนดค่าที่เป็นไปได้ทั้งหมดสำหรับแอปพลิเคชัน เมื่อเราสร้าง values.yaml เอง เรากำหนดการเปลี่ยนแปลงที่เราต้องการ ค่าใด ๆ ที่เราไม่รวมในไฟล์ของเราจะถูกเก็บไว้เหมือนเดิมในไฟล์เริ่มต้น

ค่าเริ่มต้นทั้งหมดยังสามารถหาได้ในหน้าแอปพลิเคชัน Helm https://hub.helm.sh/charts/bitnami/redmine ลองไปตรวจสอบการกำหนดค่าทั้งหมด


ผู้ใช้ Admin คนแรก

RedmineUsername: adminUser

RedminePassword: <my-password>

ขั้นตอนนี้เป็นเรื่องที่จำเป็นและง่ายต่อการเข้าใจ นี่คือผู้ใช้คนแรกของเราใน Redmine คนที่เราจะใช้เข้าสู่ระบบครั้งแรก

เมื่อติดตั้ง Redmine เราจะสามารถเข้าถึงได้ด้วยผู้ใช้นี้เพื่อกำหนดค่าการติดตั้งใหม่ของคุณ


ฐานข้อมูล PostgreSQL

ตามค่าเริ่มต้น การติดตั้ง Helm ของเราจะต้องมีการสร้างฐานข้อมูล mariadb แต่เราจะกำหนดค่าการติดตั้งของเราให้ใช้ PostgreSQL คุณต้องเพิ่มรหัสผ่านอย่างน้อยเพื่อเข้าถึงฐานข้อมูลนี้ ดังที่คุณเห็นด้านล่าง

databaseType: postgresql

mariadb:

  enabled: false

postgresql:

  enabled: true

  postgresqlDatabase: Redmine

  postgresqlUsername: Redmine

  postgresqlPassword: <some-safe-password>

เราต้องบอกการติดตั้งของเราโดยชัดเจนว่าเราไม่ต้องการติดตั้ง MariaDB พร้อมกับการกำหนดค่าสำหรับฐ

การกำหนดค่าชื่อ DNS

การกำหนดค่าด้านล่างนี้เป็นด้านตรงข้ามของการกำหนดค่า DNS ที่เราทำในส่วนที่ 1 ดังที่คุณเห็นเราเปิดใช้งาน TLS ซึ่งเป็นโปรโตคอลที่อยู่เบื้องหลังของ HTTPS และตั้งค่าชื่อโฮสต์ที่เราใช้เมื่อสร้างระเบียน DNS ของเรา:

ingress:

  enabled: true

  certManager: true

  hostname: redminek8s.ddns.net

  tls: true

  annotations:

    kubernetes.io/ingress.class: nginx

    cert-manager.io/cluster-issuer: letsencrypt

นอกจากนี้ในสองบรรทัดสุดท้ายเราเชื่อมโยงแอปพลิเคชันของเรากับ Ingress Controller และ Cluster Issuer ที่เราสร้างไว้ก่อนหน้านี้

ตอนนี้เราสามารถติดตั้ง Redmine ด้วยการกำหนดค่าที่กำหนดเองของเรา:

helm install Redmine -f values.yaml bitnami/redmine

บรรทัดนี้คล้ายกับบรรทัดการติดตั้ง helm อื่น ๆ ที่เราใช้ก่อนหน้านี้ แต่คราวนี้เราจะให้ค่า values.yaml ที่กำหนดเอง นี่คือวิธีที่ใช้ปรับแต่งแอปพลิเคชัน Helm ใด ๆ

เรายังต้องรออีกสักครู่เนื่องจากการสร้างแอปพลิเคชันใช้เวลาสักครู่ คุณสามารถดำเนินการคำสั่งนี้เพื่อตรวจสอบสถานะของคอนเทนเนอร์แอปพลิเคชันของคุณ:

kubectl get pods --watch

คำสั่งจะคืนค่าอย่างเช่นนี้:

NAME                       READY   STATUS    RESTARTS   AGE

. . .

redmine-999c68dd9-x7h2k    1/1     Running   0          6m40s

redmine-postgresql-0       1/1     Running   0          6m40s

คุณต้องรอจนกว่าสถานะของทั้งสองคอนเทนเนอร์จะเป็น Running และพร้อมใช้งาน 1/1 ซึ่งในกรณีของฉันใช้เวลาประมาณ 6 นาที

ตอนนี้ทุกอย่างพร้อมที่จะเปิดเบราว์เซอร์และไปที่การติดตั้งใหม่ของเรา:

Redmine พร้อมแล้ว


สรุป

Kubernetes เป็นเครื่องมือที่ซับซ้อนในการติดตั้งแอปพลิเคชัน แต่เราได้นำเสนอความซับซ้อนนั้นด้วยความช่วยเหลือของ Helm (ไม่มีเจตนา) และติดตั้ง Redmine ที่เป็นการติดตั้งที่เชื่อถือได้

คุณสามารถค้นหาสรุปของวิธีการนี้ใน git repo ต่อไปนี้: https://github.com/lcofre/redmine-on-k8s หากคุณติดอยู่คุณสามารถเปรียบเทียบกับไฟล์ของคุณได้

เราได้ปล่อยบางแนวความคิดออกจากการอภิปรายเนื่องจากซับซ้อนหรือการอธิบายเป็นเฉพาะกลุ่มคลาวด์ รวมถึง Liveness และ Readiness ของแอปพลิเคชันของคุณ การกำหนดค่าจดหมายเข้า และการขยายออกเพื่อจัดการโหลดที่มากขึ้น กรุณาแจ้งให้เราทราบด้านล่างว่าคุณสนใจอะไรมากที่สุดเราจะอภิปรายเรื่องนั้นในอนาคต

การอัพเกรด Redmine ที่สุดยอด? ง่าย.

ได้รับเครื่องมือที่มีกำลังในการวางแผนโครงการที่เหมาะสม การจัดการ และควบคุมทั้งหมดในซอฟต์แวร์เดียว

ทดลองใช้ Easy Redmine ฟรี 30 วัน

คุณสมบัติครบถ้วน, ป้องกันด้วย SSL, สำรองข้อมูลประจำวัน, ในตำแหน่งที่ตั้งของคุณ