DevOps 实践
目录
[TOC]
基础设施搭建
搭建 k3s
k3s 官网: [快速入门指南 K3s](https://docs.k3s.io/zh/quick-start)
安装
1
curl -sfL https://get.k3s.io | sh -如果在国内,可执行下方的指令进行加快下载速度
1
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
验证安装
1
kubectl version
部署 Traefik
- 安装 Helm
1
2
3
4
5
apt-get install curl gpg apt-transport-https --yes
curl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey | gpg --dearmor | tee /usr/share/keyrings/helm.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/helm.gpg] https://packages.buildkite.com/helm-linux/helm-debian/any/ any main" | tee /etc/apt/sources.list.d/helm-stable-debian.list
apt-get update
apt-get install helm
- 使用 Helm 部署 Traefik Proxy 代理服务:
- 更新 helm 库
1 2
helm repo add traefik https://traefik.github.io/charts helm repo update
- 创建 values.yaml 文件
1
vim values.yaml
填写内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
# values.yaml logs: general: level: DEBUG access: enabled: true ingressRoute: dashboard: # Web 仪表盘,可以查看各种监控指标 enabled: true matchRule: Host(`dashboard.localhost`) entryPoints: ["websecure"] middlewares: - name: traefik-dashboard-auth providers: kubernetesGateway: # 启用 k8s Gateway API enabled: true gateway: listeners: web: namespacePolicy: from: All extraObjects: - apiVersion: v1 kind: Secret metadata: name: traefik-dashboard-auth-secret type: kubernetes.io/basic-auth stringData: username: admin password: admin123 # 建议使用更复杂的密码 - apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: traefik-dashboard-auth spec: basicAuth: secret: traefik-dashboard-auth-secret
如果想省些资源,可以不启用 Web 仪表盘:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# values.yaml logs: general: level: DEBUG access: enabled: true ingressRoute: dashboard: enabled: false providers: kubernetesGateway: enabled: true gateway: listeners: web: namespacePolicy: from: All
按下 ESC 退出编辑,然后输入
:wq保存并退出- 使用 Helm 进行安装
1
helm install traefik treafik/traefik -f values.yaml --wait
加上
--debug参数可以输出详细安装过程- 安装成功后,可执行以下指令进行检查
1
kubectl get po -l "app.kubernetes.io/name=traefik"
PS: 接下来的流程,所有的应用(如 gitea 仓库等)均会部署到 k3s 集群中
(可选)安装 frp 代理服务
frp 仓库: frp
PS: 因为本人所使用的云主机硬件资源不足以同时运行诸如 Harbor 镜像仓库等需要较多的内存资源的应用,所以采用内网穿透的方式将部署在内网机器上的应用暴露到公网中
服务端安装
在服务端主机上下载 frp 最新发布版本 Releases · fatedier/frp
2026-03-08 最新版本 v0.67.0, 目标服务端主机为 Debian Liunx
1
wget https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gz
解压
1 2
tar -xzvf frp_0.67.0_linux_amd64.tar.gz mv frp_0.67.0_linux_amd64 frp
生成访问 token
1
openssl rand -base64 64 | head -c 64
配置
frps.toml服务端配置1 2
cd frp vim frps.toml按下 Insert 键输入内容, frps.toml 内容示例:
1 2 3 4 5
# 绑定运行端口 bindPort = 7000 # 访问鉴权 Token, 填写上一步骤生成的 token auth.token = "avscsd12esdad12dasdasdsa12e123esd"
vim 编辑完成后,按下 ESC 退出编辑,输入:wq保存并退出
运行 frp 服务
1
./frps -c ./frps.toml(可选)添加 system service 配置开机自启(需安装
systemd)1
vim /etc/systmed/system/frps.service
按下 Insert 键输入内容,frps.service 内容示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
[Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为实际的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target
vim 编辑完成后,按下 ESC 退出编辑,输入
:wq保存并退出, 启用 frp 服务:1
systemctl enable frps
客户端安装
在客户端主机上下载 frp 最新发布版本 Releases · fatedier/frp
2026-03-08 最新版本 v0.67.0, 目标客户端主机为 Windows 11, 下文所有的指令均在 git bash (Git - Install for Windows)终端中
1
wget https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_windows_amd64.zip
解压
1
unzip frp_0.67.0_windows_amd64.zip
配置
frpc.toml客户端配置1 2
cd frp_0.67.0_windows_amd64 vim frpc.toml按下 Insert 键输入内容, frpc.toml 内容示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
serverAddr = "test.xxx.xxx" # 需替换实际的服务 IP 或 域名 serverPort = 7000 # 需与服务端绑定的运行端口一致 auth.token = "avscsd12esdad12dasdasdsa12e123esd" # 需与服务端配置的 auth.token 一致 # web 服务配置, 运行客户端后,可在浏览器地址栏输入 127.0.0.1:7400 访问 Web UI, 输入下方填写的账号和密码进行登录 webServer.addr = "127.0.0.1" webServer.port = 7400 webServer.user = "admin" webServer.password = "admin123" # Harbor 仓库访问代理,本地需要在端口 8180 上运行 Harbor 仓库应用 # 当访问服务端的 30880 端口时,会将请求转发到本地的 8180 [[proxies]] name = "harbor-tcp" type = "tcp" localIP = "127.0.0.1" localPort = 8180 remotePort = 30880
vim 编辑完成后,按下 ESC 退出编辑,输入:wq保存并退出
运行 frp 服务
1
./frpc -c ./frpc.toml(可选)访问 Web UI, 在浏览器地址栏输入
http://127.0.0.1:7400, 可查看已配置的代理运行情况,以及获取和更新配置文件内容