Redmine i Kubernetes - Del 2: Installera Redmine

6/30/2020
8 minuter
Lukáš Beňa
Detta är den andra delen av serien om att distribuera Redmine i Kubernetes. I den här artikeln kommer vi att ge instruktioner om hur man distribuerar en pålitlig installation av Redmine.

Återberättelse Del 1

Vid det här laget ser du förmodligen fram emot installationen av Redmine på Kubernetes. Det är ju trots allt det du kom hit för, eller hur?

I Redmine på Kubernetes - Del 1: Förbereda miljön installerade vi Ingress Controller, en komponent för att omdirigera internetförfrågningar inuti ditt kluster, och vi skapade en DNS-domän, redminek8s.ddns.net. Nu behöver vi bara konfigurera HTTPS och vi ska göra om att distribuera Redmine.


HTTPS med cert-hanterare

Även om vi kan behålla Redmine som HTTP har HTTPS blivit standard på webbplatser, så mycket att de flesta webbläsare varnar dig för en säkerhetsrisk när HTTPS inte används på en webbplats.

Att aktivera HTTPS är en generell uppgift inte en trivial uppgift, du behöver köpa ett certifikat och ladda upp det till din webbplats, förnya det efter en viss tid och upprepad process. Cert-manager automatiserar allt detta, inklusive förnyelse av certifikat och till och med erhåller gratis certifikat. Du kan se mer information på deras webbplats, men jag kommer att förklara allt du behöver veta härnäst.


Installera cert-manager

Utför följande steg för att installera cert-manager i ditt kluster:

rodret repo lägg till jetstack https://charts.jetstack.io && helm repo-uppdatering

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

Först lägger du till registret där cert-manager finns och sedan installerar du den senaste versionen.


Anslut till certifikatmyndigheten

Nu behöver vi inera cert-manager att ansluta till certifikatleverantören vi väljer. Vi kommer att använda LetsEncrypt, en gratis certifikatmyndighet. Skapa först denna fil (kom ihåg att ersätta med en riktig e-postadress) och döp den till cluster-issuer.yaml

Apiversion: cert-manager.io/v1alpha2

typ: ClusterIssuer

Metadata:

  namn: letsencrypt

spec:

  höjdpunkt:

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

    e-post:

    PrivateKeysCretref:

      namn: letsencrypt

    lösare:

    - http01:

        inträde:

          klass: nginx

Tillämpa sedan den på ditt kluster med

kubectl applicera -f cluster-emittent.yaml

Grattis! Filen ovan är den första Kubernetes-konfigurationen vi skriver och tillämpar på klustret. Du kanske har märkt att den visar hur man ansluter till LetsEncrypt, men den beskriver också Ingress Controller som vi skapat i Del 1 (klassen: nginx i slutet). Den här typen av konfiguration har några rader med mellanslag för att ange beroende av vissa egenskaper till andra. Behåll dessa mellanslag som visa för att fastställa att filen läses och tillämpas korrekt.

Nu är ditt kluster aktiverat för HTTPS. När vi installerar och applikationer kan vi instruera den att fungera med HTTPS och voilà! Hela processen med att få certifikatet kommer att göras automatiskt i bakgrunden.


Installation av Redmine

Detta är vad vi har väntat på. Vi kan installera Redmine på några olika sätt, men det mest bekväma sättet är att använda Helm. Precis som vi gjorde tidigare, först lägger vi till lagret där Redmine finns

helm repo lägg till bitnami https://charts.bitnami.com/bitnami && helm repo-uppdatering

Men den här gången kommer vi att installera direkt, vi kommer att skapa en konfigurationsfil för att ange några anpassade beteenden som vi vill att Redmine ska ha.

Vi kommer att separera alla konfigurationer i egna avsnitt men du lägger dem alla i samma fil, en efter den andra. Döp filen till values.yaml.

Alla Helm-applikationer har en values.yaml-fil med alla möjliga konfigurationer som kan göras för applikationer. När vi skapar vår egen values.yaml definierar vi ändringarna vi vill ha. Alla värden som vi inte inkluderar i vår fil kommer att vara oförändrade i standardfilen.

