快速上手

整体流程

  1. 开通生态云Docker镜像仓库
  2. 创建空间
  3. 为空间添加权限
  4. 镜像推送到生态云Docker镜像仓库
  5. 创建Docker仓库凭证
  6. 创建域名
  7. 部署应用
  8. 访问数据库和缓存等服务

生态云镜像仓库

应用引擎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
AWS-印度 in-repo.cloud.mi.com
金山云-俄罗斯 ru-repo.cloud.mi.com

创建空间

使用管理员账号登录生态云,切换到金山云北京6区,然后在"用户管理"中添加如下的空间资源,名称不要包含公司的org名称

添加资源

然后把这个资源添加到相关的角色中.

注意

  1. 目前应用引擎V2开通了AWS北京区域,金山云北京6区,aws俄勒冈,aws法兰克福区域,aws新加坡区域,但只能在金山云区域执行添加修改操作
  2. 空间创建后, 名字前面会自动附加公司的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仓库凭证"

Secrets管理

创建域名

如果应用对外提供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服务。

HTTP方式

TCP-UDP方式:

TCP方式

修改域名指向

在域名提供商的管理控制台,修改app1.mydomain.com的指向

区域 记录类型 指向
金山云-北京6 A记录 请提前做好域名备案,具体IP地址请联系生态云工程师分配
AWS-北京 CNAME 请提前做好域名备案,具体域名指向请联系生态云工程师分配
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
AWS-印度 13.127.138.74 13.127.50.144
金山云-俄罗斯 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账号下的数据库或缓存等后端服务,需要

  1. 与生态云建立VPC对接
  2. 修改后端服务的安全组,允许生态云的特定网段访问
  3. 修改应用所在空间的网络策略,允许访后端服务

与生态云建立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
AWS-印度 654082142051 vpc-3cd80154 10.161.0.0/20
金山云-俄罗斯 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
AWS-印度 10.161.0.0/20
金山云-俄罗斯 10.171.2.0/24

修改应用所在空间的网络策略,允许访后端服务

为了保证隔离和安全性, 应用引擎上的应用默认不允许访问私有保留地址, 请联系生态云管理云,提供后端服务所在的网段,用来配置网络策略,允许访问这些后端服务.

AWS的后端服务,可以ping一下服务的域名来获取网段,一般来说可以直接提供VPC的网段.

金山云后端服务的网段,就是endpoint类型子网的网段,也可以提供整个VPC的网段.

results matching ""

    No results matching ""