EDAS现支持从源码构建PHP应用并部署至EDAS的容器服务K8s集群或Serverless K8s集群,并提供了应用扩缩、监控报警、负载均衡和限流降级等能力。部署PHP应用至容器服务K8s集群或Serverless K8s集群的操作步骤类似,本文介绍如何从源码构建PHP应用并部署至容器服务K8s集群。

前提条件

步骤一:创建容器服务Kubernetes集群

登录容器服务Kubernetes版控制台,创建容器服务Kubernetes集群。具体操作,请参见快速创建Kubernetes托管版集群

如果创建Serverless Kubernetes集群,专有网络请选择自动创建(选择已有网络,创建完毕后请查看集群资源是否包含VPC和交换机资源),服务发现请选择PrivateZone,以便Serverless Kubernetes集群在导入EDAS后可以使用服务网格。具体操作,请参见创建ASK集群

步骤二:在EDAS控制台中导入容器服务K8s集群

在EDAS控制台导入容器服务K8s集群时,会默认安装应用防护(限流降级)组件(ack-ahas-sentinel-pilot)、ARMS监控组件(ack-arms-pilot)以及Prometheus监控组件(ack-arms-prometheus)。

  1. 登录EDAS控制台,在左侧导航栏,选择资源管理 > 容器服务K8s集群
  2. 在顶部菜单栏选择地域,然后单击同步容器服务Kubernetes集群
  3. 在导入的容器服务K8s集群的操作列,单击导入
  4. 导入预检对话框选,单击继续导入
  5. 导入Kubernetes集群对话框,从下拉列表中选择目标微服务空间,根据需要选择是否开启服务网格,然后单击导入
    当容器服务K8s集群状态显示为运行中,并且导入状态显示为导入成功时,表示容器服务K8s集群已成功导入到EDAS。

