Redmine в 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, до якого постачальника сертифікатів ми хочемо підключитися. Ми будемо використовувати LetsEncrypt, безкоштовний центр сертифікації. Спочатку створіть цей файл (не забудьте замінити <your-email-address> на реальну адресу електронної пошти) і назвіть його cluster-issuer.yaml

apiVersion: cert-manager.io/v1alpha2

тип: ClusterIssuer

метадані:

  назва: letsencrypt

специфікація:

  acme:

    сервер: https://acme-v02.api.letsencrypt.org/directory

    електронна пошта: <your-email-address>

    privateKeySecretRef:

      назва: letsencrypt

    виконувачі:

    - http01:

        інгрес:

          клас: nginx

Потім застосуйте його до Вашого кластеру за допомогою

kubectl apply -f cluster-issuer.yaml

Вітаємо! Наведений вище файл, є першою конфігурацією kubernetes, яку ми написали і застосували до кластера. Ви могли помітити, що він показує, як підключитися до LetsEncrypt, але він також описує контролер входу, який ми створили в частині 1 (клас: nginx в кінці). Цей тип конфігурації має деякі рядки з пробілами, щоб вказати залежність одних властивостей від інших. Залиште ці пробіли так, як показано, щоб переконатися, що файл читається і застосовується належним чином.

Тепер Ваш кластер підтримує HTTPS. Кожного разу, коли ми встановлюємо додаток, ми можемо вказати йому працювати з HTTPS і вуаля! Весь процес отримання сертифікату буде виконано автоматично за лаштунками.


Встановлення 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. Перейдіть і перевірте всі конфігурації.


Перший адміністраторський користувач

Ім'я користувача Redmine: adminUser

Пароль Redmine: <my-password>

Цей крок настільки ж необхідний, наскільки і простий для розуміння. Це наш перший користувач у Redmine, який ми будемо використовувати для входу в систему вперше.

Коли Redmine буде встановлено, Ви зможете отримати доступ до нього під цим користувачем, щоб налаштувати Вашу нову установку.

База даних PostgreSQL

За замовчуванням наша установка Helm потребує створення бази даних mariadb. Замість цього ми налаштуємо нашу установку на використання PostgreSQL. Вам також потрібно додати хоча б пароль для доступу до цієї бази даних, як показано нижче

Тип бази даних: postgresql

mariadb:

 увімкнено: помилка

postgresql:

  увімкнено: правда

  База даних postgresql: Redmine

  Ім'я користувача postgresql: Redmine

  Пароль postgresql: <some-safe-password>

Нам потрібно чітко вказати програмі встановлення, що ми не хочемо, щоб MariaDB встановлювалася разом з конфігурацією для бази даних PostgreSQL.


Налаштування імен DNS

Наведене нижче налаштування є другою частиною налаштування DNS, яке ми виконали в Частині 1.Як Ви бачите, ми ввімкнули TLS, протокол, що лежить в основі HTTPS, і встановили ім'я хоста, яке ми використовували при створенні нашого DNS-запису:

інгрес:

  увімкнено: правда

  certManager: правда

  ім'я хоста: redminek8s.ddns.net

  tls: правда

  анотації:

    kubernetes.io/ingress.class: nginx

    cert-manager.io/cluster-issuer: letsencrypt

Також в останніх двох рядках ми пов'язали наше додаток з контролером Ingress та з Cluster Issuer, який ми створили раніше.

Тепер ми можемо розгорнути Redmine зі нашою користувацькою конфігурацією:

helm install Redmine -f values.yaml bitnami/redmine

Цей рядок схожий на інші рядки helm install, які ми використовували раніше, але цього разу ми надаємо користувацький values.yaml.Таким чином можна налаштувати будь-який додаток Helm.

Нам потрібно ще трохи терпіння, оскільки створення додатка займає деякий час. Ви можете виконати цю команду, щоб перевірити стан контейнерів Вашого додатка:

kubectl get pods --watch

Команда поверне щось схоже на це:

ІМ'Я                       ГОТОВНІСТЬ   СТАТУС    ПЕРЕЗАПУСКИ   ВІК

. . .

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-репозиторію: https://github.com/lcofre/redmine-on-k8s.Не соромтеся порівнювати з Вашими файлами, якщо Ви застрягли.

Ми залишили деякі поняття поза обговоренням, тому що вони були складними або пояснення були специфічними для хмарних технологій. Серед них - життєздатність і готовність Вашого додатку, налаштування вхідних листів і масштабування для роботи з більшим навантаженням. Будь ласка, повідомте нам нижче, що Вас найбільше цікавить, щоб ми могли обговорити це в майбутньому матеріалі.

Остаточне оновлення Redmine? Легко.

Отримайте всі потужні інструменти для ідеального планування, управління та контролю проєкту в одному програмному забезпеченні.

Спробуйте Easy Redmine у 30-денній безкоштовній пробній версії

Повнофункціональний, захищений SSL, щоденне резервне копіювання, у вашій геолокації