手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea
前言
在前面的文章中,演示了如何用 Docker 镜像和 Windows 二进制包来安装运行 Gitea。今天是玩转 Gitea 系列的使用 Helm 在 K3s 上安装 Gitea。
关于 Gitea 的其他安装和使用方式,可以查看公众号文章:Gitea 安装配置系列教程。
关于 K3s
K3s 是 Rancher 发布的一款 Kubernetes 轻量级发行版,拥有完整特性的同时安装和使用也非常方便。
K3s 的安装
K3s 的安装有多种方式,详细内容可以查看K3s 中文文档。本文搭建的 Kubernetes 运行环境如下:
使用如下命令安装 K3s
# 方案一:会从 K8s 的 GitHub 仓库下载安装包
$ curl -sfL https://get.k3s.io | sh -
# 方案二:中国大陆用户,使用 Rancher 提供的阿里云 CDN 加速下载
$ curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
# 以下是安装过程输出的信息
[INFO] Finding release for channel stable
[INFO] Using v1.24.6+k3s1 as release
[INFO] Downloading hash rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/v1.24.6-k3s1/sha256sum-amd64.txt
[INFO] Downloading binary rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/v1.24.6-k3s1/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Skipping installation of SELinux RPM
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
可以用 kubectl
来查看安装是否成功:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
debian Ready control-plane,master 5m42s v1.24.6+k3s1
可以看到有一个单节点的 K3s 集群正在运行了。接下来就用 K3s 来运行 Gitea。
从外部访问 k3s
1.获得访问集群所需的配置文件 /etc/rancher/k3s/k3s.yaml
,将其复制到个人工作目录~/.kube/config
,或者其他能够访问到集群网络的客户机。
mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER ~/.kube/config
sudo chmod 600 ~/.kube/config
# 将 KUBECONFIG 添加到个人工作环境变量,便于 Helm、kubectl 读取
echo "export KUBECONFIG=~/.kube/config" >> ~/.bashrc
2.将配置文件 ~/.kube/config
中的 server: https://127.0.0.1:6443
更改为客户机可访问的服务器地址。
安装 kubectl
阅读:安装 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
安装 Helm
阅读:安装 Helm
解压安装
tar -xvzf helm-*-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
添加 Helm 仓库
# 官方仓库 bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
# Gitea 仓库
helm repo add gitea https://dl.gitea.io/charts/
使用 Helm 安装 Gitea
前提条件
在 K3s 上安装 Gitea 需要确保提前安装了 Helm,v2 或 v3 版本均可,但是建议用 v3,本文的 Helm 版本信息如下:
$ helm version
version.BuildInfo{Version:"v3.10.0", GitCommit:"ce66412a723e4d89555dc67217607c6579ffcb21", GitTreeState:"clean", GoVersion:"go1.18.6"}
添加 Gitea Helm Chart 仓库:
$ helm repo add gitea https://dl.gitea.io/charts
"gitea" has been added to your repositories
更新 Helm Chart 本地缓存
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "gitea" chart repository
Update Complete. ⎈Happy Helming!⎈
Gitea Helm Chart 定制
K3s 上安装 Gitea,是通过 Helm 实现的。首先将 Gitea Helm chart 的 values.yaml 配置文件拉取到本地:
helm show values gitea/gitea > gitea.yaml
由于 Gitea Helm Chart 包含多个组件,包括核心组件 Gitea、可选依赖组件(诸如 MySQL、MariaDB、PostgreSQL、Memcached 等)、可选功能集成(Ingress、Service、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@example.com"
# 设置 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:用于数据缓存。一旦启用这项配置,会自动在
app.ini
中生成下面的配置:
[cache]
ADAPTER = memcache
ENABLED = true
HOST = RELEASE-NAME-memcached.default.svc.cluster.local:11211
- postgresql:开启 PostgreSQL 作为外部数据库
上述配置参数只做演示用,实际部署时需要根据自己的需求来决定安装哪些组件以及 PVC 的类型和容量。
更多配置参数请阅读:https://gitea.com/gitea/helm-chart
用 Helm 安装 Gitea
先创建一个 namespace:
kubectl create ns gitea
执行 helm install 命令,安装 Gitea:
$ helm install gitea --namespace gitea -f gitea.yaml gitea/gitea
NAME: gitea
LAST DEPLOYED: Wed Oct 12 13:19:29 2022
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-77fc54d6fb-sft9q 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.
2022/10/12 05:21:02 cmd/web.go:106:runWeb() [I] Starting Gitea on PID: 17
2022/10/12 05:21:02 cmd/web.go:157:runWeb() [I] Global init
查看 Ingress 状态:
$ kubectl -n gitea get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
gitea <none> git.example.com 192.168.3.102 80 11m
将域名解析到 Ingress 之后可以使用 http://git.example.com
登录 Gitea 实例。
至此,在 Kubernetes 上成功安装了 Gitea 实例,接下来就可以开启 Gitea 之旅了。
正如开头所说,如果是生产级别的使用,需要根据每个公司的具体场景需求来做一些额外的配置,比如 PVC、LDAP、OAuth2、SMTP 等,这些也只需要修改
values.yaml
文件进行安装即可。
手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea的更多相关文章
- 手把手教你玩转 Gitea|在 Windows 系统上安装 Gitea
Gitea 支持在 Windows 系统上安装和使用.Gitea 本身作为一个单体应用程序,即点即用,如需长期驻留作为后台服务并开机运行就要依靠 Windows 服务工具 sc.exe. 通过本文,你 ...
- 手把手教你玩转nginx负载均衡(二)----安装虚拟机操作系统
引言 在上一篇,我们组装好了虚拟机的硬件部分,那么现在我们就要把操作系统装上了,既然是服务器,那么安装linux操作系统是个比较好的选择,如果你喜欢的话,安装windows也是没有任何问题的 我这里选 ...
- 手把手教你玩转SOCKET模型之重叠I/O篇(下)
四. 实现重叠模型的步骤 作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了.其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却 ...
- 转:变手把手教你玩转SOCKET模型之重叠I/O篇
手把手教你玩转SOCKET模型之重叠I/O篇 “身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人.我也希望大家能把自己的所学和他人一起分享,不要去鄙 ...
- 手把手教你玩转 CSS3 3D 技术
css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2D事物,从而展现3 ...
- 手把手教你玩转CSS3 3D技术
手把手教你玩转 CSS3 3D 技术 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上 ...
- 知识全聚集 .Net Core 技术突破 | 我用C#手把手教你玩微信自动化一
知识全聚集 .Net Core 技术突破 | 我用C#手把手教你玩微信自动化一 教程 01 | 模块化方案一 02 | 模块化方案二 03 | 简单说说工作单元 其他教程预览 分库分表项目实战教程 G ...
- 手把手教你玩转 Gitea|使用 Docker 安装 Gitea
使用 Docker 安装 Gitea 的过程非常简单的,堪比"一键式"安装.Gitea 安装使用系列教程将会从多种方式进行全方位的实操演示. 视频演示中使用腾讯云实验环境安装 Do ...
- 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
手把手叫你玩转网络编程系列之三 完毕port(Completion Port)具体解释 ...
随机推荐
- Veux mapState、mapGetters、mapActions、mapMutations && Vuex命名空间
1 # 一.四个map方法的使用 2 # 1.mapState方法:用于帮助我们映射state中的数据为计算属性 3 computed:{ 4 // sum(){ 5 // return this.$ ...
- ViewPlane类定义
这个类主要是记录了所有跟视图窗口有关的数据,用于显示. 类声明: #pragma once #ifndef __VIEWPLANE_HEADER__ #define __VIEWPLANE_HEADE ...
- Downie for Mac最强视频下载工具(支持B站优酷土豆腾讯等)
我搜集到的一款简单拖放链接到Downie,它就会下载该网站上的视频.理论可以下载各种视频网站上的视频! 应用介绍 Downie 是一款Mac平台上的优秀视频下载软件,使用非常简单,只需将下载链接放置D ...
- Flink介绍
1,简介 Flink是Apache基金会旗下的一个开源大数据处理框架.Flink很牛逼,好多牛逼的公司都在用. 2,特征 *高吞吐和低延迟.每秒处理百万个时间,毫秒级延迟.有点既要老婆好,又要彩礼少的 ...
- [NOI P模拟赛] 传统艺能(子序列自动机、矩阵乘法,线段树)
(2:00)OID:"完了,蓝屏了!"(代码全消失) 众人欢呼 OID:开机,"原题测试--" (30min later)OID 开始传统艺能: " ...
- CF1204E Natasha, Sasha and the Prefix Sums (卡塔兰数推理)
题面 题解 把题意变换一下,从(0,0)走到(n,m),每次只能网右或往上走,所以假设最大前缀和为f(n),那么走的时候就要到达但不超过 y = x-f(n) 这条线, 我们可以枚举答案,然后乘上方案 ...
- 【JDBC】学习路径10-c3p0数据源的使用(JDBC完结)
第一章:下载 c3p0官网:https://www.mchange.com/projects/c3p0/ 这个是SourceForge提供的下载地址:https://sourceforge.net/p ...
- pod资源的健康检查-readiness探针的httpGet使用
livenessProbe:健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器 readinessProbe:可用性检查,周期性检查服务是否可用,不可用将从service的endpoint ...
- RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。
系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...
- SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式
响应get和post请求 SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应 项目结构和配置文件与SpringMVC博客集中的"SpringMVC ...