Redmine în Kubernetes - Partea 2: Instalarea Redmine

6/30/2020
8 minutes
Lukáš Beňa -> Lukáš Beňa
Aceasta este a doua parte a seriei despre implementarea Redmine în Kubernetes. În acest articol, vom oferi instrucțiuni despre cum să implementați o instalare fiabilă a Redmine.

Recounting Part 1

Până acum, cu siguranță aștepți cu nerăbdare instalarea Redmine pe Kubernetes. Acesta este motivul pentru care ai venit, nu-i așa?

În Redmine in Kubernetes – Part 1: Preparing environment, am instalat Ingress Controller, un component pentru redirecționarea cererilor de internet în interiorul clusterului tău, și am creat un domeniu DNS, redminek8s.ddns.net. Acum trebuie doar să configurăm HTTPS și suntem pregătiți să implementăm Redmine.


HTTPS cu cert-manager

Deși am putea păstra Redmine-ul nostru ca HTTP, HTTPS a devenit standardul pentru site-uri web, atât de mult încât majoritatea browserelor te avertizează cu privire la o problemă de securitate atunci când un site nu utilizează HTTPS.

De obicei, activarea HTTPS nu este o sarcină trivială, deoarece trebuie să cumperi un certificat și să-l încarci pe site-ul tău, să-l reînnoiești după un anumit timp și să repeți procesul. Cert-manager automatizează toate acestea, inclusiv reînnoirea certificatelor și chiar obținerea de certificate gratuite. Poți vedea mai multe informații pe site-ul lor, dar îți voi explica tot ce trebuie să știi în continuare.


Instalare cert-manager

Execută următorii pași pentru a instala cert-manager în clusterul tău:

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

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

Mai întâi adaugi depozitul unde se află cert-manager, apoi instalezi ultima sa versiune.


Conectare la Autoritatea de Certificare

Acum trebuie să instruim cert-manager să se conecteze la furnizorul de certificate pe care îl alegem. Vom folosi LetsEncrypt, o autoritate de certificate gratuită. Creează mai întâi acest fișier (nu uita să înlocuiești <adresa-ta-de-email> cu o adresă de e-mail reală) și numește-l cluster-issuer.yaml

apiVersion: cert-manager.io/v1alpha2

kind: ClusterIssuer

metadata:

  name: letsencrypt

spec:

  acme:

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

    email: <adresa-ta-de-email>

    privateKeySecretRef:

      name: letsencrypt

    solvers:

    - http01:

        ingress:

          class: nginx

Aplică-l apoi în clusterul tău cu

kubectl apply -f cluster-issuer.yaml

Felicitări! Fișierul de mai sus este prima configurație Kubernetes pe care o scriem și o aplicăm în cluster. Poate ai observat că arată cum să te conectezi la LetsEncrypt, dar descrie și Ingress Controller-ul pe care l-am creat în Partea 1 (clasa: nginx la sfârșit). Acest tip de configurație are câteva linii cu spații pentru a indica dependența unor proprietăți de altele. Păstrează aceste spații așa cum sunt prezentate pentru a te asigura că fișierul este citit și aplicat corect.

Acum clusterul tău este activat pentru HTTPS. Ori de câte ori instalăm o aplicație, o putem instrui să funcționeze cu HTTPS și voilà! Întregul proces de obținere a certificatului va fi realizat automat în spatele scenei.


Instalarea Redmine

Aceasta este ceea ce am asteptat cu totii. Putem instala Redmine in mai multe moduri, dar cel mai convenabil este sa folosim Helm. Asa cum am facut deja, mai intai adaugam depozitul unde se afla Redmine

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

Dar de data aceasta, in loc sa instalati imediat, vom crea un fisier de configurare, pentru a indica un comportament personalizat pe care dorim sa-l aiba Redmine.

Vom separa toate configurarile in propria lor sectiune, dar le vom pune toate in acelasi fisier, unul dupa altul. Numele fisierului va fi values.yaml.

Toate aplicatiile Helm au un fisier values.yaml cu toate configurarile posibile care pot fi facute pentru aplicatie. Cand cream propriul values.yaml, definim modificarile pe care le dorim. Orice valoare pe care nu o includem in fisierul nostru va fi lasata asa cum este in fisierul implicit.

