文章

DevOps 实践

目录

[TOC]

基础设施搭建

搭建 k3s

k3s 官网: [快速入门指南K3s](https://docs.k3s.io/zh/quick-start)
  1. 安装

    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 -
    
  2. 验证安装

    1
    
    kubectl version
    

部署 Traefik

  1. 安装 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
  1. 使用 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 镜像仓库等需要较多的内存资源的应用,所以采用内网穿透的方式将部署在内网机器上的应用暴露到公网中

服务端安装

  1. 在服务端主机上下载 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
    
  2. 解压

    1
    2
    
     tar -xzvf frp_0.67.0_linux_amd64.tar.gz
     mv frp_0.67.0_linux_amd64 frp
    
  3. 生成访问 token

    1
    
     openssl rand -base64 64 | head -c 64
    
  4. 配置 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保存并退出

  1. 运行 frp 服务

    1
    
    ./frps -c ./frps.toml
    
  2. (可选)添加 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
    

客户端安装

  1. 在客户端主机上下载 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
    
  2. 解压

    1
    
     unzip frp_0.67.0_windows_amd64.zip
    
  3. 配置 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保存并退出

  1. 运行 frp 服务

    1
    
     ./frpc -c ./frpc.toml
    
  2. (可选)访问 Web UI, 在浏览器地址栏输入 http://127.0.0.1:7400, 可查看已配置的代理运行情况,以及获取和更新配置文件内容

私有化仓库搭建

Gitea(代码仓库)

Harbor(镜像仓库)

编码开发

配置管理

日志管理

测试

部署

容器化部署

K8s/K3s 部署

自动化CI/CD

流水线搭建

GitOps

Flux

金丝雀部署

监控

监控指标

Prometheus 监控配置

Grafana 图形化UI

告警

本文由作者按照 CC BY 4.0 进行授权