Alla standardvärden kan också hittas på Helm-applikationens sida, https://hub.helm.sh/charts/bitnami/redmine. Gå vidare och kolla alla konfigurationer.


Första administratörsanvändaren

RedmineAnvändarnamn: adminUser

RedmineLösenord:

Detta steg är lika nödvändigt som lätt att förstå. Det är vår första användare på Redmine, då vi kommer att använda för att logga in för första gången.

När Redmine är installerat kommer du att kunna komma åt det med denna användare för att konfigurera din helt nya installation.


PostgreSQL-databas

Som standard kommer vår Helm-installation att kräva att skapa en mariadb-databas. Istället kommer vi att konfigurera vår installation med PostgreSQL. Du behöver också lägga till minst ett lösenord för att komma åt denna databas, som du kan se nedan

DatabaseType: PostgreSQL

Mariadb:

  aktiverad: falsk

PostgreSQL:

  aktiverad: sant

  postgresqlDatabas: Redmine

  postgresql Användarnamn: Redmine

  postgresqlPassword:

Vi måste tydligt tala om för vår installation att vi inte vill att MariaDB ska installeras tillsammans med konfigurationen för PostgreSQL-databasen.


DNS-namnkonfiguration

Konfigurationen nedan är den andra sidan av DNS-konfigurationen vi gjorde i Del 1. Som du kan aktivera TLS, protokollet bakom HTTPS, och ställer in värdnamnet vi använde när vi skapade vår DNS-post:

inträde:

  aktiverad: sant

  certManager: sant

  värdnamn: redminek8s.ddns.net

  tls: sant

  annoteringar:

    kubernetes.io/ingress.class: nginx

    Cert-manager.io/cluster-issuer: LETSENCRYPT

Också på de två sista raderna länkar vi vår applikation med Ingress Controller och med Cluster Issuer som vi skapat tidigare.

Nu kan vi distribuera Redmine med vår anpassade konfiguration:

helm installera Redmine -f values.yaml bitnami/redmine

Den raden liknar andra helm installera rader vi använde tidigare, men den här gången tillhandahåller vi en anpassad values.yaml. Detta är sättet att anpassa vilken Helm-applikation som helst.

Vi behöver lite mer tålamod ändå, eftersom skapandet av applikationen tar lite tid. Du kan köra det här kommandot för att kontrollera statusen för dina applikationer innehåller:

kubectl få pods --watch

Kommandot kommer att returnera något liknande:

NAMN KLAR STATUS OMSTART ÅLDER

. . .

redmine-999c68dd9-x7h2k    1/1     Kör   0          6m40s

redmine-postgresql-0 1/1 Kör 0 6m40s

Du måste vänta tills statusen för båda containrarna är Kör och alla är redo 1/1, vilket i mitt fall cirka 6 minuter.

Nu är allt klart för att öppna webbläsaren och gå till vår nya distribution:

Redmine är redo


Sammanfattning

Kubernetes är ett komplext verktyg för att distribuera applikationer, men vi navigerar genom komplexiteten med hjälp av Helm (ingen ordlek avsedd) och distribuerade en pålitlig installation av Redmine.

Du kan hitta en sammanfattning av denna guide i följande git-repo: https://github.com/lcofre/redmine-on-k8s. Känn dig fri att jämföra med dina filer om du fastnar.

Vi lämnade några begrepp utanför diskussionen eftersom de var komplexa eller förklaringar var molnspecifika. Bland dem finns Liveness och Readiness för din applikation, konfiguration av inkommande e-post och skalning för att hantera mer belastning. Låt oss veta nedan vad som intresserar dig mest så kan vi diskutera det i en framtida guide.

Den ultimata Redmine-uppgraderingen? Enkel.

Få alla kraftfulla verktyg för perfekt projektplanering, -hantering och -kontroll i en enda programvara.

Prova Easy Redmine i en 30 dagars gratis provperiod

Fullständiga funktioner, SSL-skyddad, dagliga säkerhetskopior, i din geografiska plats