步骤三:在容器服务K8s版集群中部署PHP应用

  1. 登录EDAS控制台
  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面左上角,单击创建应用
  3. 应用基本信息页面中设置应用的集群类型和应用运行环境,然后单击下一步
    配置项描述
    集群类型选择Kubernetes集群
    应用运行环境在本篇文档中,选择PHP。通过EDAS构建出的镜像提供PHP 7.3和Apache 2.4的运行环境,该运行环境内已经安装了常用的PHP插件。
  4. 应用配置页签中设置应用的环境信息、基本信息、源码及镜像构建相关信息,设置完成后单击下一步
    PHP应用配置
    配置项描述
    微服务空间选择您创建的微服务空间,如果您未创建微服务空间或不做选择,微服务空间则设置为默认

    如果您没有创建微服务空间,或者需要创建新的微服务空间,您可以直接单击创建微服务空间,创建一个全新的微服务空间。具体操作,请参见使用控制台管理微服务空间

    集群在右侧下拉列表内选择已导入的容器服务K8s集群。

    如果您选择的K8s集群未导入到EDAS,请选中该集群在EDAS初次使用,勾选后,将会在应用创建时将该集群导入EDAS,因此会产生一定耗时。并确认是否开启服务网格。

    说明 集群导入的微服务空间可以不是应用所属微服务空间。
    K8s NamespaceK8s Namespace通过将系统内部的对象分配到不同的Namespace中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理。
    • default:没有其他命名空间的对象的默认命名空间。
    • kube-system:系统创建的对象的命名空间。
    • kube-public:此命名空间是自动创建的,并且可供所有用户(包括未经过身份验证的用户)读取。

    此处以选择default为例。

    如果您需要自定义创建K8s Namespace,请单击创建K8s Namespace并设置K8s Namespace名称。名称设置要求只能包含数字、小写字母和短划线(-),且首尾只能是字母或数字,长度为1~63个字符。

    应用名称输入应用名称,必须以字母开头,允许数字、字母、短划线(-)组合。最大长度为36个字符。
    应用描述输入应用描述 ,最大长度为128个字符。
    部署包来源默认选择源代码
    版本可选择时间戳作为版本,或自定义版本号。
    代码仓库地址输入您的PHP应用的代码仓库的公网访问地址,现支持HTTPS和Git两种协议。
    鉴权方式如果代码仓库是私有,需要配置鉴权方式:
    • 用户名和密码:选择您创建的密钥。如果没有可选的密钥,请参照以下步骤创建密钥:
      1. 在文本框右侧单击创建证书
      2. 创建证书对话框中输入密钥名称、用户名和密码。
      3. 配置完成后在对话框单击创建
    • SSH密钥:将EDAS提供的SSH密钥配置到代码仓库中。更多信息,请参见如何在使用源码部署应用时配置SSH公钥
    分支或标签输入代码库的分支或标签。
    高级配置(可选)打开高级配置,完成下述参数的配置:
    • 克隆子模块:子模块允许您将一个Git仓库作为另一个Git仓库的子目录。 它能让您将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
    • 工作目录:工作目录是保存您目前正在处理档案的目录,Git相关的操作都会在这个目录下完成。
    • 产出物路径:指定Git的产出文件的存放目录。
    Pod总数设置该应用要部署的Pod个数。
    单Pod资源配额设置单个Pod的CPU和内存,如果您需要限额,请填写具体的数字,使用默认值0则代表不限额。
  5. 可选:配置应用高级设置,设置完成后单击创建应用
    1. 设置环境变量。
      在创建应用过程中,将所填环境变量注入到即将生成的容器中,这样可以避免重复添加常用环境变量。
      • 如您使用MySQL镜像,可以参考以下环境变量:
        • MYSQL_ROOT_PASSWORD(必选项):用于设置MySQL的root密码。
        • MYSQL_USER和MYSQL_PASSWORD(可选项):用于添加除root之外的账号并设置密码。
        • MYSQL_DATABASE(可选项):用于设置生成容器时需要新建的数据库。
      • 如使用其它类型的镜像,请根据实际需求进行配置。
    2. 设置持久化存储。

      在阿里云容器服务Kubernetes集群中,原生的Volume对象所对应的物理储存为非持久化的,它的生命周期与Kubernetes Pod一致,是一个暂态的储存对象。使用持久化的储存服务(文件储存NAS),可以永久保存实例数据,应用在升级或迁移后不丢失。

      说明 设置持久化存储前,请确保您的EDAS账号已开通文件存储NAS。使用NAS请保证当前账户拥有足够的余额或计费方式为后付费。NAS服务的计费规则,请参见计费项
      参数描述
      NAS文件存储
      说明 使用NAS文件存储服务时,请确保您的集群安装了flexvolume组件,对于Serverless集群请确保NAS挂载目录存在。NAS存储按实际使用量付费,详细收费标准,请参见NAS计费说明
      存储类型默认为NAS文件存储,不可配置。
      存储服务类型目前仅支持SSD性能型,不可配置。
      选择NAS
      • 新购一个NAS:选择NAS挂载目录和本地挂载目录。单一地域内NAS文件系统上限为10个,若已超过10个会创建失败。如有特殊需求,请提交工单
      • 使用已有NAS:选择一个已有的NAS。您最多可以创建两个挂载点。不符合要求的NAS将不会显示在下拉列表中。
      挂载目录分别设置NAS挂载目录容器挂载目录
      PVC挂载
      说明 通过修改YAML方式配置的PVC挂载,在部署应用时将不会显示已存在的PVC挂载,仅部署时会保留这些配置。推荐您在使用EDAS部署应用时配置PVC挂载。
      选择PVC在下拉列表中选择PVC。如果没有可选的PVC,请参见文件存储NAS用户指南的创建持久化存储卷声明章节。
      挂载配置分别设置挂载目录挂载模式
    3. 设置应用生命周期管理。
      配置项描述
      PostStart配置一种容器钩子。该钩子在容器被创建后立刻触发。该钩子不需要向其所对应的hook handler传入任何参数。如果该钩子对应的hook handler执行失败,则该容器会终止运行,并根据该容器的重启策略决定是否要重启该容器。更多信息,请参见Container Lifecycle Hooks
      PreStop配置一种容器钩子。该钩子在容器被删除前触发,其所对应的hook handler必须在删除该容器的请求发送给Docker daemon之前完成。在该钩子对应的hook handler完成后不论执行的结果如何,Docker daemon会发送一个SIGTERN信号量给Docker daemon来删除该容器。更多信息,请参见Container Lifecycle Hooks
      Liveness配置一种探测容器状态的探针,探测应用是否处于健康状态。如果不健康,则删除重建容器。更多信息,请参见Pod Lifecycle
      Readiness配置一种探测容器状态的探针,探测应用是否启动完成并且处于正常服务状态。如果不正常,则更新容器的状态。更多信息,请参见Pod Lifecycle
  6. 完成设置后单击创建应用,然后在应用创建完成页签,单击确定创建应用
    应用创建可能需要几分钟,创建过程中,可以在变更记录页面查看应用的创建流程。创建完成后,返回应用总览页面查看实例Pod的运行状态若为运行中则说明应用发布成功,单击Pod的运行状态可以查看应用实例的工作负载容器组(Pod)启动命令等高级配置信息。

常见问题

怎么查看镜像构建出错日志?
在进行应用部署的时候,如果镜像构建失败,可以在变更记录页面查看日志。具体操作,请参见查看应用变更在变更记录中查看错误信息

后续步骤

应用创建完毕后,可以通过添加公网SLB实现公网访问,添加私网SLB实现同VPC内所有节点够能通过私网负载均衡访问您的应用。相关操作,请参见添加负载均衡CLB复用负载均衡CLB

联系我们

如果您在部署EDAS多语言微服务应用过程中有任何疑问或建议,请使用钉钉搜索钉钉群号23307994加入钉钉群进行反馈。

多语言用户群钉钉二维码