Redmine v Kubernetes – Část 1: Příprava prostředí

6/22/2020
6 minutes
Lukáš Beňa.
V této dvoudílné sérii nasadíme Redmine do Kubernetes. Budeme používat doporučené nástroje a postupy s cílem nasadit odolnou instanci Redmine přes HTTPS.

Rozdělili jsme tento návod na dvě části, abychom se nejprve zaměřili na instalaci nástrojů a komponent, které bude Redmine využívat. Ale nemusíte se obávat složitosti. I když jste noví v Kubernetes, bude to srozumitelné vysvětlení.

Tento průvodce byl napsán tak, aby byl nezávislý na cloudu, takže jsme úmyslně vynechali všechny zmínky o použitém cloudu. Zanechte komentář, pokud uhodnete, jaký cloud jsme použili, a řekněte nám, jaký detail to prozradil. Doporučujeme vám použít službu Kubernetes, kterou váš cloud nabízí, protože je dobře integrována s dalšími službami, které váš cloud také poskytuje.

Prostředí jako microk8s nebo minikube zde nejsou zvažována, protože vyžadují nějakou další konfiguraci, která spadá mimo rozsah tohoto průvodce. Zejména naše konfigurace HTTPS vyžaduje, aby náš cluster měl veřejnou IP adresu.


Použijme Helm

Kubernetes je složitý nástroj pro orchestraci kontejnerů. Existuje mnoho konceptů, které musíme naučit, abychom začali. Naštěstí pro nás existuje projekt jménem Helm, který poskytuje úroveň abstrakce, kterou potřebujeme. Podle jejich vlastních slov "Pokud jsme udělali věci správně, uživatelé by mohli nainstalovat Helm a během několika minut instalovat komponenty s produkční kvalitou."

Opomíjejíce důvody pro jejich jména (všechno to vypráví příběh metafory, Helmu, Kubernetesu a kontejnerům), helm opravdu zjednodušuje instalaci a zároveň umožňuje přizpůsobit komponentu našim potřebám. Budeme používat Helm 3, jejich nejnovější a ještě jednodušší verzi.

Pokud používáte cloudovou konzoli vašeho poskytovatele cloudu, je pravděpodobné, že je Helm 3 již k dispozici, ale pokud ne, můžete ho nainstalovat podle průvodce, který poskytují dokumenty Helm, helm.sh/docs/intro/install/. Musíte mít již přístup k vašemu clusteru z příkazové řádky, kterou používáte. Váš poskytovatel cloudu má také průvodce, jak to udělat.


Nainstalujte Ingress Controller

Toto je první komponenta, kterou nainstalujeme do našeho clusteru a je také prvním konceptem kubernetes, který uvidíme. Ingress controller sedí u vstupních dveří vašeho clusteru, přijímá všechny webové požadavky a přesměrovává je na interní komponentu zodpovědnou za zodpovězení požadavku. Původně nebude nikdo připraven odpovídat, ale když nainstalujeme Redmine, bude přidán jako cíl pro požadavky.

Kubernetes poskytuje NGINX Ingress Controller, který použijeme. Jejich dokumentace vysvětluje, jak ho nainstalovat pomocí Helm:

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

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

První příkaz přidá repozitář aplikací, kde se nachází ingress controller, zatímco druhý ho nainstaluje do vašeho clusteru. Po dokončení příkazu se vytisknou některé informace, jak začít, včetně toho, jak získat veřejnou IP adresu přiřazenou k controlleru:

kubectl get services --watch

Výsledek bude podobný tomuto:

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

Zaznamenejte EXTERNAL-IP, protože ji budeme potřebovat v dalším kroku. Může se stát, že místo IP adresy získáte hodnotu <pending>. Trvá nějakou dobu, než cloud získá veřejnou IP adresu a přiřadí ji k vašemu clusteru. Počkejte pár sekund a IP by měla být k dispozici.


Vytvoření DNS záznamu A

Nyní, když máte IP adresu, můžete jít do prohlížeče a zjistit, jak váš cluster odpovídá. Samozřejmě, pokud ještě není nainstalována žádná aplikace, váš cluster odpoví chybou "404 Not Found". Vytvoříme DNS doménu, kterou můžeme přiřadit k této IP adrese, snadněji si ji zapamatujete než seznam čísel a teček.

Způsob vytvoření internetové domény pro váš Redmine výrazně závisí na vašem poskytovateli domén, ale ve všech případech vytvoříte DNS záznam A, který propojí název domény s vaší IP adresou. Jako referenci si můžete prohlédnout následující snímek obrazovky od poskytovatele DNS no-ip.com.

Vytváření našeho DNS záznamu A

Data, která musíte vyplnit, jsou název DNS a IP adresa. No-IP je přesně to, co potřebujeme k ilustraci vytvoření domény, ale pravděpodobně si vyberete jiného poskytovatele DNS. Proces je však v podstatě stejný u všech z nich.

Trvá nějakou dobu, než se nový záznam rozšíří, takže můžete použít příkaz ping k ověření, zda se IP adresa správně přeložila:

ping redminek8s.ddns.net


Další kroky

Nyní, když máme kontroler přístupu a DNS doménu, zbývá už jen nakonfigurovat HTTPS pro naše stránky a nainstalovat Redmine. Jako databázi použijeme PostgreSQL, ale uvidíte, jak snadné je vše nakonfigurovat pomocí Helm.

Zůstaňte naladěni na Redmine v Kubernetes část 2: Instalace Redmine.

Ultimátní upgrade Redmine? Snadné.

Získejte všechny výkonné nástroje pro dokonalé plánování, řízení a kontrolu projektů v jednom softwaru.

Vyzkoušejte Easy Redmine na 30 dní zdarma

Kompletní funkce, chráněno protokolem SSL, denní zálohování, ve vaší lokalitě.