手把手带你离线部署 Walrus,体验极简应用交付
Walrus 0.4 已于近日发布,新版本中采用的应用模型可以让运维团队仅需配置 1 次,即可在多模态的基础设施及环境中运行包括应用服务及周边依赖资源在内的全套应用系统。这极大减少了运维人员的工作量,同时为研发人员屏蔽了底层基础设施的复杂度. 但受限于网络环境,部分用户无法直接拉取 Walrus 安装镜像。此时,我们需要采用离线的方式部署安装 Walrus。本文将介绍如何在内网环境中安装部署 Walrus。
前期准备
在进行离线部署之前,请确认您已准备:
内网容器镜像仓库,例如 Harbor
内网 Git 代码库,例如 GitLab
开放 Walrus 所在服务器到镜像仓库和 Git 服务器的访问
离线镜像
您可以从 Walrus Releases (https://github.com/seal-io/walrus/releases),获取 walrus-images.txt
、walrus-save-images.sh
和walrus-load-images.sh
三个文件用于下载离线镜像并推送到内网镜像仓库。具体步骤为:
使用
walrus-save-images.sh
在可以联网的 Docker 主机下载离线镜像,参考命令如下:
将保存的离线镜像包
walrus-images.tar.gz
和walrus-load-images.sh
上传到可以访问内网镜像仓库的 Docker 主机,使用walrus-load-images.sh
上传离线镜像,内网镜像仓库以 Harbor 为例(如果不是 Harbor,需要提前在镜像仓库中创建sealio
项目),参考命令如下:
离线镜像准备完成后,我们需要开始准备离线模板库。
离线模板库
模板是 Walrus 的重要功能之一,它可以将各种基础设施能力、云服务和应用服务封装成可复用的能力模板,帮助用户简化服务和资源的部署。 首先,将内置模板库(https://github.com/walrus-catalog)的所有 Repo 都 Fork 或 Import 到内网 Git 仓库。 可以参考以下脚本,批量将walrus-catalog
的所有 Repo 克隆下来后,上传到内网 Git 仓库,每个 Repo 需要对应的一个内网仓库,如对应一个 GitLab Project。
准备工作已经完成,现在开始离线安装 Walrus。
离线安装 Walrus
单实例部署
根据内网镜像仓库的地址,修改单实例部署中的镜像地址,并新增SERVER_SETTING_IMAGE-REGISTRY
和SERVER_SETTING_DEPLOYER_IMAGE
环境变量,指向使用内网镜像仓库和离线 Deployer 镜像,参考命令如下:
如果内网镜像仓库为私有仓库,需要配置认证信息才能拉取镜像,则需要额外的配置,步骤如下: Walrus 的单实例部署使用了内置的 K3s 作为 Walrus 的底层 K8s 运行环境,如果需要设置 K3s 使用私有仓库拉取镜像,需要挂载registries.yaml
文件到 Walrus 容器中:
在要运行 Walrus 容器的主机上,创建
registries.yaml
文件:
填充以下 YAML 内容,请注意替换实际的镜像仓库地址、认证用户名和密码。如果私有镜像仓库采用不受信任的 TLS 证书,需要使用insecure_skip_verify
参数跳过证书验证,如果不需要则移除: 2. 在运行 Walrus 容器时,将registries.yaml
挂载到 Walrus 容器中,参考命令如下:
3. Walrus 容器运行起来后,进入 Walrus 容器验证私有镜像仓库配置是否生效:
详情可参考 K3s 官方文档:https://docs.k3s.io/installation/private-registry 4. 访问 Walrus UI:初始登录后,访问https://<WALRUS_URL>/v1/settings
,验证ImageRegistry
和DeployerImage
设置是否生效。
高可用部署
根据内网镜像仓库的地址,修改高可用部署中的镜像地址,并为 Walrus Deployment 新增SERVER_SETTING_IMAGE_REGISTRY
和SERVER_SETTING_DEPLOYER-IMAGE
环境变量,指向使用内网镜像仓库和离线 Deployer 镜像,参考配置如下:
如果内网镜像仓库为私有仓库,需要配置认证信息才能拉取镜像,则需要额外的配置,步骤如下:
要从私有仓库拉取镜像,Kubernetes 需要凭据。先创建凭据 Secret
2. 修改高可用部署中的 YAML,为几个Deployment
资源添加将imagePullSecrets
参数,然后按照高可用部署的步骤部署 Walrus。使创建 Pod 时 kubelet 可以拉取私有仓库的镜像:
3. 访问 Walrus UI:初始登录后,访问http://<WALRUS_URL>/v1/settings
,验证ImageRegistry
和DeployerImage
设置是否生效。
设置 Walrus 使用内网模板库
Walrus 默认使用内置模板库,但在离线环境下该模板库无法使用,需要您更换为在前一个步骤中准备好的内网模板库。具体更换步骤为:
关闭使用内置模板库:进入
系统设置
的服务管理
,编辑模板设置
,关闭使用内置模板库
的开关,保存。如果内网的 Git 模板库采用不受信任的 TLS 证书,关闭 Walrus 对模板库的证书认证(可选)。进入
系统设置
的服务管理
,编辑证书设置
,开启跳过证书认证
的开关,保存。删除内置模板库,添加内网模板库:进入
运维中心
的模板库
,勾选builtin
模板库,选择删除。 然后选择添加模板库,输入模板库的名称、描述、来源。来源地址填写离线模板库的完整 git organization/group 地址,例如http://github.com/walrus-catalog
,确定保存
切换到
运维中心
-模板
,验证模板正常加载,则意味着内网模板库可以正常刷新。需要注意的是在离线环境下 AI 编写模板不可用。如果您需要自定义连接器,即自定义 Terraform Provider,需要配置自定义 Provider 的 Mirror,具体可参考下方链接:https://developer.hashicorp.com/terraform/cli/commands/providers/mirror
至此,您已经成功在离线环境下完成 Walrus 的安装,开始享受简洁清爽的应用部署与交付之旅吧!
评论