文章目录
Gitea介绍
Gitea概述
Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。
包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。
Gitea特性
功能特性
代码托管:Gitea⽀持创建和管理仓库、浏览提交历史和代码⽂件、审查和合并代码提交、管理协作者、管理分⽀等。它还⽀持许多常见的Git特性,⽐如标签、Cherry-pick、hook、集成协作⼯具等。
轻量级和快速: Gitea 的设计目标之一就是轻量级和快速响应。它不像一些大型的代码托管平台那样臃肿,因此在性能方面表现出色,适用于资源有限的服务器环境。由于其轻量级设计,Gitea 在资源消耗方面相对较低,可以在资源有限的环境下运行良好。
易于部署和维护: 轻松地部署在各种服务器上,不需要复杂的配置和依赖。这使得个人开发者或小团队可以方便地设置和管理自己的 Git 服务。
安全性: Gitea 注重安全性,提供了用户权限管理、访问控制列表等功能,可以确保代码和数据的安全性。
代码评审:代码评审同时支持 Pull Request workflow 和 AGit workflow。评审⼈可以在线浏览代码,并提交评审意见或问题。 提交者可以接收到评审意见,并在线回 复或修改代码。代码评审可以帮助用户和企业提⾼代码质量。
CI/CD: Gitea Actions⽀持 CI/CD 功能,该功能兼容 GitHub Actions,⽤⼾可以采用熟悉的YAML格式编写workflows,也可以重⽤⼤量的已有的 Actions 插件。Actions 插件支持从任意的 Git 网站中下载。
项目管理:Gitea 通过看板和⼯单来跟踪⼀个项⽬的需求,功能和bug。⼯单⽀持分支,标签、⾥程碑、 指派、时间跟踪、到期时间、依赖关系等功能。
制品库: Gitea支持超过 20 种不同种类的公有或私有软件包管理,包括:Cargo, Chef, Composer, Conan, Conda, Container, Helm, Maven, npm, NuGet, Pub, PyPI, RubyGems, Vagrant等
开源社区支持: Gitea 是一个基于 MIT 许可证的开源项目,Gitea 拥有一个活跃的开源社区,能够持续地进行开发和改进,同时也积极接受社区贡献,保持了平台的更新和创新。
多语言支持: Gitea 提供多种语言界面,适应全球范围内的用户,促进了国际化和本地化。
提示 :更多 Gitea 介绍参考:关于Gitea
Gitea正式部署
资源获取
代码仓库计划采用轻量级开源 Gitea 技术栈。
- 获取资源
通过 helm 获取部署资源。
shell
[root@master01 ~]# mkdir -p gitea/tls
[root@master01 ~]# cd gitea/
[root@master01 gitea]# helm repo add gitea https://dl.gitea.com/charts
[root@master01 gitea]# helm repo update
[root@master01 gitea]# helm pull gitea/gitea
[root@master01 gitea]# ll
total 448K
-rw-r--r-- 1 root root 445K Jan 10 12:21 gitea-12.4.0.tgz
drwxr-xr-x 2 root root 6 Jan 10 12:21 tls
准备证书
将证书上传至对应目录。
shell
[root@master01 gitea]# ll tls/
total 12K
-rw-r--r-- 1 root root 4.4K Jan 9 20:58 gitea.k8sy.com.key
-rw-r--r-- 1 root root 1.7K Jan 9 20:58 gitea.k8sy.com.pem
[root@master01 tls]# kubectl -n mygitea create secret tls gitea-k8sy-com-cert \
--cert=/root/gitea/tls/gitea.k8sy.com.pem \
--key=/root/gitea/tls/gitea.k8sy.com.key
自定义配置
根据当前环境创建自定义配置:
- 开启ingress,并配置域名,使用提前创建的证书;
- 使用持久化存储,并直接使用已有的 StorageClass ;
- Valkey Cluster 与 Valkey 不可同时启用,PostgreSQL 与 PostgreSQL-HA 不可同时开启,默认开启了 Cluster 和 PostgreSQL-HA ,需要手动关闭;
- 设置相关持久卷的大小。
当前 helm 部署 gitea 会默认启用 Valkey Cluster 和 PostgreSQL-HA 且这两个组件为子 chart 方式引入,Valkey Cluster 充当缓存,PostgreSQL-HA 是高可以数据库,gitea 支持的数据库有多种,可以手动指定。
本环境为内部测试使用,将取消Valkey Cluster 和 PostgreSQL-HA ,采用 Valkey 和 PostgreSQL 。
提示 :更多Gitea Chart 修改参考Gitea Helm Chart 。
- 修改主配置
shell
[root@master01 gitea]# cat >myvalues.yaml<<'EOF'
ingress:
enabled: true
className: "nginx"
hosts:
- host: gitea.k8sy.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: gitea-k8sy-com-cert
hosts:
- gitea.k8sy.com
persistence:
storageClass: "longhorn"
size: 2Gi
valkey-cluster:
enabled: false
valkey:
enabled: true
primary:
persistence:
storageClass: longhorn
size: 1Gi
postgresql-ha:
enabled: false
postgresql:
enabled: true
global:
postgresql:
auth:
username: gitea
password: giteaPass123
database: gitea
service:
ports:
postgresql: 5432
primary:
persistence:
enabled: true
storageClass: longhorn
size: 2Gi
gitea:
admin:
username: gitadmin
password: AdminPassword123
email: admin@gitea.shwyjz.cn
EOF
正式部署
shell
[root@master01 gitea]# helm upgrade --install gitea gitea/gitea --create-namespace --namespace mygitea -f myvalues.yaml
确认验证
- 部署确认
shell
[root@master01 gitea]# kubectl -n mygitea get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
gitea-557f5f8845-7lpmm 1/1 Init:2/3 0 8s 10.10.19.124 worker03 <none> <none>
gitea-postgresql-0 1/1 Running 0 35s 10.10.19.121 worker03 <none> <none>
gitea-valkey-primary-0 1/1 Running 0 35s 10.10.19.105 worker03 <none> <none>
[root@master01 gitea]# kubectl -n mygitea get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
gitea-557f5f8845-7lpmm 0/1 Running 0 20s 10.10.19.124 worker03 <none> <none>
gitea-postgresql-0 1/1 Running 0 47s 10.10.19.121 worker03 <none> <none>
gitea-valkey-primary-0 1/1 Running 0 47s 10.10.19.105 worker03 <none> <none>
[root@master01 gitea]# kubectl -n mygitea get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
gitea-http ClusterIP None <none> 3000/TCP 2m55s app.kubernetes.io/instance=gitea,app.kubernetes.io/name=gitea
gitea-postgresql ClusterIP 10.20.128.163 <none> 5432/TCP 2m55s app.kubernetes.io/component=primary,app.kubernetes.io/instance=gitea,app.kubernetes.io/name=postgresql
gitea-postgresql-hl ClusterIP None <none> 5432/TCP 2m55s app.kubernetes.io/component=primary,app.kubernetes.io/instance=gitea,app.kubernetes.io/name=postgresql
gitea-ssh ClusterIP None <none> 22/TCP 2m55s app.kubernetes.io/instance=gitea,app.kubernetes.io/name=gitea
gitea-valkey-headless ClusterIP None <none> 6379/TCP 2m55s app.kubernetes.io/instance=gitea,app.kubernetes.io/name=valkey
gitea-valkey-primary ClusterIP 10.20.135.87 <none> 6379/TCP 2m55s app.kubernetes.io/component=primary,app.kubernetes.io/instance=gitea,app.kubernetes.io/name=valkey
[root@master01 gitea]# kubectl -n mygitea get ingress -o wide
NAME CLASS HOSTS ADDRESS PORTS AGE
gitea nginx gitea.k8sy.com 10.20.173.226 80, 443 2m59s
- 访问确认
浏览器访问网页: https://gitea.k8sy.com 。

使用 gitadmin / AdminPassword123 登录平台。

登录后可以创建仓库、组织等。
