CLI

CLI 是用户使用Lain平台的入口工具。用户对自己应用的部署,升级,查看等操作都要通过 CLI。

+

安装

安装SDK

git clone git@github.com:laincloud/lain-sdk.git
cd lain-sdk
python setup.py install

安装CLI

git clone git@github.com:laincloud/lain-cli.git
cd lain-cli
python setup.py install

命令参考

CLI 的诸多命令中,大多数都会有一个 PHASE 参数,PHASE 是一个集群的标识,表示这个命令要在哪个集群上执行。如 lain deploy local 表示要把应用部署到名为local的集群上。 对于 PHASE 的设置,请参考 config 命令。下面的参数说明中会忽略掉 PHASE。

+

以下各个命令,都可使用 lain -h 查看到。

+

appversion

lain appversion PHASE

+

查看应用在集群中所有的可用版本。

+

attach

lain attach PHASE [-t TARGET] PROC INSTANCE_NUMBER

+

  • -t/--target: 指定要跟踪的应用,默认使用当前目录所属的应用。

跟踪集群中的该容器的标准/错误输出,<Ctrl>-C 退出。该功能依赖于 Entry 应用,默认是不能使用的,只有当集群中部署 Entry 才能使用。

+

关于 Entry 的更多信息,请见 Entry 应用的相关文档

+

backup

lain backup SUB_COMMAND ...

+

备份命令。请参考 backup命令手册

+

build

lain build [--push] [--release]

+

  • --push: 自动打tag并push到集群中。相当于 lain build && lain tag PHASE && lain push PHASE,而 PHASE 的值是全局配置 private_docker_registry 的值,可使用 lain config show 查看。默认关闭。
  • --release: 如果本地已经存在 {appname}:build image,则以此镜像为基础构建 release image。

check

lain check PHASE

+

检查该应用在集群中是否存在最新版本的 release 以及 meta image。

+

clear

lain clear --without WITHOUT

+

  • --without: 不清理哪些 tag,可指定多个,用 , 隔开,如 --without build,meta 表示不清理 meta 和 build 。

构建和测试应用时,会产生多个 image,其中包括构建中间态和最终结果。如 prepare, release, meta, build, test。该命令用来清除这些 image。

+

lain rmi 清理的是那些打了版本号的用于上线 image,而 lain clear 清理的是这些没有版本号的原始 image。

+

config

lain config SUB_COMMAND ...

+

CLI 的配置管理

+

  • show

    lain config show

    +

    查看 CLI 的配置信息。

    +

  • save

    lain config save PHASE KEY VALUE

    +

    修改某个 PHASE 的配置。如果 PHASE 不存在,自动创建。

    +

    一个集群的最基本的配置就是它使用的域名,以 lain.local 为例,命令如下:

    +

    lain config save local domain lain.local
    

    若集群开启了 SSO 认证,则需要设置 sso_url,然后才能执行 lain loginlain logout。如:

    +

    lain config save local sso_url https://sso.lain.local
    
  • save-global

    +

    lain config save-global KEY VALUE

    +

    修改全局设置。如设置 private_docker_registry 的值。这个地址 lain build --push 和 prepare 等功能都要依赖的。例如:

    +

    lain config save-global private_docker_registry registry.lain.local
    

dashboard

lain dashboard [-s {appname, apptype, metaversion, state}] PHASE

+

  • -s/--sort, 指定列表的排序方式。
    • appname: 按应用名称排序,默认。
    • apptype: 按应用类型排序。
    • metaversion: 按应用的版本排序。
    • state: 按应用的状态排序。

显示集群中可部署的应用列表,以及已部署的应用的名称、类型、版本和状态。

+

debug

lain debug PROC

+

lain run 以后,本机上会运行一个容器,lain debug 可进入到容器内部环境。

+

lain.yaml 配置的 release.dest_base 中必须支持 bash 命令,否则该命令会失败。

+

deploy

lain deploy [-v VERSION] [-t TARGET] [-p PROC] [-o {pretty,json,json-pretty}] PHASE

+

  • -v/--version: 指定要部署的版本,默认使用最新版本。
  • -t/--target: 指定要部署的应用,默认使用当前目录所属的 app
  • -p/--proc: 指定要部署的 proc ,即只部署应用的某个 proc 。不能与 -v/--version 一起使用。
  • -o/--output: 指定该命令的输出格式,默认 pretty 。

部署应用,即上线操作。如果应用在集群中已部署过,则该操作是一个升级操作。该命令执行后,会等待应用部署成功。若长时间无法部署成功,可 <Ctrl>-C 退出。然后通过 lain ps 等命令查看应用的状态。

+

enter

lain enter [-t TARGET] PHASE PROC INSTANCE_NUMBER

+

直接进入集群环境中的某个 proc 的某个容器实例内部。该功能依赖于 Entry 应用,默认是不能使用的,只有当集群中部署 Entry 才能使用。

+

本质上是一个 docker exec ... 命令。与 lain debug 不同,enter是直接进入集群中某个容器内部,而 lain debug 是进入本地的容器。

+

关于 Entry 的更多信息,请见 Entry 应用的相关文档

+

login

lain login [-c CID] [-s SECRET] [-r REDIRECT_URI] PHASE

