Eclipse-Che部署文档

Chromy Chen

一、系统准备

例:x86-64,8Core+ CPU,16G+ RAM,50G+ System SSD,Data Volume。
系统:Ubuntu20.04

1. 配置网络

尽可能确保系统能够顺利访问Github、docker.io、gcr.io、k8s.gcr.io、quay.io等。

推荐:Clash
clash-for-linux-master/.env文件内配置订阅链接 & 自定义UI访问密码(可选)

配置wget代理:

1
2
3
4
5
# /etc/wgetrc
https_proxy = http://ip:port
http_proxy = http://ip:port
ftp_proxy = http://ip:port
use_proxy = on

配置代理的脚本,可以方便地一键代理当前Shell

1
2
3
4
5
6
7
8
9
10
# localhost.proxy.sh
export proxy=http://127.0.0.1:7890
export no_proxy=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.49.0/24,192.168.39.0/24
export http_proxy=$proxy
export HTTP_PROXY=$proxy
export https_proxy=$proxy
export HTTPS_PROXY=$proxy
export ftp_proxy=$proxy
export FTP_PROXY=$proxy
export NO_PROXY=$no_proxy

2. 更新系统

在开始安装之前,先更新系统软件包:

1
2
sudo apt update
sudo apt upgrade

3. 创建虚拟环境

为了避免潜在的python依赖冲突、保护系统,安装Miniconda 可灵活创建多个虚拟环境。

  1. 自定义conda安装路径

    1
    mkdir -p /path/to/your/conda #自定义conda安装位置,若系统盘小于50G将很快全部占满,强烈建议将conda安装在数据盘
  2. 下载conda安装脚本

    1
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /path/to/your/conda/miniconda.sh
  3. 安装conda

    1
    2
    bash /path/to/your/conda/miniconda.sh #按照脚本提示一步步完成安装
    rm -f /path/to/your/conda/miniconda.sh #安装完成后,安装脚本可删去
  4. 初始化bash环境

    1
    /path/to/your/conda/bin/conda init bash

确认环境存储目录与包存储目录都在设定的路径:

1
conda info

查看当前环境列表:

1
conda info -e

创建供Eclipse-Che部署的虚拟环境。

1
2
conda create -n eclipse-che python=3.12
conda activate eclipse-che

4. 关闭交换分区

1
2
3
4
swapoff -a

# 注释掉/etc/fstab内的swap分区挂载
# /swapfile none swap sw 0 0

二、部署依赖

本文档使用Minikube本地部署Eclipse-Che。
https://eclipse.dev/che/docs/stable/administration-guide/installing-che-on-minikube/

1. 安装Minikube

Install virtualbox

1
2
3
4
5
wget https://download.virtualbox.org/virtualbox/7.0.20/virtualbox-7.0_7.0.20-163906~Ubuntu~focal_amd64.deb
sudo dpkg -i virtualbox-7.0_7.0.20-163906~Ubuntu~focal_amd64.deb
# 解决依赖
sudo apt install --fix-missing
sudo apt install --fix-broken

Install Minikube

1
2
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
sudo dpkg -i minikube_latest_amd64.deb

启用minikube bash补全

1
2
3
minikube completion bash | sudo tee /etc/bash_completion.d/minikube > /dev/null
sudo chmod a+r /etc/bash_completion.d/minikube
# 重启当前Shell即可。

2. 安装kubectl

本次部署使用的k8s版本为1.23.9,因此配置阿里云的软件源。

1
2
3
4
5
6
7
8
9
10
11
12
13
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add
# 需管理员权限
echo "deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main" >> /etc/apt/sources.list

# 也可手动创建一个新的/etc/apt/sources.list.d/kubernetes.list:
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install -y apt-transport-https ca-certificates curl
# 根据实际情况安装对应版本,这里只安装kubectl即可。之后锁住kubectl的更新。
sudo apt install kubeadm=1.23.9-00
sudo apt install kubectl=1.23.9-00
sudo apt install kubelet=1.23.9-00
sudo apt-mark hold kubelet kubeadm kubectl

启用kubectl bash补全

1
2
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
sudo chmod a+r /etc/bash_completion.d/kubectl

