Redmine în Kubernetes - Partea 1: Pregătirea mediului.

6/22/2020
6 minutes
Lukáš Beňa -> Lukáš Beňa
În această serie în două părți, vom implementa Redmine în Kubernetes. Vom folosi instrumente și practici recomandate cu scopul de a implementa o instanță rezistentă de Redmine peste HTTPS.

Am împărțit acest ghid în două părți pentru a ne concentra mai întâi pe instalarea instrumentelor și componentelor pe care le va folosi implementarea Redmine. Dar nu vă faceți griji cu privire la complexitate. Chiar dacă sunteți nou în Kubernetes, va fi o explicație ușor de înțeles.

Acest ghid a fost scris pentru a fi agnostic la nor, așa că am lăsat intenționat toate mențiunile despre norul pe care l-am folosit. Lăsați un comentariu dacă puteți ghici norul pe care l-am folosit și spuneți-ne ce detaliu v-a dat de gol. Vă recomandăm să utilizați serviciul Kubernetes pe care îl oferă norul dvs., deoarece este bine integrat cu alte servicii pe care norul dvs. le oferă, dar nu sunt luate în considerare mediile precum microk8s sau minikube, deoarece necesită o configurare suplimentară care depășește domeniul de aplicare al acestui ghid. În special, configurarea noastră HTTPS necesită ca clusterul nostru să aibă o adresă IP publică.


Să folosim Helm

Kubernetes este o unealtă complexă pentru orchestrarea containerelor. Există multe concepte pe care trebuie să le învățăm pentru a începe. Din fericire, există un proiect numit Helm care oferă nivelul de abstractizare de care avem nevoie. În cuvintele lor "Dacă am făcut lucrurile corect, utilizatorii ar putea instala Helm și apoi în câteva minute să instaleze componente gata de producție".

Lăsând la o parte motivele pentru numele lor (toate spun povestea unei metafore, Helm, Kubernetes și containere), Helm simplifică cu adevărat instalarea permițând în același timp personalizarea componentei în funcție de nevoile noastre. Vom folosi Helm 3, ultima lor versiune și chiar mai simplă.

Dacă utilizați shell-ul norului furnizorului dvs. de nor, există șanse ca Helm 3 să fie deja disponibil, dar dacă nu, îl puteți instala urmând ghidul oferit de documentația Helm, helm.sh/docs/intro/install/. Trebuie să aveți acces la clusterul dvs. din linia de comandă pe care o utilizați. Furnizorul dvs. de nor are și un ghid despre cum să faceți asta.


Instalați controlerul Ingress

Acesta este primul component pe care îl vom instala în clusterul nostru și este, de asemenea, primul concept Kubernetes pe care îl vom vedea. Un controler Ingress se află la ușa de intrare a clusterului dvs., primește toate cererile web și le redirecționează către componenta internă responsabilă de răspunsul la cerere. Inițial, nu va fi nimeni pregătit să răspundă, dar când instalăm Redmine, acesta va fi adăugat ca destinație pentru cereri.

Kubernetes oferă Controlerul Ingress NGINX pe care îl vom folosi. Documentația lor explică cum să-l instalați folosind Helm:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx && helm repo update

helm install ingress-controller ingress-nginx/ingress-nginx

Prima comandă adaugă depozitul de aplicații în care se află controlerul Ingress, în timp ce a doua îl instalează în clusterul dvs. Când ați terminat, comanda va afișa unele informații pentru a începe, inclusiv cum să obțineți adresa IP publică atribuită controlerului:

kubectl get services --watch

Rezultatul va fi ceva similar cu acesta:

NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE

nginx-controller       LoadBalancer   10.0.115.117   89.68.23.33   80/TCP,443/TCP   5m22s

controller-admission   ClusterIP      10.0.135.226   <none>           443/TCP          5m22s

kubernetes             ClusterIP      10.0.0.1       <none>           443/TCP          44h

Rețineți adresa IP EXTERNAL-IP deoarece o vom avea nevoie în următorul pas. S-ar putea să se întâmple ca în loc de o adresă IP, valoarea pe care o obțineți acolo să fie <pending>. Este nevoie de ceva timp pentru ca cloud-ul să obțină o adresă IP publică și să o atribuie clusterului dvs.. Așteptați câteva secunde în plus și adresa IP ar trebui să fie disponibilă.


Creați un înregistrare DNS A

Acum că aveți adresa IP, puteți să mergeți la un browser și să vedeți cum răspunde clusterul dumneavoastră. Desigur, deoarece încă nu este instalată nicio aplicație, clusterul dumneavoastră va răspunde cu o eroare "404 Not Found". Vom crea un domeniu DNS pe care îl putem asocia acelei adrese IP, sperăm că mai ușor de reținut decât o listă de numere și puncte.

Modalitatea de a crea un domeniu de internet pentru Redmine-ul dumneavoastră depinde foarte mult de furnizorul dumneavoastră de domenii, dar în toate cazurile, veți crea o înregistrare DNS A care leagă un nume de domeniu cu adresa IP. Uitați-vă la captura de ecran de mai jos de la furnizorul de DNS no-ip.com pentru referință.

Crearea înregistrării noastre DNS A

Datele de completat, așa cum v-ați aștepta, sunt numele DNS și adresa IP. No-IP este exact ceea ce avem nevoie pentru a ilustra crearea unui domeniu, dar probabil că veți alege un furnizor DNS diferit. Procesul este destul de similar în toate cazurile.

Durează ceva timp pentru ca noua înregistrare să se propage, astfel încât puteți utiliza comanda ping pentru a verifica când adresa IP este rezolvată corect:

ping redminek8s.ddns.net


Următorii pași

Acum că avem un controler de intrare și un domeniu DNS, singurul lucru rămas de făcut este să configurăm HTTPS pentru site-ul nostru și să instalăm Redmine. Vom utiliza PostgreSQL ca bază de date, dar veți vedea cât de ușor este să configurați totul folosind Helm.

Stați pe aproape pentru Redmine în Kubernetes Partea 2: Instalarea Redmine-ului.

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.