手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea

您所在的位置:网站首页 藏龙岛二小怎么样好不好呢 手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea

手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea

2023-12-23 12:06| 来源: 网络整理| 查看: 265

前言

在前面的文章中,演示了如何用 Docker 镜像和 Windows 二进制包来安装运行 Gitea。今天是玩转 Gitea 系列的使用 Helm 在 K3s 上安装 Gitea。

关于 Gitea 的其他安装和使用方式,可以查看公众号文章:Gitea 安装配置系列教程。

关于 K3s

K3s 是 Rancher 发布的一款 Kubernetes 轻量级发行版,拥有完整特性的同时安装和使用也非常方便。

K3s 的安装

K3s 的安装有多种方式,详细内容可以查看K3s 中文文档。本文搭建的 Kubernetes 运行环境如下:

服务器:使用 K3s 安装脚本安装 Kubernetes 发行版环境 管理员客户端:安装 kubectl 和 helm 命令行工具 使用如下命令安装 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

下载 Helm https://github.com/helm/helm/releases

解压安装

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: "[email protected]" # 设置 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 git.example.com 192.168.3.102 80 11m

将域名解析到 Ingress 之后可以使用 http://git.example.com 登录 Gitea 实例。

至此,在 Kubernetes 上成功安装了 Gitea 实例,接下来就可以开启 Gitea 之旅了。

正如开头所说,如果是生产级别的使用,需要根据每个公司的具体场景需求来做一些额外的配置,比如 PVC、LDAP、OAuth2、SMTP 等,这些也只需要修改 values.yaml 文件进行安装即可。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3