3. 安装chectl

1
2
3
4
bash <(curl -sL  https://che-incubator.github.io/chectl/install.sh)
# 启用bash补全
chectl autocomplete
printf "eval $(chectl autocomplete:script bash)" >> ~/.bashrc; source ~/.bashrc

三、部署Eclipse-Che

1. 部署Minikube集群

启动Minikube不可使用root账户。

配置Minikube的VM Proxy,只有设置到VM的网桥上,minikube集群的VM内部才可被成功代理

1
2
3
4
5
6
7
8
9
10
# vm.proxy.sh
export proxy=http://192.168.59.1:7890
export no_proxy=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.49.0/24,192.168.39.0/24
export http_proxy=$proxy
export HTTP_PROXY=$proxy
export https_proxy=$proxy
export HTTPS_PROXY=$proxy
export ftp_proxy=$proxy
export FTP_PROXY=$proxy
export NO_PROXY=$no_proxy

启动Minikube,版本1.23.9,使用virtualbox作为驱动

1
2
3
4
5
6
7
8
9
10
# 网络插件可选
# 内存、CPU、磁盘可自定义,建议不要太小
minikube start --driver=virtualbox --vm=true \
--network-plugin=cni --cni=calico \
--docker-env HTTP_PROXY=http://192.168.59.1:7890 \
--docker-env HTTPS_PROXY=http://192.168.59.1:7890 \
--addons=ingress,dashboard,metrics-server \
--cache-images=true \
--memory=20480 --cpus=16 --disk-size=100GB \
--kubernetes-version=v1.23.9

由于部署Eclipse Che所需镜像极多,强烈建议开启镜像缓存、并在minikube集群启动后提前将镜像载入虚机。
预下载的镜像都放在/opt/packages/docker-images/下。
执行预编写的载入脚本即可。

1
bash ./load_image.sh

启动minikube集群时配置的docker-env就是配置docker daemon拉取镜像的代理,否则基本无法拉取任何镜像。
进入虚拟机的终端,就可以看到minikube实际操作的就是虚拟机内自动部署的一套kubernetes。

1
minikube ssh

可以看到如下代理配置就是启动集群时docker-env配置的docker daemon代理。

1
2
3
4
5
# /lib/systemd/system/docker.service
[Service]
Environment=HTTP_PROXY=http://127.0.0.1:7890
Environment=HTTPS_PROXY=http://127.0.0.1:7890
Environment=NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.49.0/24,192.168.39.0/24

等待集群启动后,执行kubectl get pod -A可以检查全部pod是否正常运行。

开启k8s dashboard:

1
nohup minikube dashboard --url &

可以在nohup.out中查找到本地监听地址,例:
http://127.0.0.1:42145/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
通过kubectl proxy将服务代理出去:

1
2
# 端口自定义,ip填写物理网卡ip
nohup kubectl proxy --port=8001 --address='172.17.7.240' --accept-hosts='^.*' >/dev/null 2>&1 &

访问新地址即可。
http://172.17.7.240:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

2. 部署Eclipse Che

1
chectl server:deploy --platform minikube

等待部署完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
✔ Retrieving Eclipse Che self-signed CA certificate...[OK: /tmp/cheCA.crt]
✔ Prepare post installation output...[OK]
✔ Show important messages
✔ Eclipse Che 7.89.0 has been successfully deployed.
✔ Documentation : https://www.eclipse.org/che/docs/
✔ -------------------------------------------------------------------------------
✔ Users Dashboard : https://192.168.59.101.nip.io/dashboard/
✔ -------------------------------------------------------------------------------
✔ Devfile Registry : https://registry.devfile.io/
✔ -------------------------------------------------------------------------------
✔ Dex user credentials : [email protected]:admin
✔ Dex user credentials : user1@che:password
✔ Dex user credentials : user2@che:password
✔ Dex user credentials : user3@che:password
✔ Dex user credentials : user4@che:password
✔ Dex user credentials : user5@che:password
✔ -------------------------------------------------------------------------------

本机浏览器首先导入/tmp/cheCA.crt自签名证书。
访问https://192.168.59.101.nip.io/dashboard/即可进入dashboard。