Redmine in Kubernetes - Parte 2: Installazione di Redmine in Kubernetes

6/30/2020
8 minuti
Lukáš Beňa -> Lukáš Beňa

Questa è la seconda parte della serie su come distribuire Redmine in Kubernetes. In questo articolo, forniamo istruzioni su come distribuire un'installazione affidabile di Redmine.

Racconto Parte 1

Adesso devi essere ansioso per l'installazione di Redmine su Kubernetes. Dopotutto, è per questo che sei qui, giusto?

In Redmine in Kubernetes - Parte 1: Preparazione dell'ambiente, abbiamo installato il Controller Ingress, un componente per reindirizzare le richieste internet all'interno del tuo cluster, e abbiamo creato un dominio DNS, redminek8s.ddns.net. Ora dobbiamo solo configurare HTTPS e siamo pronti per distribuire Redmine.


Gestore di concerti HTTPS

Anche se dover mantenere il nostro Redmine come HTTP, HTTPS è diventato lo standard per i siti web, tanto che la maggior parte dei browser ti avvisa di un problema di sicurezza quando un sito web non utilizza HTTPS.

Tipicamente, abilitare HTTPS non è un compito banale, poiché è necessario acquistare un certificato e caricarlo sul tuo sito, rinnovarlo dopo un certo tempo e ripetere il processo. Cert-manager automatizza tutto questo, compreso il rinnovo dei certificati e persino l'ottenimento di certificati gratuiti. Puoi vedere ulteriori informazioni sul il loro sito, ma spiegherò tutto ciò che devi sapere di seguito.


Installare cert-manager

Segui i seguenti passaggi per installare cert-manager nel tuo cluster:

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

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

Prima aggiungi il repository dove si trova cert-manager, quindi installa la sua ultima versione.


Collegarsi all'autorità di certificazione

Ora dobbiamo istruire cert-manager a connessioni al provider di certificati che abbiamo scelto. Utilizzeremo LetsEncrypt, un'autorità di certificazione gratuita. Crea prima questo file (ricorda di sostituire con un indirizzo email reale) e chiamalo cluster-issuer.yaml

apiVersion: cert-manager.io/v1alpha2

tipo: ClusterIssuer

metadati:

  nome: letsencrypt

spec:

  acme:

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

    e-mail:

    PrivateKeySecretRef:

      nome: letsencrypt

    risolutori:

    -http01:

        ingresso:

          classe: nginx

Quindi applicalo al tuo cluster con

kubectl applicare -f cluster-issuer.yaml

Congratulazioni! Il file sopra è la prima configurazione di Kubernetes che scriviamo e applichiamo al cluster. aver notato che mostra come connettersi a LetsEncrypt, ma descrivere anche il Controller Ingress che abbiamo creato nella Parte 1 (La classe: nginx alla fine). Questo tipo di configurazione ha alcune righe con spazi per indicare la dipendenza di alcune proprietà da altre. Mantieni quegli spazi come mostrato per garantire che il file venga letto e applicato correttamente.

Ora il tuo cluster è abilitato per HTTPS. Ogni volta che installiamo un'applicazione, possiamo istruirla a funzionare con HTTPS e voilà! L'intero processo di ottenimento del certificato verrà eseguito automaticamente dietro le quinte.


Installazione di Redmine

Questo è ciò che stavamo tutti aspettando. Possiamo installare Redmine in diversi modi, ma di gran lunga il più conveniente e utilizzare Helm. Come abbiamo già fatto in precedenza, prima aggiungiamo il repository in cui si trova Redmine

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

Ma questa volta invece di installare subito, creeremo un file di configurazione per indicare alcuni comportamenti personalizzati che vogliamo che Redmine abbia.

Separamo tutte le informazioni nella loro sezione ma le mettiamo tutte nello stesso file, una dopo l'altra. Chiamiamo il file values.yaml.

Tutte le applicazioni Helm hanno un file values.yaml con tutte le possibili combinazioni che possono essere fatte per l'applicazione. Quando creiamo il nostro values.yaml definiamo le modifiche che vogliamo. Qualsiasi valore che non includiamo nel nostro file verrà lasciato come è nel file predefinito.

