附058.Kubernetes Gitea部署

文章目录

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

自定义配置

根据当前环境创建自定义配置:

  1. 开启ingress,并配置域名,使用提前创建的证书;
  2. 使用持久化存储,并直接使用已有的 StorageClass ;
  3. Valkey Cluster 与 Valkey 不可同时启用,PostgreSQL 与 PostgreSQL-HA 不可同时开启,默认开启了 Cluster 和 PostgreSQL-HA ,需要手动关闭;
  4. 设置相关持久卷的大小。

当前 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 登录平台。

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

相关推荐
没有bug.的程序员1 天前
Kubernetes 与微服务的融合架构:调度、弹性、健康检查深度协同
jvm·微服务·云原生·架构·kubernetes·健康检查·弹性伸缩
Kendra9191 天前
Kubernetes 常用命令
云原生·容器·kubernetes
2501_939909052 天前
k8s基础与安装部署
云原生·容器·kubernetes
谷隐凡二2 天前
Kubernetes Route控制器简单介绍
java·容器·kubernetes
慧一居士2 天前
Gitea和GitLab对比
运维·gitlab·gitea
李少兄2 天前
Kubernetes 日志管理
docker·容器·kubernetes
秋饼2 天前
【K8S测试程序--git地址】
git·容器·kubernetes
oMcLin2 天前
如何在RHEL 9上配置并优化Kubernetes 1.23高可用集群,提升大规模容器化应用的自动化部署与管理?
kubernetes·自动化·php
ghostwritten2 天前
Kubernetes 网络模式深入解析?
网络·容器·kubernetes