KubeVela 的离线部署主要分为三部分,分别是 Vela Cli、Vela Core 以及 Addon 的离线部署,addon插件部分主要以VelaUX为主,每一部分主要涉及到相关 docker 镜像的加载及 Helm 的 repackage,通过该离线部署方案,能够大大加快 KubeVela 在离线环境的部署。
一、Vela Cli 离线部署
• 首先,需要通过 KubeVela 的发布日志下载你所需版本的 vela 二进制文件,这里我用的最新般的 vela-v1.4.1 。下载地址: Releases · kubevela/kubevela · GitHub
• 解压二进制文件,并且在 $PATH
中配置相应的环境变量
• 解压二进制文件
• tar -zxvf vela-v1.4.1-linux-amd64.tar.gz
• mv ./linux-amd64/vela /usr/local/bin/vela
• 设置环境变量
• vi /etc/profile
• export PATH="$PATH:/usr/local/bin"
• source /etc/profile
• 通过 vela version
验证 Vela Cli 的安装,并检查输出
二、Vela Core 离线部署
• 我这里部署的 Vela Core为最新的 v1.4.1 与vela cli保持一致。离线部署 Vela Core 之前,首先需要在离线环境中安装 Helm, 并且 Helm 的版本需要满足v3.2.0+,可参考安装文档:
Helm | Installing Helm
• 准备 docker 镜像, Vela Core 的部署主要涉及5个镜像,必须要是这个版本。你需要首先访问互联网从 Docker Hub 下载相应镜像,之后再 load 到离线环境
• 从Docker Hub拉取镜像
docker pull oamdev/vela-core
docker pull oamdev/cluster-gateway:v1.4.0
docker pull oamdev/kube-webhook-certgen:v2.4.0
docker pull oamdev/alpine-k8s:1.18.2
docker pull oamdev/hello-world:v1
• 将镜像保存到本地磁盘
• docker save -o vela-core.tar oamdev/vela-core:latest
• docker save -o cluster-gateway.tar oamdev/cluster-gateway:v1.4.0
• docker save -o kube-webhook-certgen.tar oamdev/kube-webhook-certgen:v2.4.0
• docker save -o alpine-k8s.tar oamdev/alpine-k8s:1.18.2
• docker save -o hello-world.tar oamdev/hello-world:v1
• 在私有环境中重新加载镜像
docker load < vela-core.tar
docker load < cluster-gateway.tar
docker load < kube-webhook-certgen.tar
docker load < alpine-k8s.tar
docker load < hello-world.tar
• 下载 KubeVela 源码,下载地址:Releases · kubevela/kubevela · GitHub 拷贝到离线环境中,并使用 Helm 重新打包
这里安装时会遇到第一个坑,需要修改配置文件,在目录 kubevela/charts/vela-core下,编辑 values.yaml,修改以下内容
否则即使服务器中存在 oamdev/vela-core:latest 镜像,也会去远程的 Docker Hub 仓库拉去。
• 将 KubeVela 源码重新打 chart 包,并离线安装 chart 包到控制集群。
tar -zxf kubevela-1.4.1.tar.gz
mv kubevela-1.4.1 kubevela
helm package kubevela/charts/vela-core --destination kubevela/charts
# 安装时遇到的第一个坑
helm install --create-namespace -n vela-system kubevela kubevela/charts/vela-core-0.1.0.tgz --wait
• 部署完成会有 KubeVela 图样则部署成功,Vela Core 已经离线部署完成!
卸载:
在卸载 KubeVela 之前,请确保已删除所有应用和禁用所有插件。
- 卸载 VelaUX,命令:vela addon disable velaux
- 卸载 KubeVela Core,命令: vela uninstall
- 卸载 CRD: 命令:kubectl get crd |grep oam | awk '{print $1}' | xargs kubectl delete crd
三、插件Addon中VelaUX部署
• 首先下载 Catalog 源码并拷贝到私有环境中,下载地址:GitHub - kubevela/catalog: Catalog of community maintained components and traits.
• 这里将以 VelaUX 为例介绍 Addon 的离线部署,首先准备 docker 镜像,VelaUX 主要涉及2个镜像,需要首先访问互联网从 Docker Hub 下载相应镜像,之后再 load 到离线环境
• 从 Docker Hub 拉取镜像
docker pull oamdev/vela-apiserver:v1.4.0
docker pull oamdev/velaux:v1.4.0
• 将镜像保存到本地磁盘
docker save -o vela-apiserver.tar oamdev/vela-apiserver:v1.4.0
docker save -o velaux.tar oamdev/velaux:v1.4.0
• 在私有环境中重新加载镜像
docker load < vela-apiserver.tar
docker load < velaux.tar
• 安装 VelaUX
• 通过 Vela Cli 安装VelaUX,这里我遇到了安装时的第二个坑,无论我下载的 vela-apiserver 镜像是什么版本,启动的 deployment 都只会拉取 oamdev/vela-apiserver:v1.4.0这个版本的。所以这里我推荐 vela-apiserver 和 velaus 镜像直接安装v1.4.0这个版本的。
vela addon enable catalog-master/addons/velaux
• 检查输出
Addon: velaux enabled Successfully.
卸载命令
vela addon disable velaux
如需要暴露velaux服务供外部访问,可将 velaux 的 service 变为 nodeport 方式,命令:
vela addon enable velaux serviceType=NodePort