En la entrada anterior, Revisión de la Helm chart oficial de Gitea, analicé la chart oficial de Gitea. Después de revisarla, en esta entrada explico cómo instalar Gitea a partir de la chart oficial usando Helm.
Antes de instalar Gitea, creamos el namespace code
, en el que desplegaremos Gitea:
---
kind: Namespace
apiVersion: v1
metadata:
name: code
La instalación de Gitea usando la chart oficial se describe en la documentación Installation with Helm (on Kubernetes); consiste en dos pasos:
- Añadir el repo oficial Helm para Gitea
helm repo add gitea-charts https://dl.gitea.io/charts/
- Instalar la chart de Gitea
La cuestión es que, en general, no queremos instalar la chart con los valores por defecto; algunos valores serán específicos para cada instalación y por tanto debemos configurarlos.
Helm permite sobreescribir los valores por defecto en el comando de ejecución de helm install
de varios modos: usando --values/-f
o --set
o --set-file
.
Descargamos el fichero values.yaml
del repositorio oficial de la chart para Gitea:
wget -O values.original.yaml \
> https://gitea.com/gitea/helm-chart/raw/branch/master/values.yaml
Copiamos el fichero original para tener una copia de seguridad:
cp values.original.yaml values.custom.yaml
Editamos el fichero para adaptarlo a nuestro entorno e instalamos con (usando casi todos los valores por defecto, excepto que he deshabilitado memcache y que la base de datos es MariaDB (y no PostgreSQL)):
$ helm install gitea -n code -f values.custom.yaml gitea-charts/gitea
NAME: gitea
LAST DEPLOYED: Sat May 29 11:49:17 2021
NAMESPACE: code
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
echo "Visit http://127.0.0.1:3000 to use your application"
kubectl --namespace code port-forward svc/gitea-http 3000:3000
En las pruebas que he realizado, si se deshabilitan las tres bases de datos indicadas, la instalación de la Helm Chart falla, aunque Gitea también soporta SQLite3.
Como vemos, al no usar un Ingress (y el Service es de tipo ClusterIP), sólo podemos acceder a Gitea usando kubectl port-forward
, lo que no resulta muy útil.
Configuración del Ingress
Una vez validada la instalación de Gitea, actualizamos la configuración para incluir un Ingress.
La configuración del Ingress depende del Ingress Controller instalado; en el caso de k3d (1.19.4), el Ingress Controller es Traefik.
En el fichero values.custom.yaml
añadimos las anotaciones necesarias para Traefik y el nombre del host a través del cual accedemos a Gitea (resoluble a través de una entrada en mi fichero /etc/hosts
):
...
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: traefik
ingress.kubernetes.io/ssl-redirect: "false"
hosts:
- code.k3d.lab
tls: []
...
Con estas modificaciones, actualizamos la release de Gitea en el clúster:
$ helm upgrade -n code gitea gitea-charts/gitea -f values.custom.yaml
Release "gitea" has been upgraded. Happy Helming!
NAME: gitea
LAST DEPLOYED: Sat May 29 18:44:16 2021
NAMESPACE: code
STATUS: deployed
REVISION: 2
NOTES:
1. Get the application URL by running these commands:
http://code.k3d.lab/
Configuración de Gitea: gitea.config
Con Gitea desplegado, el siguiente paso es configurar la aplicación a través del bloque gitea.config
. En esta sección podemos modificar el valor de cualquiera de las variables que aparecen en el fichero app.ini
1.
Por mostrar cómo realizar la configuración, en el fichero values.custom.yaml
he modificado la landing page a “login” y eliminado la posibilidad de que los usuarios creen sus propias cuentas (debe generarlas el administrador de Gitea):
config:
server:
LANDING_PAGE: login
service:
DISABLE_REGISTRATION: true
Siguientes passos
En un escenario real, sería necesario configurar el acceso a la aplicación usando HTTPS. Para ello, es necesario generar un certificado y configurarlo en el Ingress.
La chart ya incluye el campo TLS en la sección sobre Ingress, así que es posible configurarlo directamente desde la configuración de la chart.
En resumen, excepto el problema para desplegar usando SQLite -que probablemente no deberías hacer nunca en un entorno productivo-, la chart oficial permite realizar el despliegue de Gitea sin complicaciones y con toda la flexibilidad posible: empezamos con un despliegue básico, con los componentes mínimos y a medida que lo necesitemos, podemos habilitar y configurar componentes adicionales, como la cache o los proveedores de autenticación externos; y ¡todo con un sencillo comando helm upgrade
!