使用官方 Helm Chart 安装 Gitea
Helm Chart
Helm 使用的包格式称为 chart。 chart 就是一个描述 Kubernetes 相关资源的文件集合。单个 chart 可以用来部署一些简单的应用, 类似 memcache pod,或者某些复杂的 HTTP 服务器以及 Web 全栈应用、数据库、缓存等等。
如果你想下载和查看 Gitea 官方发布的 Helm chart,但不安装它,你可以用这个命令:
helm repo add gitea https://dl.gitea.io/charts/
helm pull gitea/gitea --untar
这里使用 --untar
指令解压 gitea-*.tgz
压缩包。
Helm Chart 文件结构
Chart 是一个通过文件和目录组织的配置集合。目录名称就是 chart 名称(没有版本信息)。因而描述 Gitea 的chart 可以存储在 gitea/
目录中。
在这个目录中,Gitea 的 Helm Chart 有以下内容:
$ tree -L 1 gitea
gitea
├── Chart.lock
├── charts/ # 包含 chart 依赖的其他 chart
├── Chart.yaml # 包含了 chart 信息的 YAML 文件
├── CONTRIBUTING.md
├── LICENSE # 可选: 包含 chart 许可证的纯文本文件
├── Makefile
├── README.md # 可选: 可读的 README 文件
├── templates/ # 模板目录,当和 values 结合时,可生成有效的 Kubernetes manifest 文件
└── values.yaml # chart 默认的配置值
安装 Helm
阅读:安装 Helm
-
解压安装
tar -xvzf helm-*-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
添加 Helm 仓库
# Gitea 官方仓库
helm repo add gitea https://dl.gitea.io/charts/
# 其他 chart 仓库,包含 mariadb, memcached, mysql, postgresql
helm repo add bitnami https://charts.bitnami.com/bitnami
基于 Helm Chart 安装 Gitea
前提条件
- Kubernetes 1.12+
- Helm 3.0+
- 持久数据 PV
准备 Kubernets 环境的步骤可以参考前面的文章:安装 K3s
自定义 values
首先将 Helm Chart 的配置文件 values.yaml
拉取到本地:
helm show values gitea/gitea > gitea.yaml
Gitea Chart 包括 Gitea 核心软件,可选依赖 MySQL、MariaDB、PostgreSQL、Memcached,支持自定义 app.ini
、基于集群的SSH、持久数据存储、管理员、GPG签名、LDAP、OAuth2、Metrics 功能。完整的 values.yaml
文件内容较长,可以通过 Gitea Helm Chart 项目仓库查看。
自定义 Gitea Helm Chart 参数:
# 启用 Ingress
ingress:
enabled: true
hosts:
- host: git.example.com # 修改为你的域名
paths:
- path: / # 起始路径
pathType: Prefix
# 启用持久存储
persistence:
enabled: true
existingClaim:
size: 10Gi
accessModes:
- ReadWriteOnce
labels: {}
annotations: {}
storageClass:
subPath:
# 设置管理员账号和密码
gitea:
admin:
username: gitea_admin
password: r8sA8CPHD9!bt6d
email: "gitea@local.domain"
# 设置 Gitea 的配置,配置选项等同于 app.ini 文件中的定义
config:
APP_NAME: "My Git Repository"
# 启用 memcached
memcached:
enabled: true
service:
port: 11211
# 启用 postgresql
postgresql:
enabled: true
global:
postgresql:
postgresqlDatabase: gitea
postgresqlUsername: gitea
postgresqlPassword: gitea
servicePort: 5432
persistence:
size: 10Gi
参数说明:
- ingress:集成负载均衡和域名绑定;
- persistence:数据持久化存储。请注意,persistence 中留空的 storageClass 将导致 Kubernetes 使用默认 storageClass;
- gitea:是 Gitea 的配置内容,包括 admin、metrics、oauth 和 config 等。其中 config 映射了
app.ini
配置参数,这些内容最后都会有app.ini
文件的形式呈现; - memcached:用于数据缓存;
- postgresql:开启 PostgreSQL 作为外部数据库;
上述配置参数只做演示用,实际部署时需要根据自己的需求来决定安装哪些组件以及 PVC 的类型和容量。
更多配置参数请阅读:https://gitea.com/gitea/helm-chart
使用 Helm 安装 Gitea
在 Kubernetes 上创建一个 namespace:
kubectl create ns gitea
基于自定义的 gitea.yaml
安装 Gitea:
$ helm install gitea --namespace gitea -f gitea.yaml gitea/gitea
NAME: gitea
LAST DEPLOYED: Thu Jan 5 19:10:55 2023
NAMESPACE: gitea
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
http://git.example.com/
在 gitea namespace 下面会有 3 个 pod 生成:
$ kubectl -n gitea get pods
NAME READY STATUS RESTARTS AGE
gitea-memcached-c97bf6cf9-fjrcn 1/1 Running 0 3m20s
gitea-postgresql-0 1/1 Running 0 3m20s
gitea-0 1/1 Running 0 3m20s
整个过程会完成 Gitea 的初始化,可以在 pod 的 log 中进行查看:
$ kubectl -n gitea logs -f gitea-0
Defaulted container "gitea" out of: gitea, init-directories (init), init-app-ini (init), configure-gitea (init)
Generating /data/ssh/ssh_host_ed25519_key...
Generating /data/ssh/ssh_host_rsa_key...
Generating /data/ssh/ssh_host_dsa_key...
Generating /data/ssh/ssh_host_ecdsa_key...
Server listening on :: port 22.
Server listening on 0.0.0.0 port 22.
2023/01/05 11:14:48 cmd/web.go:106:runWeb() [I] Starting Gitea on PID: 17
查看 Ingress 状态:
$ kubectl -n gitea get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
gitea traefik git.example.com 192.168.3.127 80 10m
将域名解析到 IP 地址 <ADDRESS>
之后可以使用 http://git.example.com
登录 Gitea 实例。
至此,我们使用官方 Helm Chart 在 Kubernetes 上成功安装了 Gitea 实例,接下来就可以开启 Gitea 之旅了。