Rancher 应用商店离线环境使用

前言


Rancher (v2.5+ ) 应用商店可以方便的安装 Helm3 构建的应用,并且支持私有 helm 应用仓库,方便了内网离线环境下的使用。本文以内网离线环境为前提、以 MySQL 5.7.43 版本为应用举例,从零开始手把手教你如何制作并应用。

1、环境准备


1.1 安装 helm

后续 helm 打包及仓库推送均在一台 centos 7 服务器中进行,所以需要在该服务器上安装 helm 程序。

具体下载及安装教程参考 https://helm.sh/docs/intro/install/

shell 复制代码
# 解压缩 helm 二进制包
tar -zxvf helm-v3.14.0-linux-amd64.tar.gz
# 移动位置
mv linux-amd64/helm  /usr/local/bin/helm
# 验证安装
helm help
1.2 私有 helm 应用仓库搭建

在 Rancher 上或者任意 docker 环境中搭建 helm 应用仓库,后续才可以在 Rancher 中添加自定义应用。

应用商店使用 chartmuseum/chartmuseum:latest, 可以在 Docker Hub 中搜索该镜像,下载后拷贝至离线环境,启动命令如下:

shell 复制代码
docker run -d -p 8080:8080 --name chartmuseum \
-v /home/charts:/charts \
-e STORAGE_LOCAL_ROOTDIR=/charts \
-e STORAGE=local
chartmuseum/chartmuseum:latest

注意提前建好持久化目录 /home/charts

1.3 下载 MySQL helm charts

以 bitnami 制作的 mysql helm chart 模板为基础,免去自己从头编写模板文件的步骤,后续深入学习后考虑完全自主编写。

下载地址:mysql 10.1.1 · bitnami/bitnami (artifacthub.io)

点击下载 tgz

1.4 拉取应用镜像

打开下载的 tgz 压缩包,用文本工具查看 Chart.yaml 有如下内容:

yaml 复制代码
annotations:
  category: Database
  images: |
    - name: mysql
      image: docker.io/bitnami/mysql:8.0.36-debian-12-r10
    - name: mysqld-exporter
      image: docker.io/bitnami/mysqld-exporter:0.15.1-debian-12-r10
    - name: os-shell
      image: docker.io/bitnami/os-shell:12-debian-12-r18

在这里我们需要把这三个镜像都下载后导出为 tar 包,然后导入到离线环境中才可以使用。由于我的需求是 MySQL 5.7.43 版本,docker.io/bitnami/mysql:5.7.43 是我下载导出的镜像,这里版本根据实际情况修改即可。

至此,我们需要完成以下事情:

  1. 在离线环境启动 chartmuseum 服务;

  2. 下载 MySQL chart 压缩包 mysql-10.1.1.tgz 并放至离线环境服务器中;

  3. 导出压缩包内 Chart.yaml 文件中所列出的所有镜像包并导入离线环境服务器或私有镜像仓库中;

2、制作 Helm Chart


2.1 编辑 values.yaml
  1. 解压缩 mysql-10.1.1.tgz 包,编辑 values.yaml 文件,以下仅列出需要修改的配置:

    编辑全局层面配置信息:

    yaml 复制代码
    # 全局层面配置
    global:
      # 配置私有镜像仓库 Harbor 服务地址
      imageRegistry: "192.168.1.100:18888"
      # 配置私有镜像仓库秘钥(公开仓库可不配置)
      imagePullSecrets: ["harbor"]
      # 配置默认 pvc 存储类为 Longhorn,注意需要小写
      storageClass: "longhorn"

    编辑镜像层面配置信息:

    yaml 复制代码
    image:
      registry: docker.io
      repository: bitnami/mysql
      # 这里 tag 需要修改为 5.7.43,和导入的镜像对应
      tag: 5.7.43

    服务层面配置信息:

    yaml 复制代码
      service:
        # 服务类型:NodePort
        type: NodePort
        ports:
          mysql: 3306
2.2 新建 questions.yaml

questions.yaml 是针对 Rancher 应用商店可视化配置模板参数的配置文件,通过表单问答式配置相关信息,内容如下:

yaml 复制代码
questions:
- variable: auth.rootPassword
  label: "MySQL Root Password"
  description: "MySQL 初始 Root 密码配置"
  type: password
  required: true
  group: "配置信息"

- variable: auth.database
  label: "MySQL Database Name"
  description: "MySQL 初始创建数据库"
  type: string
  required: true
  default: "my_database"
  group: "配置信息"

解释:可以配置多个参数,此处以 root 密码和初始数据库为例,其中 variable 对应模板配置 values.yaml 中的 key, 其他属性看字面就能理解。

2.3 重新打包
shell 复制代码
# 返回到 mysql 目录外部执行
$ helm package mysql
Successfully packaged chart and saved it to: /root/helm/mysql-10.1.1.tgz
2.4 上传至私有 helm chart 仓库

之前搭建的 chartmuseum 服务 url 为 http://192.168.1.100:8080

  • 添加私有仓库

    shell 复制代码
    helm repo add hntl-helm-chart http://192.168.1.100:8080
  • 上传 tgz 包至仓库

    shell 复制代码
    curl --data-binary "@mysql-10.1.1.tgz" http://192.168.1.100:8080/api/charts  
  • 从仓库中删除

    shell 复制代码
    curl -X DELETE http://192.168.1.100:8080/api/charts/mysql/10.1.1
  • 更新仓库

    shell 复制代码
    helm repo update
  • 搜索仓库

    shell 复制代码
    helm search repo

3、Rancher 应用商店


3.1 添加 Chart 仓库
  1. 进入 Rancher 仪表板

  2. 进入应用市场

  3. 添加私有仓库

    填写仓库地址

  4. 更新仓库

3.2 创建 Chart 应用

在 charts 列表中可以看到我们私有仓库中的应用信息

点击即可进入配置页面,"配置项" 即为 questions.yaml 中的 group

配置完成后点击"安装"即可

稍等片刻,在对应的命名空间中就可以看到服务已经正常部署

相关推荐
AKA小徐2 天前
Debian12使用RKE2离线部署3master2node三主两从的k8s集群详细教程
kubernetes·rancher·rke2
long_songs13 天前
kubectl rancher等重启之后服务起不来一分钟解决(另类方案)did you specify the right host or port?
linux·运维·服务器·kubernetes·kubectl·rancher·kubelet
十一呓语13 天前
k8s+rancher配置滚动发布更新时服务不可用
java·kubernetes·rancher
欧阳潇瑞23 天前
Ubuntu24 cgroupv2导致rancher(k3s)启动失败的处理
rancher
A ?Charis2 个月前
解决部署RKE2或K3S-“docker.io/rancher/mirrored-pause:3.6\“: -无法拉取镜像办法
docker·容器·rancher
KTKong2 个月前
kubernetes部署rancher无法查看pod日志及通过execute shell进入pod解决办法
容器·kubernetes·rancher
橘淮南枳2 个月前
Rancher—多集群Kubernetes管理平台
云原生·容器·kubernetes·rancher
ascarl20102 个月前
k8s系列-Rancher 上操作的k8s容器网络配置总结
网络·kubernetes·rancher
it技术分享just_free2 个月前
如何使用Rancher管理K8S集群
linux·运维·云原生·容器·kubernetes·rancher
igcllq2 个月前
rancher安装并快速部署k8s 管理集群工具
linux·服务器·容器·kubernetes·rancher