Toate valorile implicite pot fi gasite si pe pagina aplicatiei Helm, https://hub.helm.sh/charts/bitnami/redmine. Verificati toate configurarile.


Primul utilizator Admin

RedmineUsername: adminUser

RedminePassword: <my-password>

Acest pas este la fel de necesar ca si usor de inteles. Este primul nostru utilizator pe Redmine, cel pe care il vom folosi pentru a ne conecta pentru prima data.

Cand Redmine este instalat, veti putea accesa aplicatia cu acest utilizator pentru a configura instalarea dumneavoastra.


Baza de date PostgreSQL

Implicit, instalarea noastra Helm va necesita crearea unei baze de date mariadb. In schimb, vom configura instalarea noastra sa foloseasca PostgreSQL. Trebuie sa adaugati cel putin o parola pentru a accesa aceasta baza de date, asa cum puteti vedea mai jos

databaseType: postgresql

mariadb:

  enabled: false

postgresql:

  enabled: true

  postgresqlDatabase: Redmine

  postgresqlUsername: Redmine

  postgresqlPassword: <some-safe-password>

Trebuie sa spunem explicit instalarii noastre ca nu dorim ca MariaDB sa fie instalat impreuna cu configurarea pentru baza de date PostgreSQL.


Configurarea numelui DNS

Configurarea de mai jos este partea cealaltă a configurării DNS pe care am făcut-o în Partea 1. După cum puteți vedea, activăm TLS, protocolul din spatele HTTPS, și setăm numele gazdei pe care l-am folosit la crearea înregistrării noastre DNS:

ingress:

  enabled: true

  certManager: true

  hostname: redminek8s.ddns.net

  tls: true

  annotations:

    kubernetes.io/ingress.class: nginx

    cert-manager.io/cluster-issuer: letsencrypt

De asemenea, în ultimele două linii legăm aplicația noastră cu Controlerul Ingress și cu Emitentul Cluster pe care l-am creat anterior.

Acum putem implementa Redmine cu configurația noastră personalizată:

helm install Redmine -f values.yaml bitnami/redmine

Această linie este similară cu alte linii helm install pe care le-am folosit anterior, dar de data aceasta furnizăm un values.yaml personalizat. Acesta este modul de a personaliza orice aplicație Helm.

Mai avem nevoie de puțină răbdare, deoarece crearea aplicației durează ceva timp. Puteți executa această comandă pentru a verifica starea containerelor aplicației:

kubectl get pods --watch

Comanda va returna ceva similar cu acesta:

NAME                       READY   STATUS    RESTARTS   AGE

. . .

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

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

Trebuie să așteptați până când starea ambelor containere este Running și toate sunt pregătite 1/1, ceea ce în cazul meu a durat aproximativ 6 minute.

Acum totul este pregătit pentru a deschide browserul și a merge la noua noastră implementare:

Redmine este pregătit


Concluzie

Kubernetes este o unealtă complexă pentru a implementa aplicații, dar am navigat prin acea complexitate cu ajutorul lui Helm (fără joc de cuvinte) și am implementat o instalare fiabilă a Redmine.

Puteți găsi un rezumat al acestui ghid în următorul depozit git: https://github.com/lcofre/redmine-on-k8s. Nu ezitați să comparați cu fișierele dvs. dacă întâmpinați probleme.

Am lăsat unele concepte din discuție pentru că erau complexe sau explicația era specifică pentru cloud. Printre acestea se numără Liveness și Readiness a aplicației dvs., configurarea mesajelor primite și scalarea pentru a gestiona mai multe încărcări. Vă rugăm să ne spuneți mai jos ce vă interesează cel mai mult, astfel încât să putem discuta despre acestea într-un ghid viitor.

Actualizarea finală Redmine? Ușoară.

Obțineți toate instrumentele puternice pentru planificarea, gestionarea și controlul perfect al proiectelor într-un singur software.

Încercați Easy Redmine în 30 de zile de încercare gratuită

Funcții complete, protejat SSL, backup-uri zilnice, în geolocalizarea dvs.