Tutti i valori predefiniti possono essere trovati anche sulla pagina dell'applicazione Helm, https://hub.helm.sh/charts/bitnami/redmine. Vai avanti e controlla tutte le tracce.


Primo utente amministratore

Nome utente redmine: utente admin

RedminePassword:

Questo passaggio è tanto necessario quanto facile da capire. È il nostro primo utente su Redmine, quello che useremo per accedere per la prima volta.

Quando Redmine sarà installato, potrai accedervi con questo utente per configurare la tua nuova installazione.


Banca dati PostgreSQL

Per impostazione predefinita, la nostra installazione di Helm richiederà la creazione di un database mariadb. Configureremo invece la nostra installazione per utilizzare PostgreSQL. È necessario anche aggiungere almeno una password per accedere a questo database, come puoi vedere di seguito

tipo di database: postgresql

MariaDB:

  abilitato: falso

PostgreSQL:

  abilitato: vero

  postgresql Database: Redmine

  postgresql Nome utente: Redmine

  postgresqlPassword:

Dobbiamo indicare alla nostra installazione che non vogliamo che MariaDB sia installato insieme alla configurazione per il database PostgreSQL.


Configurazione del nome DNS

La configurazione qui sotto è il contrario lato della configurazione DNS che abbiamo fatto nella Parte 1. Come puoi vedere, abilitiamo TLS, il protocollo dietro HTTPS, e impostiamo il nome host che abbiamo usato quando abbiamo creato il nostro record DNS:

ingresso:

  abilitato: vero

  certManager: vero

  nome host: redminek8s.ddns.net

  tls: vero

  annotazioni:

    kubernetes.io/ingress.class: nginx

    cert-manager.io/cluster-issuer:letsencrypt

Anche nelle ultime due righe colleghiamo la nostra applicazione con il Controller Ingress e con il Cluster Issuer che abbiamo creato in precedenza.

Ora possiamo distribuire Redmine con la nostra configurazione personalizzata:

helm installa Redmine -f valori.yaml bitnami / redmine

Questa riga è simile ad altre righe di installazione di helm che abbiamo usato in precedenza, ma questa volta riporta un values.yaml personalizzato. Questo è il modo per personalizzare qualsiasi applicazione Helm.

Dobbiamo ancora avere un po' di pazienza, poiché la creazione dell'applicazione richiede del tempo. Puoi eseguire questo comando per verificare lo stato dei container dell'applicazione:

kubectl get pod --watch

Il comando restituirà qualcosa di simile a questo:

NOME PRONTO STATO RIACCESSIONI ETA'

. . .

redmine-999c68dd9-x7h2k 1/1 In esecuzione 0 6m40s

redmine-postgresql-0 1/1 In esecuzione 0 6m40s

Devi aspettare finché lo stato di entrambi i contenitori non diventa In esecuzione e tutti sono pronti 1/1, che nel mio caso ha richiesto circa 6 minuti.

Ora tutto è pronto per aprire il browser e andare alla nostra nuova distribuzione:

Redmine è pronto


conclusione

Kubernetes è uno strumento complesso per distribuire applicazioni, ma abbiamo navigato attraverso questa complessità con l'aiuto di Helm (senza giochi di parole) e abbiamo distribuito un'installazione affidabile di Redmine.

Puoi trovare un riassunto di questo how-to nel seguente repository git: https://github.com/lcofre/redmine-on-k8s. Sentiti libero di confrontare i tuoi file se ti blocchi.

Abbiamo lasciato alcuni concetti dalla discussione perché erano complessi o la spiegazione era specifica del cloud. Tra di essi ci sono la Liveness e la Readiness della tua applicazione, la configurazione delle email in arrivo e la scalabilità per gestire un carico maggiore. Per favore, facci sapere qui sotto cosa ti interessa di più in modo da poterlo discutere in un futuro how-to.

L'aggiornamento definitivo di Redmine? Facile.

Ottieni tutti gli strumenti potenti per una pianificazione, gestione e controllo del progetto perfetti in un unico software.

Prova Easy Redmine gratuitamente per 30 giorni

Funzionalità completa, protetto da SSL, backup giornalieri, nella tua geolocalizzazione