bg
Език
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
Превод от изкуствен интелект
  • ee
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

в Kubernetes - Част 2: Инсталиране на Redmine

6/30/2020
8 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, и след това инсталирайте най-новата му версия.


Свързване с Certificate Authority

Сега трябва да научим cert-manager да се свърже с Certificate provider на наш избор. Ще използваме LetsEncrypt, безплатен Certificate authority. Първо създайте този файл (не забравяйте да замените <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 и voilà! Целият процес на получаване на сертификата ще бъде извършен автоматично зад кулисите.


Инсталиране на 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. Отидете и проверете всички конфигурации.


Първи администраторски потребител

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 заедно с конфигурацията за базата данни PostgreSQL.


Конфигурация на 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, ежедневни резервни копия, във вашата географска локация