ae
لغة
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
ترجمة AI
  • ee
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

تثبيت ريدماين في كوبرنيتيس - الجزء 2: تثبيت ريدماين

12/16/2023
7 minutes
لوكاس بينا

هذا هو الجزء الثاني من سلسلة حول نشر Redmine في Kubernetes. في هذه المقالة، سنقدم تعليمات حول كيفية نشر تثبيت موثوق لـ Redmine.

إعادة العد الجزء 1

بحلول الآن يجب أن تتطلع إلى تثبيت Redmine على Kubernetes. بعد كل شيء ، هذا هو ما جئت من أجله ، أليس كذلك؟

في Redmine في 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 للاتصال بمزود الشهادة الذي نختاره. سنستخدم 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 (الفئة: nginx في النهاية) يحتوي هذا النوع من التكوين على بعض الأسطر مع مسافات للإشارة إلى تبعية بعض الخصائص للآخرين. احتفظ بهذه المسافات كما هو موضح لضمان قراءة الملف وتطبيقه بشكل صحيح.

الآن تم تمكين عنقودك من HTTPS. كلما قمنا بتثبيت تطبيق ، يمكننا توجيهه للعمل مع HTTPS و فوالا! سيتم القيام بعملية الحصول على الشهادة تلقائيًا خلف الكواليس.


تثبيت ريدماين

هذا ما كنا ننتظره جميعًا. يمكننا تثبيت ريدماين بعدة طرق مختلفة ، ولكن بلا شك الطريقة الأكثر ملاءمة هي استخدام Helm. كما فعلنا من قبل ، نقوم أولاً بإضافة المستودع الذي يحتوي على ريدماين

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

ولكن هذه المرة بدلاً من التثبيت على الفور ، سنقوم بإنشاء ملف تكوين لتحديد بعض السلوك المخصص الذي نريد أن يكون لديه ريدماين.

سنفصل جميع التكوينات في قسمها الخاص ولكنك تضعها جميعًا في نفس الملف ، واحدة بعد الأخرى. اسم الملف هو values.yaml.

جميع تطبيقات Helm لديها ملف values.yaml يحتوي على جميع التكوينات الممكنة التي يمكن إجراؤها على التطبيق. عند إنشاء values.yaml الخاص بنا ، نحدد التغييرات التي نريدها. سيتم ترك أي قيمة لا نشملها في ملفنا كما هي في الملف الافتراضي.

يمكن العثور أيضًا على جميع القيم الافتراضية على صفحة تطبيق Helm ، https://hub.helm.sh/charts/bitnami/redmine. قم بالتحقق من جميع التكوينات.


أول مستخدم مسؤول

RedmineUsername: adminUser

RedminePassword: <my-password>

هذه الخطوة ضرورية وسهلة الفهم. إنه أول مستخدم في ريدماين ، والذي سنستخدمه لتسجيل الدخول للمرة الأولى.

عندما يتم تثبيت ريدماين ، ستتمكن من الوصول إليه باستخدام هذا المستخدم لتكوين تثبيتك الجديد تمامًا.


قاعدة بيانات PostgreSQL

بشكل افتراضي ، ستتطلب عملية التثبيت الخاصة بنا في Helm إنشاء قاعدة بيانات MariaDB. بدلاً من ذلك ، سنقوم بتكوين تثبيتنا لاستخدام PostgreSQL. تحتاج أيضًا إلى إضافة كلمة مرور على الأقل للوصول إلى هذه القاعدة بيانات ، كما يمكنك رؤية ذلك أدناه

databaseType: postgresql

mariadb:

  enabled: false

postgresql:

  enabled: true

  postgresqlDatabase: Redmine

  postgresqlUsername: Redmine

  postgresqlPassword: <some-safe-password>

يجب أن نخبر تثبيتنا صراحة أننا لا نرغب في تثبيت MariaDB مع تكوين قاعدة بيانات PostgreSQL.


تكوين اسم DNS

التكوين أدناه هو الجانب الآخر من تكوين DNS الذي قمنا به في الجزء 1. كما يمكنك أن ترى نحن نمكّن TLS ، وهو البروتوكول الذي يقف وراء HTTPS ، ونضبط اسم المضيف الذي استخدمناه عند إنشاء سجل DNS الخاص بنا:

الدخول:

  تمكين: صحيح

  certManager: صحيح

  hostname: redminek8s.ddns.net

  tls: صحيح

  annotations:

    kubernetes.io/ingress.class: nginx

    cert-manager.io/cluster-issuer: letsencrypt

أيضًا في السطرين الأخيرين نربط تطبيقنا بتحكم الدخول ومع إصدار العقدة الذي قمنا بإنشائه من قبل.

الآن يمكننا نشر 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 جاهز


استنتاج

كوبرنيتيس هي أداة معقدة لنشر التطبيقات ، ولكن تجاوزنا تلك التعقيدات بمساعدة Helm (دون اللعب على الكلمات) ونشرنا تثبيتًا موثوقًا لـ Redmine.

يمكنك العثور على ملخص لهذا الدليل في مستودع git التالي: https://github.com/lcofre/redmine-on-k8s. لا تتردد في المقارنة مع ملفاتك إذا واجهتك مشكلة.

تركنا بعض المفاهيم خارج النقاش لأنها كانت معقدة أو كانت الشرح محدد للسحابة. من بينها ليونة وجاهزية التطبيق الخاص بك ، وتكوين رسائل البريد الوارد ، وتوسيع التطبيق للتعامل مع المزيد من الحمولة. يرجى إعلامنا بما يهمك أكثر حتى نتمكن من مناقشته في دليل مستقبلي.

الترقية النهائية لـ Redmine؟ سهلة.

احصل على جميع الأدوات القوية للتخطيط والإدارة والتحكم المثالي في المشروع في برنامج واحد.

جرب Easy Redmine في تجربة مجانية لمدة 30 يومًا

ميزات كاملة، محمية SSL، نسخ احتياطية يومية، في موقعك الجغرافي