1.3 快速上手
整体流程
- 开通生态云Docker镜像仓库
- 创建空间
- 为空间添加权限
- 镜像推送到生态云Docker镜像仓库
- 创建Docker仓库凭证
- 创建域名
- 部署应用
- 访问数据库和缓存等服务
生态云镜像仓库
应用引擎V2可以使用任何Docker镜像仓库来部署应用,为了加快镜像的拉取速度和应用启动速度,请使用生态云提供的镜像仓库.
请在小米生态云支持群联系生小米态云的工程师,开通生态云Docker镜像仓库.一般情况下,一个公司会共享一个项目,可以创建多个用户. 如果需要多个项目,可以单独提出.另外生态云的镜像仓库只允许白名单访问,需要有固定的外网IP.
镜像仓库的地址跟生态云的区域一一对应,比如AWS北京的镜像仓库地址是cnbj-repo.cloud.mi.com
, 金山云北京6的地址是cnbj6-repo.cloud.mi.com
. 结合公司的项目名,镜像的具体地址会是(以AWS北京为例): cnbj-repo.cloud.mi.com/<company-project>/<image-name>:<image-tag>
镜像仓库地址
区域 | 地址 |
---|---|
金山云-北京6 | cnbj6-repo.cloud.mi.com |
AWS-北京 | cnbj-repo.cloud.mi.com |
AWS-俄勒冈 | us-repo.cloud.mi.com |
AWS-法兰克福 | us-repo.cloud.mi.com |
AWS-新加坡 | us-repo.cloud.mi.com |
金山云-俄罗斯 | ru-repo.cloud.mi.com |
创建空间
使用管理员账号登录生态云,切换到金山云北京6区,然后在"用户管理"中添加如下的空间资源,名称不要包含公司的org名称
然后把这个资源添加到相关的角色中.
注意
- 目前应用引擎V2开通了AWS北京区域,金山云北京6区,aws俄勒冈,aws法兰克福区域,aws新加坡区域,但只能在金山云区域执行添加修改操作
- 空间创建后, 名字前面会自动附加公司的org名称
为空间添加权限
使用管理员账号登录生态云,切换到金山云北京6区,然后在"用户管理"中的角色为空间添加权限
资源添加到相关的角色中,并为角色赋予权限,developer拥有读写权限,audit只有读权限
本地开发和测试镜像
本地完成应用的开发后,构建Docker镜像.通过测试后,把镜像推送到生态云的镜像仓库
docker login cnbj6-repo.cloud.mi.com
docker tag myapp:1.0 cnbj6-repo.cloud.mi.com/myorg/myapp:1.0
docker push cnbj6-repo.cloud.mi.com/myorg/myapp:1.0
文件和日志
不要在本地存储持久文件,需要使用FDS等后端服务.
日志不要写到本地文件,必须写到标准输出或者标准错误输出(stdout/stderr),这样才会被日志系统收集和分析.
最佳实践
Docker镜像最佳实践
创建镜像仓库凭证
登录小米生态云,在产品页面的"应用引擎V2"的"Secrets管理"中创建Docker仓库凭证,应用引擎会使用这个凭证来拉取应用的镜像
点击"Secrets管理",然后点击右上角的"创建"
注意选择"Docker仓库凭证"
创建域名
如果应用对外提供Web服务,需要绑定自有域名. 假设应用对外服务的域名是app1.mydomain.com,先要在"域名管理V2"中创建mydomain.com这个域名:
部署应用
创建应用
点击产品页面的"应用引擎V2",进入应用列表页面,然后点击左侧的"创建新应用"来进行应用部署.这里使用了前面创建的Docker镜像和仓库凭证.
注意
不要在本地存储持久文件, 日志必须写到标准输出或者标准错误输出(stdout/stderr).
暴露外部服务
暴露外部服务是可选的,有HTTP/HTTPS和TCP/UDP两种方式
HTTP/HTTPS方式:这里使用到了前面创建的域名,如果要提供https服务,还需要创建TLS证书类型的Secrets。 IP白名单用于设置允许访问该http/https服务的客户端ip地址,该配置遵循CIDR格式;如果配置多个CIDR,则使用半角逗号分割,例如“111.111.111.0/24,222.222.222.222/32”;如果不配置,则允许所有的ip地址访问。 HTTPS强制重定向:勾选该项后,对HTTP服务的访问会永久重定向到HTTPS;注意如果HTTPS证书无效,对HTTP服务的访问不会重定向,会正常访问HTTP服务。
TCP-UDP方式:
修改域名指向
在域名提供商的管理控制台,修改app1.mydomain.com的指向
区域 | 记录类型 | 指向 |
---|---|---|
金山云-北京6 | A记录 | 请提前做好域名备案,具体IP地址请联系生态云工程师分配 |
AWS-北京 | CNAME | 请提前做好域名备案,具体域名指向请联系生态云工程师分配 |
AWS-俄勒冈 | CNAME | 具体域名指向请联系生态云工程师分配 |
AWS-法兰克福 | CNAME | 具体域名指向请联系生态云工程师分配 |
AWS-新加坡 | CNAME | 具体域名指向请联系生态云工程师分配 |
金山云-俄罗斯 | A记录 | 具体IP地址请联系生态云工程师分配 |
对外提供TCP/UDP的代理服务器IP列表
区域 | IP1 | IP2 |
---|---|---|
金山云-北京6 | 120.92.209.6 | 120.92.209.63 |
AWS-北京 | 52.80.76.13 | 52.80.76.13 |
AWS-俄勒冈 | 35.167.218.13 | 34.214.57.248 |
AWS-法兰克福 | 52.57.4.119 | 52.57.4.119 |
AWS-新加坡 | 13.228.7.67 | 52.221.144.140 |
金山云-俄罗斯 | 107.155.52.35 | 107.155.52.136 |
健康检查
健康检查是可选的,提供应用两个维度的健康检查:包括服务启动状态检查和服务健康状态检查两种.
服务启动状态检查
判断容器是否启动完成,可以接受外部请求.
容器启动完成,容器里面的服务可能还没准备就绪,通过配置服务启动状态检查规则,只有当容器里面的服务可用时,才会接受外部请求.如果服务探针按照设置的规则探测失败,则会删除这个容器,并且重新创建一个.
- 探测方式:
- HTTP GET方式: 对指定的端口和路径上的容器的IP地址执行 HTTP Get 请求。如果响应的状态码在[200,400)范围,则诊断被认为是成功的。
- TCP Socket方式:对指定端口上的容器的IP地址进行TCP检查。如果端口打开,则诊断被认为是成功的。
- Container Command:在容器内执行指定命令。如果命令退出时返回码为 0, 则认为诊断成功。
请求参数:
- 首次等待时间 首次健康检查的等待时间.可选的,默认为0秒.
- 周期 探测频率.可选的,默认为10秒.
- Timeout 等待响应的超时时间,当超时发生时,我们会认为容器已经无法提供服务,将会重启该容器.可选的,默认为1秒.
- 成功重试次数 连续成功几次才认为是成功.可选的,默认为1次.
- 失败重试次数 当一个容器启动失败或者探测失败后,我们容器会重试几次,直到超过次数不再尝试.可选的,默认为3次.
服务健康状态检查
判断容器是否存活,可以接受外部请求.
假如容器正在运行,如果服务探针按照设置的规则探测到容器里面的服务已经不可用,则会将该实例从服务提供列表中移除,使得外部请求不再打在其上,并且删除这个容器,重新创建一个.
- 探测方式 同服务启动状态检查,也有三种探测方式.
- 请求参数 同服务启动状态检查,只是成功重试次数总为1,不需要在界面上配置.
容器退出设置
容器退出设置是可选的,可以在【应用管理】-【应用详情】-【容器退出设置】配置.
容器退出设置提供容器优雅停止功能,在停止容器前,能够让容器里面的服务能有一定的时间处理、保存执行现场,优雅的退出程序.
在设置该配置后,退出容器前,会将容器从服务提供列表中移除,使得外部请求不再打在其上,同时执行退出前可执行Hook.
- 退出前可执行Hook:
- HTTP GET方式: 对指定的端口和路径上的容器的IP地址发送优雅停止容器 HTTP Get 请求。
- Container Command:在容器内执行优雅停止容器命令。
- 请求参数:
- 等待时间 优雅退出时间,如果超过这个时间,将立刻发送SIGKILL信号来杀死容器内所有进程.可选的,默认为30秒.
最佳实践
应用优雅停止最佳实践
我们对所有应用的优雅停止配置提供了一个全面指导,也提供了每种服务类型,从开发到线上环境测试优雅停止功能的整个流程,你可以看 应用优雅停止最佳实践 以了解更多.
访问数据库和缓存等服务
部署在应用引擎V2的应用,如需访问自己在金山云/AWS账号下的数据库或缓存等后端服务,需要
- 与生态云建立VPC对接
- 修改后端服务的安全组,允许生态云的特定网段访问
- 修改应用所在空间的网络策略,允许访后端服务
与生态云建立VPC对接
如果还没有跟生态云的VPC建立对接(对等连接/Peering Connection),请按照下表提供的生态云的VPC信息,在金山云/AWS控制台发起对接请求,然后联系生态云管理员批准.
AWS完成对接后,两边账号还需要各自添加路由.请把自己VPC的网段提供给生态云管理员.
金山云不需要做路由相关操作.
区域 | 生态云账号 | VPC ID | 生态云路由网段 |
---|---|---|---|
金山云-北京6 | 73399430 | 76403753-3fa0-4978-9096-4f68e06ea2f0 | N/A |
AWS-北京 | 403169663644 | vpc-d2f921b6 | 10.7.0.0/16 |
AWS-俄勒冈 | 654082142051 | vpc-6c9d3d09 | 10.10.0.0/16 |
AWS-法兰克福 | 654082142051 | vpc-7cf1d114 | 10.131.0.0/21 |
AWS-新加坡 | 654082142051 | vpc-47575023 | 10.141.0.0/21 |
金山云-俄罗斯 | 73399430 | 1bffc183-97c4-492c-874e-4370fa5333b3 | 10.171.0.0/20 |
修改后端服务的安全组,允许生态云的特定网段访问
根据应用所在的区域,按照下表提供的网段,添加到后端服务的安全组.
区域 | 生态云网段 |
---|---|
金山云-北京6 | 10.1.9.0/24, 10.1.10.0/24 |
AWS-北京 | 10.7.3.0/24, 10.7.4.0/24 |
AWS-俄勒冈 | 10.10.16.0/20, 10.10.80.0/20 |
AWS-法兰克福 | 10.131.2.0/24, 10.131.3.0/24 |
AWS-新加坡 | 10.141.1.0/24, 10.141.3.0/24 |
金山云-俄罗斯 | 10.171.2.0/24 |
修改应用所在空间的网络策略,允许访后端服务
为了保证隔离和安全性, 应用引擎上的应用默认不允许访问私有保留地址, 请联系生态云管理云,提供后端服务所在的网段,用来配置网络策略,允许访问这些后端服务.
AWS的后端服务,可以ping一下服务的域名来获取网段,一般来说可以直接提供VPC的网段.
金山云后端服务的网段,就是endpoint类型子网的网段,也可以提供整个VPC的网段.