1 - CLI 安装说明

本文档介绍如何完成SmartIDE CLI的安装。当前SmartIDE CLI支持Windows/Mac/Linux三种操作系统和x86/arm两种处理器,我们提供了一键安装脚本方便开发人员快速完成安装。

先决条件

SmartIDE CLI 通过调用docker和docker-compose来实现容器化环境的管理,因此你需要确保在自己的环境中已经正确安装了这两个软件。如果你已经在使用这两个工具,那么可以直接进入以下 SmartIDE 安装手册 部分。

说明: 如果你只需要使用smartide远程主机模式,那么本地开发机上并不需要安装 Docker Desktop 工具,因为所有的环境调度都在远程主机上完成,但是你仍然需要确保远程主机上已经正确安装了docker和docker-compose工具。

如果您需要docker和docker-compose的安装指导,可以参考以下链接:

说明: 我们在国内提供了安装包镜像地址以及一键安装脚本以便提升大家的安装体验,具体请参考以上文档中的说明。

SmartIDE 安装手册

我们按照敏捷开发模式进行SmartIDE的开发,所有的版本都通过CI/CD流水线自动构建,打包,测试和发布。为了同时满足外部用户对于稳定性的要求和开发团队以及早期使用者对新功能快速更新的要求,我们提供以下两个发布通道。

稳定版通道

稳定版的发布按照sprint进行,我们采用2周一个sprint的开发节奏,每个sprint结束后我们会发布一个稳定版到这个通道。这个版本经过开发团队相对完整的测试,确保所提供的功能稳定可用,同时我们会在每个sprint结束时同时发布“版本发布说明”并对当前版本的性能和改进进行说明。

流水线状态 Build Status

版本发布说明列表:

版本号构建编号发布日期简要说明
v1.0.2553832022.08.29主要包括:1.工作区SSH策略、密码策略支持K8S工作区;2.VMLC开发者镜像调整;3.smartide init项目初始化指令;4.ide.yaml同时支持docker-compose及k8s模式;5.优化日志显示,独立显示ingress及ssh日志信息;6.Server部署数据持久化;7.k8s basic密码使用提示;8.修复若干Bug
v1.0.2346502022.07.29主要包括:1. CLI正式开源 2. 完整k8s模式 3. 团队管理 4. Hybrid模式 VSCode/JetBrains Gateway 5. smartide-webterminal 6. ARM支持 7. Pipeline模式 - Gitlab CI 支持 8. node、java VMLC开发者镜像 9.修复若干Bug
v0.1.2040412022.06.17增加Server的K8S模式功能;优化CLI K8S模式功能、工作区策略SSH Key;修复若干BUG。
v0.1.1939092022.06.01增加工作区策略SSH Key及Git Config功能;工作区日志优化;K8S模式增强;修复若干BUG。
v0.1.1835382022.05.19增加CLi K8s模式,并支持主机资源非22端口连接。插件市场历史版本同步,阿里 OpenSumi使用SmartIDE插件市场作为官方市场。修复了若干Bug。
v0.1.1733322022.05.09模版支持远程主机并集成到Server,插件市场公测
v0.1.1631372022.04.19修复若干bug,增加工作区日志支持,K8S模式完善,优化基础镜像启动等。
v0.1.1529802022.04.07增加了对阿里 & 蚂蚁自研开源 IDE 研发框架 OpenSumi 的支持、客户端K8S启动模式,并且完善了工作区全生命周期的状态控制,以及修复了若干Bug。
v0.1.1425052022.03.21修复若干bug,Linux 版 SmartIDE CLI 工具发布,完成Server版开发集成
v0.1.1120352022.02.08修复若干bug,启动Server版开发集成
v0.1.1018292022.01.18简化版指令集,k8s start可用,开源项目gin-vue-admin适配
v0.1.917532022.01.01稳定性和体验性加强,k8s Start, Image V2 体系开发,JetBrain体系WebIDE支持
v0.1.714562021.12.02公开发布,状态管理,远程模式稳定性,项目模板
v0.1.58192021.11.05完善本地模式和远程主机模式下对Git的支持
v0.1.29332021.10.24第一个公开发行版,本地模式

# SmartIDE 稳定版通道安装脚本
# 打开终端窗口,复制粘贴以下脚本即可安装稳定版SmartIDE CLI应用
# 再次执行此命令即可更新版本

# Intel芯片
curl -OL  "https://smartidedl.blob.core.chinacloudapi.cn/releases/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/releases/stable.txt)/smartide-osx" \
&& mv -f smartide-osx /usr/local/bin/smartide \
&& ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& chmod +x /usr/local/bin/smartide

# Apple芯片(比如M1/M2系列)
curl -OL  "https://smartidedl.blob.core.chinacloudapi.cn/releases/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/releases/stable.txt)/smartide-osx-arm64" \
&& mv -f smartide-osx-arm64 /usr/local/bin/smartide \
&& ln -s -f /usr/local/bin/smartide /usr/local/bin/se \

# SmartIDE 稳定版通道安装脚本
# 打开终端窗口,复制粘贴以下脚本即可安装每日构建版SmartIDE CLI应用
# 再次执行此命令即可更新版本

# x86 架构处理器
curl -OL  "https://smartidedl.blob.core.chinacloudapi.cn/releases/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/releases/stable.txt)/smartide-linux-amd64" \
&& sudo mv -f smartide-linux-amd64 /usr/local/bin/smartide \
&& sudo ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& sudo chmod +x /usr/local/bin/smartide

# arm 架构处理器
curl -OL  "https://smartidedl.blob.core.chinacloudapi.cn/releases/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/releases/stable.txt)/smartide-linux-arm64" \
&& sudo mv -f smartide-linux-arm64 /usr/local/bin/smartide \
&& sudo ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& sudo chmod +x /usr/local/bin/smartide