+

  • -c/--cid:
  • -s/--secret:
  • -r/--redirect-uri:

lain login 时,默认会使用 sso 为 lain-cli 初始化的一组 client id 和 client secret。 如果指定,需要指定 sso 中已注册的应用的 client id, client secret 以及 redirect URI。更多相关知识可以参考 sso 用户手册

+

lain login 即登录指定的 sso,得到 access_token, access_token 会过期,过期后需要重新登录或者 refresh

+

logout

lain logout PHASE

+

退出登录。

+

maintainer

lain maintainer {show,add,delete} ...

+

lain maintainer show [-u USERNAME] PHASE

+

显示当前应用对应 maintainer,在集群开启 auth 时才可用。

+

  • -u 指定 sso 中某个用户名;

lain maintainer add phase username {admin,normal}

+

为当前应用添加 maintainer,在集群开启 auth 时才可用.

+

  • username 为 sso 中某用户名;
  • {admin, normal} 为给用户添加的角色,admin 可以添加其它 maintainer,normal 则不行;

lain maintainer delete phase username

+

删除当前应用某个 maintainer,在集群开启 auth 时才可用.

+

meta

lain meta

+

查看应用在本地的最新版本号。

+

prepare

lain prepare

+

为了加速编译构建 prepare image,将依赖一次性装好, 可以在 lain.yaml 中 build 下添加 prepare, 规定版本号和脚本.

+

prepare-update

lain prepare-update

+

在已有的 prepare 镜像的基础上,更新 prepare 镜像。

+

ps

lain ps [-o {pretty,json,json-pretty}] PHASE

+

  • -o/--output: 指定该命令的输出格式,默认 pretty 。

显示应用当前的部署信息。

+

push

lain push PHASE

+

将构建的镜像推送到集群。

+

build 出的镜像只存在于本地机器,需要 push 到集群中,才可以被部署。

+

refresh

lain refresh PHASE

+

用于刷新本地的 access token。

+

由于 login 本质是得到 access token, 而这个 access token 会过期。一般来说,过期后可以重新登录; 然而,根据 OAuth2 协议,也可以通过 refresh token 得到新的 access token,避免重新登录。

+

reposit

lain reposit PHASE

+

在集群中注册一个应用,是有一个被注册过的应用才可以被Push和部署。

+

rm

lain rm PROC

+

删除被 lain run 起来的容器。

+

rmi

lain rmi PHASE

+

删除本机上属于该应用的所有镜像。

+

每次的 lain tag 操作都会产生新的镜像。在一台机器上多次构建应用后,会积累很多历史镜像,因此可通过该命令清理。

+

run

lain run PROC

+

在本地直接根据该 proc 的定义启动一个容器。开发者可使用这个命令在本地对应用进行手动测试和观察。

+

scale

lain scale [-t TARGET] [-c CPU] [-m MEMORY] [-n NUMINSTANCES] [-o {pretty,json,json-pretty}] PHASE PROC

+

  • c/--cpu: 每个实例可使用的CPU核数。
  • -m/--memory: 每个实例分配的内存数。
  • -n/--numinstances: proc 的运行实例数量。
  • -t/--target: 指定要部署的应用,默认使用当前目录所属的 app。
  • -o/--output: 指定该命令的输出格式,默认 pretty 。

Scale 操作,修改可使用的资源上限。更多详细的信息可参考 scale

+

secret

lain secret {show,add,delete} ...

+

lain secret show PHASE procname

+

显示当前应用对应 proc 的所有配置。

+

  • procname 为在 lain.yaml 中定义的 proc 的名字,procname 在 app 中是唯一的。

lain secret add [-h] [-c CONTENT] [-f FILE] phase procname path

+

为当前应用的对应 proc 增加路径为 path,内容为 content 的秘密配置文件.

+

  • path 为秘密配置文件绝对路径,即已 / 开头的路径。
  • content 可以通过 -c 直接指定,也可以使用 -f 指定某个文件。

lain secret delete PHASE procname path

+

删除当前应用和 proc 的对应路径下的秘密配置文件。

+

stop

lain stop PROC

+

停止被 lain run 起来的本地容器。

+

tag

lain tag PHASE

+

为构建出的镜像打标签,即版本。

+

版本号是根据应用 git 仓库的最新 commit id 生成的。所以如果只是改了代码,而没有 commit,那么 build 出来的结果虽是最新的,但是 tag 的版本号不会变。

+

test

lain test

+

执行 lain.yaml 中定义的测试命令,请参考 Tour

+

lain test 根据 lain.yaml 的配置,先对应用进行构建并测试。

+

undeploy

lain undeploy [-t TARGET] [-p PROC] PHASE

+

  • -t/--target: 指定要反部署的应用,默认使用当前目录所属的 app。
  • -p/--proc: 指定要反部署的 proc ,即只反部署应用的某个 proc。默认会把所有的 proc 都反部署。

反部署应用,即下线操作。

+

update

lain update

+

更新 CLI 和 SDK 版本。

+

validate

lain validate

+

检查应用配置是否合法,即该应用的lain.yaml的正确性。

+

当使用 resource 机制时,lain validate 的检查可能并不确切,可以根据情况忽略掉。

+

version

lain version

+

查看 CLI 和 SDK 的版本。