Redmine su Kubernetes - Sezione 2: utilità Redmine
Puoi farlo anche in Redmine su Kubernetes. Dopodiché, puoi farlo in modo semplice e veloce in Redmine.
Raccontare la parte 1
Ormai non vedrai l'ora di installare Redmine su Kubernetes. Dopo tutto, è per questo che sei venuto, giusto?
In Redmine in Kubernetes - Parte 1: Preparazione dell'ambiente, abbiamo installato Ingress Controller, 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.
HTTPS con cert-manager
Sebbene potremmo 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 HTTPS non viene utilizzato da un sito Web.
In genere abilitare HTTPS non è un compito banale, in quanto è necessario acquistare un certificato e caricarlo sul proprio sito, rinnovarlo dopo un certo tempo e ripetere il processo. Cert-manager automatizza tutto questo, compreso il rinnovo dei certificati, e ottiene anche certificati gratuiti. Puoi vedere maggiori informazioni su il loro sito, ma ti spiegherò tutto ciò che devi sapere dopo.
Installa cert-manager
Eseguire i passaggi seguenti per installare cert-manager nel cluster:
helm repo aggiungi jetstack https://charts.jetstack.io && helm repo update
helm install cert-manager jetstack / cert-manager --set installCRDs = true
Per prima cosa aggiungi il repository dove si trova cert-manager, quindi installa la versione più recente.
Connettersi all'autorità di certificazione
Ora dobbiamo istruire cert-manager a connettersi al provider di certificati di nostra scelta. Useremo 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 kubernet che scriviamo e applichiamo al cluster. Potresti aver notato che mostra come connettersi a LetsEncrypt, ma descrive anche il controller Ingress che abbiamo creato nella Parte 1 (La classe: nginx alla fine) Questo tipo di configurazione ha alcune linee con spazi per indicare la dipendenza di alcune proprietà da altri. Mantenere gli spazi come mostrato per assicurarsi che il file sia letto e applicato correttamente.
Ora il tuo cluster è abilitato HTTPS. Ogni volta che installiamo un'applicazione, possiamo insegnare a lavorare con HTTPS e voilà! L'intero processo di ottenimento del certificato verrà eseguito automaticamente dietro le quinte.
Installazione di Redmine
Questo è quello che stavamo tutti aspettando. Possiamo installare Redmine in diversi modi, ma di gran lunga il più conveniente è usare Helm. Come abbiamo già fatto, per prima cosa aggiungiamo il repository dove Redmine lo è
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 un comportamento personalizzato che desideriamo avere Redmine.
Separeremo tutte le configurazioni nella loro sezione ma le inserirai tutte nello stesso file, una dopo l'altra. Chiama il file valori.yaml.
Tutte le applicazioni Helm hanno un file valor.yaml con tutte le possibili configurazioni che possono essere fatte all'applicazione. Quando creiamo i nostri valori.yaml definiamo i cambiamenti che vogliamo. Qualsiasi valore che non includiamo nel nostro file verrà lasciato così com'è nel file predefinito.
Tutti i valori predefiniti sono disponibili anche nella pagina dell'applicazione del timone, https://hub.helm.sh/charts/bitnami/redmine. Vai avanti e controlla tutte le configurazioni.
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 è installato, sarai in grado di accedervi con questo utente per configurare la tua nuova installazione.
Database PostgreSQL
Per impostazione predefinita, la nostra installazione di Helm richiederà la creazione di un database mariadb. Configureremo invece la nostra installazione per utilizzare PostgreSQL. Devi 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 dire esplicitamente alla nostra installazione che non vogliamo che MariaDB sia installata insieme alla configurazione per il database PostgreSQL.
Configurazione del nome DNS
La configurazione seguente è l'altra faccia 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 durante la creazione del 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 Ingress Controller e con l'Emittente cluster che abbiamo creato in precedenza.
Ora possiamo implementare Redmine con la nostra configurazione personalizzata:
helm installa Redmine -f valori.yaml bitnami / redmine
Quella linea è simile alle altre linee di installazione del timone che abbiamo usato prima, ma questa volta forniamo un valore.yaml personalizzato. Questo è il modo di personalizzare qualsiasi applicazione Helm.
Abbiamo ancora bisogno di un po 'più di pazienza, poiché la creazione dell'applicazione richiede del tempo. È possibile eseguire questo comando per verificare lo stato dei contenitori dell'applicazione:
kubectl get pod --watch
Il comando restituirà qualcosa di simile a questo:
NOME READY STATUS RIAVVIA L'ETÀ
. . .
redmine-999c68dd9-x7h2k 1/1 Running 0 6m40s
redmine-postgresql-0 1/1 In esecuzione 0 6m40s
Devi aspettare fino a quando lo stato di entrambi i contenitori è 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 passare alla nostra nuova distribuzione:
Redmine è pronto
Concludendo
Kubernetes è uno strumento complesso per distribuire applicazioni, ma abbiamo navigato attraverso quella complessità con l'aiuto di Helm (non è previsto un gioco di parole) e abbiamo implementato un'installazione affidabile di Redmine.
È possibile trovare un riepilogo di questo how-to nel seguente repository git: https://github.com/lcofre/redmine-on-k8s. Sentiti libero di confrontarti con i tuoi file se rimani bloccato.
Abbiamo escluso alcuni concetti dalla discussione perché erano complessi o perché la spiegazione era specifica per il cloud. Tra questi ci sono la velocità e la prontezza della tua applicazione, la configurazione della posta in arrivo e la scalabilità orizzontale per gestire più carico. Facci sapere di seguito cosa ti interessa di più in modo che possiamo discuterne in un futuro how-to.
Hai un problema con Redmine? sì.
Se hai problemi con l'alimentazione, non preoccuparti più.