# SmartIDE 稳定版通道安装脚本
# 打开PowerShell终端窗口,复制粘贴以下脚本即可自动下载稳定版SmartIDE MSI安装包,并启动安装程序
# 再次执行此命令即可更新版本
# 如果是第一次在Windows上安装,请重新打开PowerShell窗口以便PATH设置生效
Invoke-WebRequest -Uri ("https://smartidedl.blob.core.chinacloudapi.cn/releases/"+(Invoke-RestMethod https://smartidedl.blob.core.chinacloudapi.cn/releases/stable.txt)+"/SetupSmartIDE.msi")  -OutFile "smartide.msi"
 .\smartIDE.msi

每日构建版通道

SmartIDE CI/CD 流水线每晚8点(GMT+8 Beijing) 会自动将当天提交到sprint分支上的代码进行自动化构建和测试,并发布到每日构建版通道;产品组每天早上会对这个版本进行冒烟测试,确保基本功能可以正常运行,如果在冒烟测试过程中发现任何问题,我们会优先进行修复并立即通过这个通道发布修复后的版本。

每日构建版本通道的目标用户是产品组成员和早期试用社区用户,大家可以通过我们的SmartIDE GitHub首页提交issue或者通过微信公众号,B站等社区渠道提供反馈给我们。我们非常希望得到社区的反馈,并会尽力为社区用户提供最快速度的响应。

流水线状态 Build Status

# SmartIDE 每日构建版通道安装脚本
# 打开终端窗口,复制粘贴以下脚本即可安装每日构建版SmartIDE CLI应用
# 再次执行此命令即可更新版本

# Intel芯片
curl -OL  "https://smartidedl.blob.core.chinacloudapi.cn/builds/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/builds/stable.txt)/smartide-osx" \
&& mv -f smartide-osx /usr/local/bin/smartide \
&& ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& chmod +x /usr/local/bin/smartide

#  Apple芯片
# 打开终端窗口,复制粘贴以下脚本即可安装每日构建版SmartIDE CLI应用
# 再次执行此命令即可更新版本
curl -OL  "https://smartidedl.blob.core.chinacloudapi.cn/builds/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/builds/stable.txt)/smartide-osx-arm64" \
&& mv -f smartide-osx-arm64 /usr/local/bin/smartide \
&& ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& chmod +x /usr/local/bin/smartide

# SmartIDE 每日构建版通道安装脚本
# 打开终端窗口,复制粘贴以下脚本即可安装每日构建版SmartIDE CLI应用
# 再次执行此命令即可更新版本

# x86架构处理器
curl -OL  "https://smartidedl.blob.core.chinacloudapi.cn/builds/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/builds/stable.txt)/smartide-linux-amd64" \
&& sudo mv -f smartide-linux-amd64 /usr/local/bin/smartide \
&& sudo ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& sudo chmod +x /usr/local/bin/smartide

# arm架构处理器
curl -OL  "https://smartidedl.blob.core.chinacloudapi.cn/builds/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/builds/stable.txt)/smartide-linux-arm64" \
&& sudo mv -f smartide-linux-arm64 /usr/local/bin/smartide \
&& sudo ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& sudo chmod +x /usr/local/bin/smartide

# SmartIDE 每日构建版通道安装脚本
# 打开PowerShell终端窗口,复制粘贴以下脚本即可自动下载每日构建版SmartIDE MSI安装包,并启动安装程序
# 再次执行此命令即可更新版本
# 如果是第一次在Windows上安装,请重新打开PowerShell窗口以便PATH设置生效
Invoke-WebRequest -Uri ("https://smartidedl.blob.core.chinacloudapi.cn/builds/"+(Invoke-RestMethod https://smartidedl.blob.core.chinacloudapi.cn/builds/stable.txt)+"/SetupSmartIDE.msi")  -OutFile "smartide.msi"
 .\smartIDE.msi

获取并理解版本号

安装好SmartIDE后,您可以通过以下命令获取当前版本号

# 键入以下命令获取当前版本
smartide version
# 输出如下
v1.0.23.4650
版本号: v1.0.23.4650
操作系统: Microsoft Windows 11 企业版
构建号: 20220729.4_4650_main_Manual
编译时间: 2022-07-29 03:22:35
提交记录: a26ef7a473eb2251f9a8276755d30b73c3142e4e
发行商: leansoftX.com

说明:

  • Version number: 代表当前版本号,格式:[主版本].[小版本].[Sprint编号].[构建号]
  • Build number: CI/CD流水线的完整构建编码,格式:[日期].[序号]_构建号_分支名_构建类型
  • Commit record: 当前版本所对应的git commit hash
  • Company: 发行商名称

2 - Server 部署手册

SmartIDE Server 是面向团队和企业的云原生容器化远程工作区管理平台,可以为开发团队提供统一的开发测试资源管理,基于浏览器的开发环境访问以及团队协作能力。SmartIDE Server 的 团队基础版 功能是开源而且免费的,任何人都可以按照本手册所提供的方式完成部署并免费使用,没有使用期限限制,没有用户数限制,也没有资源数量限制。

SmartIDE Server 是面向团队和企业的云原生容器化远程工作区管理平台,可以为开发团队提供统一的开发测试资源管理,基于浏览器的开发环境访问以及团队协作能力。SmartIDE Server 的 团队基础版 功能是开源而且免费的,任何人都可以按照本手册所提供的方式完成部署并免费使用,没有使用期限限制,没有用户数限制,也没有资源数量限制。

如果您所使用的服务器环境可以连接互联网,可以使用我们以下提供的全自动一键安装方式完成安装部署;如果你处于隔离网络(无法访问互联网),我们也提供可供下载导入到隔离网络中的离线安装方式,可以通过 提交技术支持申请 的方式获取这些资源。

架构图和组件说明

下图展示了SmartIDE Server环境的架构;总体来说,SmartIDE Server 采用了非常灵活并且可扩展的分布式架构,每个服务组件都可以进行独立的横向扩展以便确保可以应对不同规模的部署模式需求。

组件图和组件说明

下面对上图中各个组件进行说明,以便对本手册中所涉及的内容进行准确理解:

  • 核心服务:包括Server所提供的Web界面,API服务,后台的数据持久化(Redis & MySQL),以及提供对外访问的反向代理服务(nginx)。对Server的所有访问均通过反向代理服务进行统一控制,方便企业用户在部署时与现有网络架构进行整合。
    • 容器化部署:核心服务中的所有组件全部采用容器化部署方式,对于小型团队部署环境,我们提供docker-compose文件将所有服务部署在一台linux主机上,对于中大型团队中的部署模式,提供对应的k8s manifest文件以便部署在k8s集群中。
    • 辅助管理工具:phpMyAdmin提供MySQL数据的管理界面,Portainer提供docker容器环境的管理,可以用于服务节点的问题定位,日志查看和重启等操作。单机版部署模式下默认在docker-compose中包含这两个工具。
  • 核心K8S服务:采用基于tekton流水线引擎提供的SmartIDE工作区弹性调度组件。远程工作区是SmartIDE中最重要的管理对象,对于远程工作区的所有调度任务均通过tekton流水线任务完成。在这些调度任务中,实际执行的就是 SmartIDE CLI。CLI中内置的 mode=server 模式就是为了在这个场景中使用而设计的,mode=server 模式最大化重用了 CLI 本身的能力,同时针对流水线调度环境进行了少量适配。采用这种架构,SmartIDE 可以简化调度动作的开发调试复杂度,同时将Server核心组件与工作区资源进行解耦,也就是说SmartIDE Server的核心服务不会直接连接工作区资源,这样就让核心服务可以专注于企业业务场景,而将远程工作区调度的工作职责全部交给CLI来完成。
    • 高可用性:tekton流水线引擎本身是一个 k8s CRD 实现,其可用性来自于k8s本身的高可用性。这样的设计可以确保 SmartIDE的核心能力直接集成企业云原生架构的可用性。
    • 弹性和扩展性:SmartIDE具体的调度工作全部都通过核心k8s服务集群完成,完全不依赖server核心服务的算力和资源,这样也确保了在大规模团队使用场景下的弹性扩展。
  • 工作区资源:SmartIDE支持主机和k8s两类资源,管理员可以自行将资源注册到 SmartIDE Server 即可允许用户使用这些资源来运行远程工作区环境。SmartIDE实际的工作负载其实全部运行在这些工作区资源上,无论是 WebIDE,代码编译,测试以及工作所需要的中间件环境都完全不依赖server核心服务以及核心k8s集群的资源。企业管理员可以根据需要随时增加或者减少注册给SmartIDE的工作区资源以便确保企业内部资源的合理利用。
    • 主机类资源:和SmartIDE CLI一样,开发者只需要一台可以运行Docker的Linux主机即可将SmartIDE远程工作区部署在上面使用。对于还没有使用k8s的企业来说,可以将闲置的物理机,虚拟机注册在SmartIDE Server上统一管理并分配给开发者使用。这些主机也无需特别的网络配置,只需要开通SSH服务即可。
    • K8S类资源:管理员可以将一个或者多个k8s集群注册到Server,并分配给开发者使用。SmartIDE Server会自动完成对k8s集群的必要初始化操作,并利用命名空间(Namespace)隔离不同开发者的远程工作区环境,包括资源用量限制。

部署模式

SmartIDE Server 提供三种不同的部署架构以便适应不同规模的团队使用

  • 单机版安装:只需要一台linux服务器就可以完成整个Server环境的安装和部署,包括核心服务和核心K8S集群均可以在一台主机上完成部署。在这个部署模式下,核心k8s集群会使用一个单节点的minikube来提供k8s的调度能力。对于小型团队来说,这种部署模式非常简单而且资源消耗很低。
  • 多机版安装:可以将核心服务和k8s服务分别部署在2台或者多台主机中,这种部署模式适合中等规模的团队,或者没有k8s基础环境的企业。搭配主机类工作区资源,可以在完全没有k8s环境下使用SmartIDE Server。
  • 集群安装:如果企业已经具备了现有的k8s环境,那么可以将SmartIDE Server的全部组件都部署到k8s集群中以提供高可用,弹性和可扩展性,满足中到大型团队的日常使用;同时在需要扩展用量的时候临时接入主机或者K8S集群来满足需求。

单机版安装操作

以下操作过程针对单机版环境安装进行描述,如果需要进行多机或者集群安装部署,请 提交技术支持申请

环境要求

单机版环境可以满足10-50人团队日常使用需求,根据团队规模情况,请选择以下环境最小化或者建议配置。

级别最大人数Linux发行版配置
最小配置10Ubuntu 20.04 LTS4核CPU,8G内存,100G硬盘
建议配置50Ubuntu 20.04 LTS8核CPU,64G内存,500G硬盘

备注:

  • 以上人数限制仅代表一个估计值,根据实际使用场景可能会有所不同;
  • 以上环境仅代表核心服务和核心K8S(采用minikube单节点模式)的服务器节点需求,工作区资源(主机或者K8S)需要另外准备;
  • 虽然可以将这个服务器也注册到Server的工作区资源列表中使用,但是非常不建议这样做,因为工作区调度任务会对节点进行文件操作和各种复杂控制,这个过程中很可能影响核心服务的运行;
  • 请确保使用干净的操作提供环境,如果主机上已经安装或者运行其他应用可能会在本手册操作过程中被损坏或者影响本手册的操作结果。
  • 当前只提供Ubuntu系统的一键安装脚本,其他发行版的脚本会陆续提供。

账号和权限要求

不支持使用root账号进行操作,请按照以下方式创建非root+免密码sudo账号进行操作。如果当前只有root账号,请使用root账号SSH登录到服务器以后执行以下操作。

## 新增用户smartide,并设置sudo权限
sudo useradd smartide
sudo passwd smartide

## 编辑 sudoers 文件配置免密码sudo操作
sudo vim /etc/sudoers
## 在 Allow root to run any commands anywhere 的root下方设置sudo免密权限
smartide   ALL=(ALL) NOPASSWD: ALL

配置用户使用bash作为默认的shell

SmartIDE安装脚本 使用一些特定的bash指令,因此请确保你所使用的用户或者以上所创建的smartide用户的默认shell为bash。

vim /etc/passwd

更新

smartide:x:1000:1000::/home/smartide:/bin/sh 

改为

smartide:x:1000:1000::/home/smartide:/bin/bash

完成以上操作后使用所创建的账号重新SSH登录系统,比如以上使用的是 smartide 账号,那么你的登录指令是:

ssh smartide@<server ip address> -p <server SSH port>

网络和防火墙要求

为了确保可以正常访问SmartIDE Sever的相关服务,请确保以下端口已经在网络防火墙或者网络策略中打通。

端口服务说明
8080WEB界面Server的主服务端口,用户通过这个端口访问SmartIDE Sever的Web界面
8090(可选)phpMyAdmin界面MySQL数据库的Web管理界面,可以根据需要开放
9000(可选)Portainer 界面Docker环境的Web管理界面,可以根据需要开放
9097(可选)Tekton仪表盘Tekton流水线引擎的仪表盘Web界面,可以根据需要开放
备注:此无服务无身份验证,请谨慎开放此端口

一键安装部署脚本

请确保执行以下脚本之前已经完成了环境要求、账号要求、网络要求的检查;并且,请确保执行脚本的主机环境与互联网保持畅通。

在以下脚本执行过程中,会频繁的通过网络下载文件或者拉取容器镜像,如果因为网络问题造成安装终端,请从新执行脚本。 为了适应国内/国际网络的不同特性,我们提供了2个不同的脚本分别使用国内/国外的文件和镜像源获取安装介质,请根据你的服务器所处的网络环境自行决定使用哪个脚本完成安装。 国内网络一键安装

curl -LO https://gitee.com/smartide/SmartIDE/raw/main/deployment/deployment_cn.sh -o deployment_cn.sh&& bash deployment_cn.sh

国际网络一键安装

curl -s https://gitee.com/smartide/SmartIDE/raw/main/deployment/deployment.sh -o deployment.sh&& bash deployment.sh

安装步骤中,需要输入SmartIDE Server对外服务的IP地址,在这里输入本地对外服务的IP:

请输入本机对外服务的IP地址:XX.XX.XX.XX

安装过程一般需要持续10分钟左右,以下是安装的完整日志

localadmin@Private-Online-Deploy:~$ curl -LO https://gitee.com/smartide/SmartIDE/raw/main/deployment/deployment_cn.sh -o deployment_cn.sh&& bash deployment_cn.sh
SmartIDE Server Deployment Start...
请输入本机对外服务的IP地址:20.2.72.212
SmartIDE Server Deployment : 1.Basic Component
SmartIDE Server Deployment : 1.1 docker and docker-compose
...
SmartIDE Server Deployment : 1.2 Git
SmartIDE Server Deployment : 1.3 Kubectl
SmartIDE Server Deployment : 1.Basic Component Installed Successfully.
SmartIDE Server Deployment : 2.MiniKube
SmartIDE Server Deployment : 2.1 Minikube Install
SmartIDE Server Deployment : 2.2 Build Minikube Env
🔥  Deleting "minikube" in docker ...
🔥  Deleting container "minikube" ...
🔥  Removing /home/localadmin/.minikube/machines/minikube ...
💀  Removed all traces of the "minikube" cluster.
😄  minikube v1.24.0 on Ubuntu 20.04
✨  Using the docker driver based on user configuration
❗  Your cgroup does not allow setting memory.
    ▪ More information: https://docs.docker.com/engine/install/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities
✅  Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🔥  Creating docker container (CPUs=2, Memory=4096MB) ...
🐳  Preparing Kubernetes v1.22.3 on Docker 20.10.8 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
    ▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.0.4
    ▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
    ▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
🔎  Verifying ingress addon...
🌟  The 'ingress' addon is enabled
SmartIDE Server Deployment : 3.Tekton Pipeline
SmartIDE Server Deployment : 3.1 Kubectl Apply Tekton Pipeline And DashBoard
...
SmartIDE Server Deployment : 3.2 Kubectl Apply Tekton Trigger
...
SmartIDE Server Deployment : 3.3 Kubectl Apply Tekton SmartIDE Pipeline Configrate
...
SmartIDE Server Deployment : 3.Tekton Pipeline Installed Successfully.
SmartIDE Server Deployment : 4.SmartIDE Server
...
Network smartide-server-network is external, skipping
Creating gva-portainer ... done
Creating gva-mysql     ... done
Creating gva-myadmin   ... done
Creating gva-redis     ... done
Creating gva-server    ... done
Creating gva-web       ... done
SmartIDE Server Deployment : 4.SmartIDE Server Installed Successfully.
SmartIDE Server Deployment : 5.Build SmartIDE Server Network Connection With Minikube.
SmartIDE Server Deployment : 5.Build SmartIDE Server Network Connection With Minikube Successfully.
SmartIDE Server 服务地址:http://20.2.72.212:8080
SmartIDE Server Deployment Successfully!

请确保你的日志末尾出现 SmartIDE Server Deployment Successfully!的字样即表示安装已经顺利完成。

如果中途出现报错的情况,可以提交 Issue 与我们联系。

数据持久化与备份恢复

SmartIDE Server的数据均保存在MySQL数据库中。

  • 备份:单机版部署中,MySQL数据已将久化到$HOME/smartide/mysql文件夹中,其中gva文件夹即为SmartIDE Server数据库。此时,只需在安装时的目录中,执行如下脚本停止Server服务后,拷贝gva文件夹即可完成备份,完成后重新启动服务。
# 停止SmartIDE Server服务
docker-compose -f docker-compose.yaml --env-file docker-compose_cn.env down
# 执行备份
cp -r $HOME/smartide/mysql/gva $HOME/smartide/gva-backup
# 重新SmartIDE Server服务
docker-compose -f docker-compose.yaml --env-file docker-compose_cn.env up -d
  • 恢复:若在原主机中进行还原恢复,那么只需要将备份的gva文件夹,替换到$HOME/smartide/mysql/gva即可。若在其他机器中恢复,那么停止Server服务后,替换到$HOME/smartide/mysql/gva即可,完成后重新启动服务。
# 停止SmartIDE Server服务
docker-compose -f docker-compose.yaml --env-file docker-compose_cn.env down
# 执行备份
cp -r $HOME/smartide/gva-backup $HOME/smartide/mysql/gva
# 重新SmartIDE Server服务
docker-compose -f docker-compose.yaml --env-file docker-compose_cn.env up -d

访问环境

完成以上安装步骤后,就可以通过以下访问地址,访问部署好的Server了:

  • 主服务 http://{deploment host ip}:8080
  • MySQL管理工具phpMyAdmin(可选)http://{deploment host ip}:8090
    • 用户名:root,默认密码:SmartIDE@123
  • Docker环境管理工具Portainer(可选) http://{deploment host ip}:9000
  • Tekton流水线仪表盘(可选) http://{deploment host ip}:9097 注:若需使用Tekton仪表盘(可选)查看流水线执行情况,需在主机执行以下命令,后访问Tekton仪表盘,这个脚本会启用9097端口,请同时确保9097端口已经在网络中打通。
kubectl --namespace tekton-pipelines port-forward svc/tekton-dashboard 9097:9097 --address 0.0.0.0 &

初始账号和密码修改

初始超级管理员用户名密码

  • 用户名:superadmin
  • 默认密码:SmartIDE@123

强烈建议立即修改以上账号的密码,此账号(superadmin)为系统超级管理员账号,可以在系统中进行任何操作(包括一些可能损坏SmartIDE现有功能的操作)。因此建议安装完成后立即修改此账号的密码。

修改密码操作:点击Server版右上角【个人信息】,并且点击【修改密码】操作即可。

个人信息 修改密码

请注意,superadmin账号还用于tekton流水线的调度,因此在修改密码后还需要更新 server配置文件中的 token 信息。你可以通过 SmartIDE CLI 执行 se login 指令并连接到当前 server 的主服务地址上并使用superadmin账号登录,此时打开 .ide/.ide.config 文件可以获取新token信息。

查看superadmin的token

将此token中内容更新到 server-server 容器中的配置文件里面:

  • 进入到安装目录的smartide-install目录,vi config.docker.yaml

修改token

  • 修改完毕后,执行以下命令,重启启动gva-server容器即可。
docker restart gva-server

验证Server工作情况

可以参考 Server快速开始 文档完成主机资源注册和工作区创建操作,即可验证当前SmartIDE Server的功能工作正常。

常见安装使用问题

  • 问题1. MiniKube启动失败,导致新建工作区报错。

    • 原因1:MiniKube启动,不支持root账号,所以导致MiniKube启动失败,这样在新建工作区时,就会导致访问不到Tekton流水线,从而报错。
    • 原因2:默认脚本中MiniKube启动时指定CPU为2核,内存为4G。如果准备环境配置过低,则无法正常启动MiniKube,导致部署错误,从而新建工作区时报错。
  • 问题2. 安装使用操作系统为非Ubuntu,导致安装出错。

    • 原因:目前安装脚本只支持Ubuntu版本,请根据环境要求准备环境。

技术支持

如果您在以上安装过程或者日常使用过程中遇到问题,请通过提交 Issue 的方式与我们取得联系。

也可以加入我们的 SmartIDE 早鸟群获取第一手的产品资料和技术支持。 对于隔离网络或者中大型部署模式的技术支持,请 提交技术支持申请 ,我们会尽快与您取得联系。

参考资料

3 - SmartIDE 插件市场安装说明

本文档描述如何部署安装SmartIDE插件市场

SmartIDE Marketplace 是基于Eclipse OpenVSX 开源项目搭建的类VSCode插件市场,详细内容请参考 应用插件市场 Overview。 此文档旨在描述 SmartIDE Marketplace 的详细部署过程,内容分为简要介绍、组件介绍、部署细节三部分。

1. 简要介绍

SmartIDE Marketplace服务部署均使用容器化方式进行,Dock-Compose文件见docker-compose.yaml,部署的各模块整体架构如下图所示: 结构图

  • 主体为OpenVSX-Server,spring boot框架的java服务,我们在部署时需要自行添加 application.yml 配置文件,并将其放置对应位置,以便Server启动后加载。
  • 后台数据库使用PostgreSql,并使用Pgadmin进行数据库的管理和查询等操作,数据库的创建和表结构的初始化过程Server进程启动时会自动执行。
  • 前端界面为NodeJS架构的Web UI,我们在部署时会将前端代码库构建的静态网站结果放入Server服务的对应文件夹,使其二者变为一个进程即Server进程加入前端界面。这也是Sprint Boot框架的灵活性功能,使用者可以基于Web UI代码库自定制前端界面,并将自定制的前端页面嵌入Server服务。
  • 用户登陆验证,目前只支持OAuth Provider,官方文档中声明目前只支持Github AuthApp和 Eclipse OAuth,我们在部署时使用Github AuthApp。
  • 插件存储可以使用数据库(默认)、Google Storage或 Azure Blob Storage三种模式,推荐添加Google Storage或 Azure Blob Storage以避免数据库过大的情况出现。
  • 插件搜索服务支持数据库搜索和附加Elastic Search服务两种模式,推荐有条件的情况下添加Elastic Search搜索服务提高搜索效率,降低数据库压力。
  • 除以上架构图中展现内容外,Marketplace网站需要配置HTTPS证书,这样才服务器的扩展才能够正确被IDE加载,我们使用Nginx进行服务器的部署端口转发。

2. 组件介绍

本章节将对架构中的各个组件进行逐一介绍。

2.1 OpenVSX Server

代码库:

镜像:

  • DockerHub: smartide/smartide-openvsx:4a5546b
  • Aliyun: registry.cn-hangzhou.aliyuncs.com/smartide/smartide-openvsx:4a5546b
  • DockerFile

Docker-Compose部分:

server:
  image: smartide/smartide-openvsx:4a5546b
ports:
  - "8080:8080"
volumes:
  - ./configurations:/home/openvsx/server/config
links:
  - "db:pgsql-server"`

2.2 OpenVSX WebUI

代码库:

镜像:

  • DockerHub: smartide/smartide-openvsx:4a5546b
  • Aliyun: registry.cn-hangzhou.aliyuncs.com/smartide/smartide-openvsx:4a5546b
  • DockerFile

Docker-Compose部分:

server:
  image: smartide/smartide-openvsx:4a5546b
ports:
  - "8080:8080"
volumes:
  - ./configurations:/home/openvsx/server/config
links:
  - "db:pgsql-server"`

2.3 Postgresql + PgAdmin

Docker-Compose部分:

db:
  image: postgres:12.2
  restart: always
  environment:
    POSTGRES_DB: #{DATABASE}#
    POSTGRES_USER: #{DATABASE_USERNAME}#
    POSTGRES_PASSWORD: #{DATABASE_PASSWORD}#
    PGDATA: /var/lib/postgresql/data
  volumes:
     - ~/openvsx/postgresqldata:/var/lib/postgresql/data
  ports:
    - "5432:5432"
pgadmin:
  image: dpage/pgadmin4:4.18
  restart: always
  environment:
    PGADMIN_DEFAULT_EMAIL: #{PGADMIN_USERNAME}#
    PGADMIN_DEFAULT_PASSWORD: #{PGADMIN_PASSWORD}#
    PGADMIN_LISTEN_PORT: 80
  ports:
    - "8090:80"
  volumes:
    - ~/openvsx/pgadmin-data:/var/lib/pgadmin
  links:
    - "db:pgsql-server"

2.4 Application.yml

OpenVSX Server 进程启动时加载的配置文件,需要放到与docker-compose.yaml同级目录的Configurations文件夹下(在volumn中定义),内容见:Application.yml

由如下重点几部分构成:

Server端口:

server:
  port: 8080

Datasource(数据库链接):

datasource:
  url: jdbc:postgresql://pgsql-server:5432/#{DATABASE}#
  username: #{DATABASE_USERNAME}#
  password: #{DATABASE_PASSWORD}#

Security(用户认证方式)

security:
  oauth2:
    client:
      registration:
        github:
          client-id: #{OAUTH_CLIENT_ID}#
          client-secret: #{OAUTH_CLIENT_SECRET}#

Search方式:

ovsx:
  databasesearch:
    enabled: true
  elasticsearch:
    enabled: false

WebUi(前端地址):

webui:
  url: https://marketplace.smartide.cn

Storage(插件存储):

storage:
  azure:
    service-endpoint: #{STORAGE_SERVICE_ENDPOINT}#
    sas-token: #{STORAGE_SAS_TOKEN}#

Github AuthApp

用户登陆 https://marketplace.smartide.cn 使用的验证方式:

security:
  oauth2:
    client:
      registration:
        github:
          client-id: #{OAUTH_CLIENT_ID}#
          client-secret: #{OAUTH_CLIENT_SECRET}#

具体创建说明文档见: Creating an OAuth App - GitHub Docs 创建完毕后复制client-id和client-secret 加入到 Application.yml 中即可,注意权限要给足。

2.5 Azure Blob Storage

SmartIDE Marketplace 存储插件的文件存储,我们使用Azure Blob Storage作为存储介质,配置到Application.yml中来进行起作用:

storage:
  azure:
    service-endpoint: #{STORAGE_SERVICE_ENDPOINT}#
    sas-token: #{STORAGE_SAS_TOKEN}#

具体创建说明文档见: openvsx azure-setup (github.com)

2.6 ElasticSearch

暂无使用,可参考 Deploying-Open-VSX/elasticsearch 配置。

2.7 Nginx

SmartIDE Marketplace 需配置为https且certifacate为合规证书,方可被类vscode IDE使用,我们使用Nginx进行https设置:

  • Docker-Compose:

      nginx:
        image: nginx:latest
        restart: unless-stopped
        volumes:
          - ~/openvsx/deployment/openvsx/nginx/nginx.conf:/etc/nginx/nginx.conf
          - ~/openvsx/deployment/openvsx/nginx/ssl:/ssl/
        ports:
          - 80:80
          - 443:443
        links:
          - "server:openvsx-server"
    
  • Nginx.Conf 内容见链接 注意:

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    

    四个http request header的设置能够确保 server 进程收到的请求头是正确无误的,这样Server进程才能够正确识别请求并进行正确的转发!

3. 部署详细步骤

本章节将以https://marketplace.smartide.cn 生产环境的部署为例,以Azure 虚拟机做为服务器、Azure Blob Storage 作为插件存储,使用 Github OAuth App 进行用户认证,来描述部署的细节。

3.1 资源准备

在执行具体步骤之前,需要准备如生产服务器、插件存储Storage、用户认证 Oauth App等资源。

3.1.1 Azure Linux VM

准备一台Azure 虚拟机并做如下设置:

  • 开通如下端口:22, 443, 80, 3000, 8080, 8090, 9000
  • IP和DNS设置:IP设置为静态,设置独立唯一Azure DNS名称(此处可自由选择前缀,只需在之后和marketplace.smartide.cn域名绑定时对应即可)
  • 登陆VM安装 Docker和Docker-Compose

3.1.2 Azure Blob Storage

准备一个Azure存储账户, 参照 链接 设置Storage Account、创建Container等:

  • 设置Storage Account的 blob公共访问为打开(默认是打开的,检查一下)

  • 创建名称固定为 openvsx-resources 的 Container(名称对应Application.yml中的ovsx.storage.azure.blob-container属性,采用默认名称的话,可以不设置此属性)并设置访问级别为Blob级别

  • 设置Storage Account的 CORS策略如下: origin :"*" method “GET” allowed headers “x-market-client-id, x-market-user-id, x-client-name, x-client-version, x-machine-id, x-client-commit”

  • 生成共享访问签名,并保存SAS_TOKEN (对应Application.yml中的ovsx.storage.azure.sas-token)

  • 进入Service Endpoint模块,复制保存 Blob Service URL (对应Application.yml中的ovsx.storage.azure.service-endpoint)

3.1.3 Github OAuth App

参照 Creating an OAuth App - GitHub Docs 创建 Github OAuth App 提供用户验证机制。创建完毕后获取 Client ID 并生成 Client Secret,复制后存储供后续使用。

所有资源准备环境都已经就绪,接下来将会使用GitHub Action 进行生产环境的部署。

3.2 流水线配置 与 运行部署

3.2.1 流水线介绍

SmartIDE Marketplace生产环境使用GitHub Action进行部署,流水线定义文件位置: eclipse-openvsx/smartide-openvsx-deployment.yml 读者可以参考以上流水线定义的任务执行步骤进行部署准备和执行具体部署过程。

3.2.2 运行前准备

SmartIDE Marketplace 生产环境部署操作执行之前,需要配置流水线中所使用的项目的secrets,以便让流水线运行时替换掉对应配置文件(docker-compose.yml & application.yml)中的通配符,包括 3.1 准备步骤中创建的资源和其余的一些默认如数据库设置等配置,以下图片和列表列出需要修改的Key及其含义: 选中要修改的Secret,点击Update 更新

属性说明
DATABASEServer 数据库名称
DATABASE_USERNAMEServer 数据库用户名
DATABASE_PASSWORDServer 数据库密码
NGINX_SSL_CERThttps站点证书ssl_cert.crt 文件里面的值
NGINX_SSL_KEYhttps站点证书私钥ssl_cert.crt 文件里面的值
OAUTH_CLIENT_IDGitHub OAuth App 的 Client iD
OAUTH_CLIENT_SECRETGitHub OAuth App 的 Client Secret
PGADMIN_USERNAMEPgAdmin数据库管理容器默认登录名 http://{ip}:9000 地址访问
PGADMIN_PASSWORDPgAdmin数据库管理容器默认登陆密码 http://{ip}:9000 地址访问
SERVER_HOST生产服务器 IP地址
SERVER_SSH_USER生产服务器 SSH 用户名
SERVER_PASSWORD生产服务器 SSH 密码
STORAGE_SERVICE_ENDPOINTBlob Storage Service URL
STORAGE_SAS_TOKENBlob Storage SAS Token
如果进行的是本地部署,不使用GitHub Action的情况下,自行修改 Deployment/Openvsx/Configurations/Application.yml 和 Deployment/Openvsx/Docker-Compose.yml 中的 #{ 变量名 }# 变量即可。

3.2.3 运行流水线执行部署

  • 流水线触发执行的条件是:

      on:
        push:
          branches:    
            - master
          paths: 
            - deployment/openvsx/**
            - .github/workflows/smartide-openvsx-deployment.yml
    

即修改 deployment/openvsx 文件夹下任何内容或修改流水线定义文件本身会自动触发,当我们对上述path内容任意做完一次提交后,将会Actions的自动化执行: 如果进行的是本地部署,不使用GitHub Action的情况下,需要在服务器上自行运行Docker-Compose 命令,Docker-Compose文件为 Deployment/Openvsx/Docker-Compose.yml

3.3 环境测试

  • 流水线部署完毕后,即可登录 http://{server-host}:9000 端口网站使用 Portainer 查看 Server 容器运行情况
  • 使用 http://{server-host}:8090 访问 pgadmin服务,查看数据库初始化情况
  • 访问 https://marketplace.smartide.cn

至此,Marketplace 部署过程全部结束。

4 - Docker 安装说明

本部分文档对SmartIDE的组件安装提供说明。

4.1 - Docker & Docker-Compose 安装手册 (Linux服务器)

本文档描述如何在 Linux服务器 上正确安装 Docker 和 Docker-Compose

SmartIDE可以使用任意安装了docker和docker-compose工具的linux主机作为开发环境远程主机,你的主机可以运行在公有云、私有云、企业数据中心甚至你自己家里,只要这台机器可以和互联网连通,就可以作为SmartIDE的远程主机。本文档描述正确安装docker和docker-compose工具以便确保SmartIDE可以正常管理这台远程主机。

环境要求列表

使用SmartIDE的远程主机需要满足以下要求

  • 操作系统:
    • Ubuntu 20.04LTS, 18.04LTS, 16.04LTS
    • CentOS 7.2 以上
  • 软件需求:
    • Git
    • Docker
    • Docker-Compose

特别说明:你无需在linux主机上安装SmartIDE CLI命令行工具,因为所有的操作都可以在本地开发机(Windows/MacOS)上完成,SmartIDE本身内置使用SSH远程操作linux主机。

配置非root用户登陆服务器

使用SmartIDE远程控制的linux主机需要使用非root用户登陆,这是为了确保更加安全的开发环境以及主机和容器内文件系统权限的适配。请按照以下操作创建用户并赋予免密码sudo权限。

备注:以下操作需要使用root账号或者sudo方式运行。

以下脚本将创建一个叫做 smartide 的用户并赋予面密码的sudo权限。

## 创建用户及用户文件系统
useradd -m smartide
## 为用户设置密码,请在命令执行后输入你需要设置的密码,确保你将这个密码记录下来
passwd smartide
## 为用户添加sudo权限
usermod -aG sudo smartide
## 编辑 /etc/sudoers
vim /etc/sudoers

如果使用vim编辑器,按 “i” 进入插入编辑模式,编辑完成后按ESC退出编辑模式,输入 “:wq!” 保存退出。

在 /etc/sudoers 文件中添加如下内容

smartide   ALL=(ALL) NOPASSWD: ALL

同时修改开头为 %sudo 的行为以下内容

%sudo   ALL=(ALL) NOPASSWD: ALL

配置用户使用bash作为默认的shell

SmartIDE 使用一些特定的bash指令完成工作区调度,因此请确保你所使用的用户或者以上所创建的smartide用户的默认shell为bash。

vim /etc/passwd

更新

smartide:x:1000:1000::/home/smartide:/bin/sh 

改为

smartide:x:1000:1000::/home/smartide:/bin/bash

一键安装docker和docker-compose工具

使用以上创建的smartide用户或者其他符合要求的非root用户登陆服务器。

使用以下命令在Linux主机上安装docker和docker-compose工具,运行完成之后请从当前终端登出并从新登入以便脚本完成生效

# 通过ssh连接到你的Linux主机,复制并粘贴此命令到终端
# 注意不要使用sudo方式运行此脚本
curl -o- https://smartidedl.blob.core.chinacloudapi.cn/docker/linux/docker-install.sh | bash
# 退出当前登录
exit

完成以上操作后,请运行以下命令测试 docker 和 docker-compose 正常安装。

docker run hello-world
docker-compose -version

如何可以出现类似以下结果,则表示docker和docker-compose均已经正常安装。

验证docker和docker-compose安装正确

完成以上2项设置之后,你就可以继续按照 快速启动远程模式 部分的说明继续体验SmartIDE的功能了。

配置Sysbox

SmartIDE 的部分开发者镜像内使用了 VM-Like-Container 的能力,比如需要在容器内运行完整的docker,也就是嵌套容器(Docker in Docker - DinD)。类似的能力需要我们在主机上针对容器运行时(container runtime)进行一些改进。为了满足类似的能力,SmartIDE 采用了开源项目 sysbox 提供类似的容器运行时。

以下文档描述了如何在主机上安装 Sysbox容器运行时,在执行此操作之前,请确保已经按照本文档的上半部分正确安装了 docker环境。

本文档针对 sysbox 社区版的安装过程进行说明,如果需要安装企业版,请自行参考 sysbox 官方文档。

## 国内安装地址
wget https://smartidedl.blob.core.chinacloudapi.cn/hybrid/sysbox/sysbox-ce_0.5.2-0.linux_amd64.deb

## 国际安装地址
wget https://downloads.nestybox.com/sysbox/releases/v0.5.2/sysbox-ce_0.5.2-0.linux_amd64.deb

安装前需要通过执行以下命令移除当前正在运行的容器

docker rm $(docker ps -a -q) -f

执行以下指令完成安装

sudo apt-get install ./sysbox-ce_0.5.2-0.linux_amd64.deb

安装成功后通过执行以下命令来验证Sysbox是否安装成功并已启动服务,注意查看 active (running) 的提示信息

sudo systemctl status sysbox -n20

输出的信息如下图: 输入图片说明

4.2 - Docker Desktop 安装手册 (MacOS)

本文档描述如何在 MacOS 上正确安装Docker Desktop。

Docker 桌面版(Docker Desktop)可以在桌面操作系统上管理容器化环境,SmartIDE本地模式需要调用Docker桌面版以便管理容器环境。安装这个工具其实非常简单,但是安装之后最好对工具的一些默认设置进行一些调整,以便让SmartIDE运行得更加高效。

硬件和操作系统要求

硬件要求:

  • 2016款以后的MacBook, MacBook Pro或者Air都可以
  • 最少4核8G,建议8核16G以上配置
  • 最好使用SSD硬盘,并有100G以上空余存储空间

操作系统要求:

  • 高于 OS 10.12
  • 建议更新到最新版操作系统

下载安装包

Docker桌面是一款免费工具,大家可以从以下两个渠道下载:

运行安装程序

双击下载的安装包文件,启动安装程序

启动Docker安装程序

按照图中提示,将左侧的Docker图标拖放到右侧的Application(应用程序)文件夹中,等待复制过程完成

启动Docker安装程序 启动安装

打开 访达 | 应用程序 并双击 Docker 图标

启动Docker安装程序 启动Docker

这时系统会有安全提示,选择 打开 即可

启动Docker安装程序 安全警告

Docker启动需要一段时间,等待启动完毕,就可以使用了

启动中状态

启动Docker安装程序 启动中

启动完成状态

启动Docker安装程序 启动完成

配置Docker桌面版

默认情况下Docker桌面版会对其所使用的资源比例采取比较保守的策略,因为我们需要在容器中运行开发环境,你可以根据自己本地开发机的配置适当调高以下设置以便获得更好的体验。

建议:至少给Docker分配4个以上的CPU Core和8G以上内存。

Docker资源配置

验证 Docker桌面版 可以正常工作

打开命令行窗口运行以下命令:

docker run hello-world

如果你看到了类似如下的输出,则表示你的Docker桌面版已经正常工作,你现在就可以继续按照 快速启动 继续体验SmartIDE的功能了。

Docker资源配置

4.3 - Docker Desktop 安装手册 (Windows)

本文档描述如何在 Windows 上正确安装Docker Desktop。

Docker 桌面版(Docker Desktop)可以在桌面操作系统上管理容器化环境,SmartIDE本地模式需要调用Docker桌面版以便管理容器环境。安装这个工具其实非常简单,但是安装之后最好对工具的一些默认设置进行一些调整,以便让SmartIDE运行得更加高效。

硬件和操作系统要求

硬件要求:

  • 最低i5,推荐i7处理器
  • 最少4核8G,建议8核16G以上配置
  • 最好使用SSD硬盘,并有100G以上空余存储空间

操作系统要求:

  • Windows 10 2004 (Build 19041或者更高版本)
  • Windows 11

老版本的Windows不支持WSL2,必须要使用HyperV或者VirtualBox虚拟机才能运行Docker,这样对系统资源占用很大,不建议使用。

下载安装包

Docker桌面是一款免费工具,大家可以从以下两个渠道下载:

启用WSL2

WSL2 是 Windows Subsystem for Linux 二代的简称,WSL2允许用户在Windows上运行受支持的Linux发行版。当前的Docker桌面版可以使用WSL2作为其Linux后台运行。因此我们需要首先在Windows操作系统上激活WSL2功能才能使用Docker做面板。

说明:Windows版本的Docker桌面其实也支持Windows容器,但是默认情况下我们更多的使用Linux容器作为我们的开发环境,因此在本文档中不会涉及对于Windows容器的配置。SmartIDE当前也不支持使用Windows容器作为开发环境。

步骤1 - 启动PowerShell

点击 开始按钮 | 输入 PowerShell,选择 以管理员身份运行

启动PowerShell

步骤2 - 启用WSL2功能

在 PowerShell终端 窗口中输入以下命令以便激活 WSL功能

# 复制并粘贴本段脚本到PowerShell终端窗口中执行
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

执行过程输出如下 WSL2激活成功

步骤3 - 启用虚拟化平台功能

在 PowerShell终端 窗口中输入以下命令以便激活 虚拟化平台 功能

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

执行过程输出如下 WSL2激活成功

步骤4 - 下载并安装Linux内核更新包

点击一下链接下载并安装

步骤5 - 将WSL2设置为默认版本

打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:

wsl --set-default-version 2

步骤6 - 从Windows Store安装所需要的Linux分发版

打开 Microsoft Store,并选择你偏好的 Linux 分发版,推荐使用Ubuntu 20.04这个版本

Windows Store

安装完成后,点击 开始按钮 | 输入 Ubuntu 并选择 打开

Windows Store

第一运行需要先对这个环境设置你自己的用户名和密码

Ubuntu

至此,你的Windows为安装Docker桌面版做好了准备

运行安装程序

双击打开下载的安装包,确保选中以下选项,并点击 OK

  • Install required Windows componenets for WSL2

安装

安装程序需要从网络下载一些资源,请确保安装过程网络畅通

安装

安装完成后,点击 Close,关闭安装程序

安装

点击 开始按钮 | 输入 Docker | 点击打开

安装

点击 Accept 接受用户协议

安装

等待 Docker 启动完毕

安装

出现以下界面表示 Docker 已经正常启动,可以使用了。

安装

配置Docker桌面版

默认情况下Docker桌面版会对其所使用的资源比例采取比较保守的策略,因为我们需要在容器中运行开发环境,你可以根据自己本地开发机的配置适当调高以下设置以便获得更好的体验。

因为我们指定Docker使用WSL2作为后台,因此我们无法通过Docker桌面版的配置工具直接修改资源占用情况。如果你打开 Docker 配置工具 会看到如下提示,提示用户要通过wslconfig配置文件来控制WSL的资源使用,以便控制Docker的资源占用。

安装

你可以在 ~/.wslconfig 位置创建如下内容的文件,然后从新启动 Docker桌面版 即可。

[wsl2]
memory=8GB # Limits VM memory
processors=4 # Makes the WSL 2 VM use two virtual processors

有关wslconfig的详细配置请参考 配置 Linux 分发版 官方文档

建议给予WSL2至少8G内存和4以上的CPU Core以便获得比较好的使用体验。

验证 Docker桌面版 可以正常使用

打开命令行窗口运行以下命令:

docker run hello-world

如果你看到了类似如下的输出,则表示你的Docker桌面版已经正常工作,你现在就可以继续按照 快速启动 继续体验SmartIDE的功能了。

安装

5 - K8S环境初始化说明

K8S模式作为SmartIDE Server的企业级服务形态,实现无须CLI客户端,即可直接通过浏览器访问工作区。通过此手册,你可以轻松地初始化一个K8S集群,然后将其配置到官方SmartIDE Server(dev.smartide.cn)或任何私有部署的SmartIDE Server上,创建K8S类型的工作区。

所需资源

配置一个K8S类型的工作区资源,那么就需要具备2-3个基本条件:

    1. 一个K8S集群,作为开发资源。这里可以是私有的K8S集群,也可以是云平台的K8S集群服务。
    1. 一个域名,将域名指向K8S集群对外暴露的访问地址,这样就可以通过不同的域名地址访问到集群不同的工作区命名空间。这里可以是私有部署的DNS域名解析服务,或者共有云的域名解析。
    1. 一对证书公私钥(可选),若要启用 https 访问工作区环境并使用静态证书保护访问请求,请预先准备一对证书的公私钥文件,如:ssl.crt 和 ssl.key。 如需创建自签名证书,请参考如下链接的 Part 1 内容:申请OpenSSL自签名证书

启用VMLC

如果需要在k8s集群中使用VMLC环境,需要首先运行以下脚本对集群进行初始化。

注意:此操作当前只支持Ubuntu节点,并且需要k8s版本在1.21-1.23范围内,具体请参考 sysbox官方文档

运行以下操作会造成节点上当前运行的所有pod重新启动,建议仅在新节点或者新集群上运行。

## 获取节点名称
kubectl get nodes
## 在节点上添加 sysbox-install=yes 的 label
kubectl label nodes <节点名称> sysbox-install=yes
## 安装 sysbox container runtime
### 国内安装地址
kubectl apply -f https://gitee.com/smartide/SmartIDE/raw/main/deployment/k8s/sysbox-install-cn.yaml
### 国际安装地址
kubectl apply -f https://raw.githubusercontent.com/SmartIDE/SmartIDE/main/deployment/k8s/sysbox-install.yaml

运行以上指令后需要观察 sysbox-deploy pod进入运行状态,并且其他运行在节点上的pod重启完毕后,如果没有报错,代表安装成功。

下图:sysbox-deploy pod创建中

sysbox-deploy pod创建中

下图:同节点上的其他pod重新启动中

sysbox-deploy 造成节点上其他pod重启

注意:弹性扩展节点配置

若使用资源为弹性缩扩容节点时,为保证新节点可以自动启用VMLC特性,那么需要进行相应配置。

例如:在Azure K8S中,可通过如下命令对节点池进行设置,那么弹性扩展时,新节点将会自动打上sysbox-install安装标记,并自动完成VMLC特性的安装。

az aks nodepool update \
    --resource-group smartide-k8s-test \
    --cluster-name smartide-k8s-test \
    --name nodepool1 \
    --labels sysbox-install=yes \
    --no-wait

其中:

  • resource-group : 资源组名称
  • cluster-name : 集群名称
  • name : 节点池名称

资源初始化

准备好所需资源后,就可以使用 SmartIDE Server 添加K8S资源功能自动初始化集群:

第一步,SmartIDE Server 添加 K8S 集群资源

在SmartIDE Server资源管理中,选择【新建K8S】创建资源: 新建K8S

填写对应K8S集群信息: 新建K8S

  • 域名:预分配给当前集群的访问域名,如 ws-cn-east.smartide.cn
  • 团队:当前资源所属的团队,团队成员可共享使用
  • Kube Config:K8S配置信息,内容默认文件路径:~/.kube/config
  • 集群应用设置支持三种证书策略:
    1. 仅http,不开启https: 用户选择不开启https验证,则集群的所有应用统一使用http的方式启动,如果用户不关心是否使用https访问IDE/应用地址,则可以选择使用此种方式。 证书策略http
    2. 静态 https: 用户可以使用自维护的静态证书来配置集群工作区的IDE/应用访问链接,这种策略要求用户提前准备一对证书的公私钥,并在创建集群时复制公私钥的内容粘贴到资源的信息中。 用户使用此证书策略配置集群之后,后续所有工作区的访问链接将默认使用用户提供的证书来加密。此策略适合在内网环境下开启https访问的场景。 证书策略静态https
    3. 动态 https: SmartIDE Server 同时也提供了系统自申请https证书的功能,用户可以在外网环境下选择使用动态 https证书策略,系统将会为每个工作区的每个应用地址自动化申请https证书。 此场景需要Server能够连通外网环境的支撑。 证书策略动态https

点击保存后,资源创建完毕,系统开始自动初始化集群:

  • 创建 Ingress Controller 服务
  • 根据证书策略,创建静态证书秘钥或安装动态证书所需的Cert-Manager服务
  • 安装 Storage Class

初始化集群过程会持续几分钟,初始化完毕后,系统将会自动获取到 Ingress Controller 服务的 External IP 显示到资源详情界面上: external ip 此IP是集群对外统一提供服务的地址,接下来需要将此IP地址和集群的预分配域名进行DNS绑定。

第二步,域名、泛域名配置。

通过DNS域名配置,将域名指向K8S集群的Ingress Controller Nginx服务,这样我们就可以通过域名访问到不同的工作区服务了。

在域名解析服务器上设置K8S对外服务域名解析,添加两条指向 External IP 的A记录。这里,可以参考如下的阿里云域名设置,这里添加了 ws-cn-east、*.ws-cn-east 两条解析记录: DNS设置

域名配置完成后,就可以在SmartIDE Server中使用这个资源了!

SmartIDE Server使用方法,详见:SmartIDE Server 快速开始

技术支持

如果您在以上安装过程或者日常使用过程中遇到问题,请通过提交 Issue 的方式与我们取得联系。

也可以加入我们的 SmartIDE 早鸟群获取第一手的产品资料和技术支持。