ALIYUN::SAE::Application

ALIYUN::SAE::Application类型用于创建SAE应用。

语法

{
  "Type": "ALIYUN::SAE::Application",
  "Properties": {
    "Timezone": String,
    "AppDescription": String,
    "MountDesc": String,
    "NasId": String,
    "WarStartOptions": String,
    "Liveness": String,
    "Memory": Integer,
    "WebContainer": String,
    "SlsConfigs": String,
    "Cpu": Integer,
    "Deploy": Boolean,
    "PackageVersion": String,
    "AppName": String,
    "Jdk": String,
    "JarStartArgs": String,
    "PreStop": String,
    "Readiness": String,
    "PackageType": String,
    "CommandArgs": String,
    "Envs": String,
    "VSwitchId": String,
    "ImageUrl": String,
    "PostStart": String,
    "JarStartOptions": String,
    "MountHost": String,
    "Replicas": Integer,
    "CustomHostAlias": String,
    "VpcId": String,
    "Tags": List,
    "SecurityGroupId": String,
    "Command": String,
    "EdasContainerVersion": String,
    "PackageUrl": String,
    "NamespaceId": String,
    "AssociateEip": Boolean,
    "AcrInstanceId": String,
    "OssAkId": String,
    "ProgrammingLanguage": String,
    "OssAkSecret": String,
    "Python": String,
    "BaseAppId": String,
    "EnableEbpf": String,
    "PhpArmsConfigLocation": String,
    "PhpConfig": String,
    "MicroRegistrationConfig": String,
    "TerminationGracePeriodSeconds": Integer,
    "ConfigMapMountDesc": String,
    "PvtzDiscoverySvc": String,
    "AcrAssumeRoleArn": String,
    "TomcatConfig": String,
    "AppSource": String,
    "PythonModules": String,
    "NasConfigs": String,
    "MicroRegistration": String,
    "ServiceTags": String,
    "ImagePullSecrets": String,
    "AutoConfig": Boolean,
    "KafkaConfigs": String,
    "Php": String,
    "OssMountDescs": List,
    "PhpConfigLocation": String,
    "SaeVersion": String,
    "NewSaeVersion": String,
    "EnableNewArms": Boolean,
    "EnableSidecarResourceIsolated": Boolean,
    "SidecarContainersConfig": List,
    "InitContainersConfig": List
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

AppName

String

应用名称。

长度不超过36个字符,必须以英文字母开头。可包含英文字母、数字和短划线(-)。

Cpu

Integer

每个实例所需的CPU。目前仅支持固定规格的实例类型。

取值:

  • 500

  • 1000

  • 2000

  • 4000

  • 8000

  • 16000

  • 32000

单位:毫核。

Memory

Integer

每个实例所需的内存。目前仅支持固定规格的实例类型。

CPU为一一对应关系,目前仅支持以下固定规格:

  • 1024:对应CPU500毫核。

  • 2048:对应CPU500毫核和1000毫核。

  • 4096:对应CPU1000毫核和2000毫核。

  • 8192:对应CPU2000毫核和4000毫核。

  • 16384:对应CPU4000毫核和8000毫核。

  • 32768:对应CPU16000毫核。

  • 65536:对应CPU8000毫核、16000毫核和32000毫核。

  • 131072:对应CPU32000毫核。

单位:MB。

Replicas

Integer

初始实例数。

PackageType

String

应用包类型。

取值:

  • FatJar

  • War

  • Image

Timezone

String

时区。

默认值:Asia/Shanghai。

AppDescription

String

应用描述信息。

长度不超过1024个字符。

MountDesc

String

挂载描述。

NasId

String

挂载的NASID。

NAS必须有可用的挂载点创建额度,或者其挂载点已经在专有网络内的交换机上。如果不指定该参数,而是指定了MountDesc参数,则默认自动购买一个NAS并挂载到VPC内的交换机上。

WarStartOptions

String

War包启动应用选项。

应用默认启动命令:java $JAVA_OPTS $CATALINA_OPTS -Options org.apache.catalina.startup.Bootstrap "$@" start

Liveness

String

容器健康检查,健康检查失败的容器将重启。

目前仅支持容器内下发命令的方式。例如:{"exec":{"command":["sleep","5s"]},"initialDelaySeconds":10,"timeoutSeconds":11}

WebContainer

String

部署包依赖的Tomcat版本。

镜像不支持该参数。

SlsConfigs

String

文件日志采集配置。

Deploy

Boolean

是否立即部署。

取值:

  • true:立即部署。

  • false(默认值):不立即部署。

Tags

List

标签。

最多支持20个标签。

更多信息,请参见Tags语法Tags属性

PackageVersion

String

部署的包的版本号。

PackageType取值为WarFatJar时必须指定该参数。

Jdk

String

部署包依赖的JDK版本。

镜像不支持该参数。

JarStartArgs

String

JAR包启动应用参数。

应用默认启动命令:$JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs

PreStop

String

容器删除前执行脚本。

容器删除前执行脚本,例如:{"exec":{"command":"cat","/etc/group"}}

Readiness

String

应用启动状态检查脚本。

应用启动状态检查脚本,例如: {"exec":{"command":["sleep","6s"]},"initialDelaySeconds":15,"timeoutSeconds":12}

多次健康检查失败的容器将被重启。不通过健康检查的容器将不会有SLB流量进入。

CommandArgs

String

镜像启动命令参数。

Envs

String

容器环境变量参数。

容器环境变量参数的格式: [{"name":"envtmp","value":"0"}]

  • name环境变量名称。

  • value:环境变量值或环境变量引用。

VSwitchId

String

应用实例弹性网卡所在的交换机。

该交换机必须位于上述专有网络内。交换机与EDAS命名空间存在绑定关系。不指定该参数则为命名空间绑定的VSwitchId。

ImageUrl

String

镜像地址。

只有Image类型应用可以配置镜像地址。

PostStart

String

容器启动后执行脚本。

容器启动后执行脚本,例如:{"exec":{"command":"cat","/etc/group"}}

JarStartOptions

String

JAR包启动应用选项。

应用默认启动命令:$JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs

MountHost

String

NAS在专有网络内的挂载点。

CustomHostAlias

String

容器内自定义host映射。

容器内自定义host映射,格式: [{"hostName":"samplehost","ip":"127.0.XX.XX"}]

  • hostName:域名或主机名。

  • ip:IP地址。

VpcId

String

SAE命名空间对应的专有网络。

SAE中,一个命名空间只能对应一个专有网络,且不能修改。第一次在命名空间内创建SAE应用将形成绑定关系。多个命名空间可以对应一个专有网络。不填则默认为命名空间绑定的VpcId。

SecurityGroupId

String

安全组ID。

Command

String

镜像启动命令。

该命令必须为容器内存在的可执行的对象。例如:sleep。

设置该命令将导致镜像原本的启动命令失效。

EdasContainerVersion

String

EDAS Pandora应用使用的运行环境。

PackageUrl

String

部署包地址。

PackageType取值为WarFatJar时该参数有效。

NamespaceId

String

EDAS命名空间对应ID。

仅支持名称为小写英文字母和短划线(-)的命名空间,必须以小写英文字母开头。

AssociateEip

Boolean

是否绑定 EIP。

取值说明如下:

  • true:绑定。

  • false:不绑定。

AcrInstanceId

String

ACR 企业版实例 ID。

OssAkId

String

OSS 读写的 AccessKey ID。

ProgrammingLanguage

String

创建应用的技术栈语言。

取值说明如下:

  • java:Java 语言。

  • php:PHP 语言。

  • other:多语言,例如 Python、C++、Go、.NET 和 Node.js 等。

OssAkSecret

String

OSS 读写的 AccessKey Secret。

Python

String

Python 环境。

支持 PYTHON 3.9.15。

BaseAppId

String

基础应用 ID。

EnableEbpf

String

基于 eBPF 技术,对非 Java 应用开启应用监控能力。

取值说明如下:

  • true:开启。

  • false:关闭。默认值。

PhpArmsConfigLocation

String

PHP 应用监控挂载路径,需要您保证 PHP 服务器一定会加载这个路径的配置文件。

您无需关注配置内容,SAE 会自动渲染正确的配置文件。

PhpConfig

String

PHP 配置文件内容。

MicroRegistrationConfig

String

注册中心配置信息。

TerminationGracePeriodSeconds

Integer

优雅下线超时时间。

默认为 30,单位为秒。取值范围为 1~300。

ConfigMapMountDesc

String

ConfigMap挂载描述。

使用在命名空间配置项页面创建的配置项来向容器中注入配置信息。参数说明如下:

说明

可通过传递sae-sys-configmap-all参数挂载所有键。

PvtzDiscoverySvc

String

开启 K8s Service 服务注册发现。

取值说明如下:

  • serviceName:服务名称。格式为自定义-命名空间 ID,其中后缀-命名空间 ID不支持自定义,需根据应用所在命名空间填写。例如,选择华北 2(北京)地域的默认命名空间,则为-cn-beijing-default

  • namespaceId:命名空间 ID。

  • portProtocols:端口与协议。端口取值范围为[1,65535],协议支持TCPUDP

  • portAndProtocol:端口与协议。端口取值范围为[1,65535],协议支持TCPUDP优先推荐 portProtocols,如果设置了 portProtocols,仅 portProtocols 生效

  • enable:开启 K8s Service 服务注册发现。

AcrAssumeRoleArn

String

跨账号拉取镜像时所需的 RAM 角色的 ARN。

更多信息,请参见RAM角色授权

TomcatConfig

String

Tomcat 文件配置。

设置为""或"{}"表示删除配置:

  • port:端口范围为 1024~65535,小于 1024 的端口需要 Root 权限才能操作。因为容器配置的是 Admin 权限,所以请填写大于 1024 的端口。如果不配置,则默认为 8080。

  • contextPath:访问路径,默认为根目录"/"。

  • maxThreads:配置连接池的连接数大小,默认大小为 400。

  • uriEncoding:Tomcat 的编码格式,包括UTF-8ISO-8859-1GBK 和 GB2312。如果不设置,则默认为ISO-8859-1

  • useBodyEncodingForUri:是否使用BodyEncoding for URL,默认为true

AppSource

String

微服务应用。

可选值:

  • micro_service

PythonModules

String

自定义安装模块依赖。

默认安装根目录下 requirements.txt 定义的依赖项。如果未配置或自定义软件包,可以指定安装的依赖。

NasConfigs

String

挂载 NAS 的配置。

取值说明如下:

  • mountPath:容器挂载路径。

  • readOnly:取值为false时,表示拥有读写权限。

  • nasId:NAS ID。

  • mountDomain:容器挂载点地址。更多信息,请参见DescribeMountTargets

  • nasPath:NAS 相对文件目录。

MicroRegistration

String

选择 Nacos 注册中心。

取值说明如下:

  • 0:SAE 内置 Nacos。

  • 1:用户自建 Nacos。

  • 2:MSE 商业版 Nacos。

ServiceTags

String

应用配置的灰度标签。

ImagePullSecrets

String

对应保密字典 ID。

AutoConfig

Boolean

是否自动配置网络环境。

取值说明如下:

  • true:创建应用时 SAE 自动配置网络环境。NamespaceIdVpcIdvSwitchIdSecurityGroupId的取值将被忽略。

  • false:创建应用时 SAE 手动配置网络环境。

说明

如果选择为true,则传其他的NamespaceId会被忽略。

KafkaConfigs

String

日志采集到 Kafka 的配置汇总信息。

取值说明如下:

  • kafkaEndpoint:Kafka API 的服务接入地址。

  • kafkaInstanceId:Kafka 实例 ID。

  • kafkaConfigs:单条或多条日志的配置汇总信息。取值说明,请参见本文的请求参数KafkaConfigs。

Php

String

PHP 部署包依赖的 PHP 版本。

无。

OssMountDescs

List

OSS 挂载描述信息。

参数说明如下:

  • bucketName:Bucket 名称。

  • bucketPath:您在 OSS 创建的目录或 OSS 对象,如果 OSS 挂载目录不存在,会触发异常。

  • mountPath:您在 SAE 的容器路径。如果路径已存在,为覆盖关系;如果路径不存在,会新建。

  • readOnly:容器路径是否对挂载目录资源有可读权限,取值说明如下:

    • true:只读权限。

    • false:读写权限。

PhpConfigLocation

String

PHP 应用启动配置挂载路径

需要您保证 PHP 服务器会使用这个配置文件启动。

SaeVersion

String

SAE 版本。

支持版本如下:

  • v1

  • v2

NewSaeVersion

String

SAE版本。

取值:

  • lite

  • std

  • pro

EnableNewArms

Boolean

是否启用新的Arms功能。

取值:

  • true:启用

  • false:不启用

EnableSidecarResourceIsolated

Boolean

是否启用 Sidecar 资源隔离。

取值:

  • true:进行隔离

  • false:不进行隔离

SidecarContainersConfig

List

容器配置信息列表。

更多信息,请参考SidecarContainersConfig属性

InitContainersConfig

List

初始化容器配置列表。

更多信息,请参考InitContainersConfig属性

SidecarContainersConfig语法

"SidecarContainersConfig": [
  {
    "CommandArgs": String,
    "AcrInstanceId": String,
    "Memory": Integer,
    "Name": String,
    "EmptyDirDesc": String,
    "Command": String,
    "ImageUrl": String,
    "Cpu": Integer,
    "Envs": String,
    "ConfigMapMountDesc": String
  }
]  

SidecarContainersConfig属性

属性名称

类型

必须

允许更新

描述

约束

CommandArgs

String

要在init容器中运行的命令参数。

AcrInstanceId

String

ACR实例的ID。

Memory

Integer

分配给Sidecar容器的内存量。

Name

String

Sidecar容器的名称。

EmptyDirDesc

String

EMPTYDIR装载说明。

Command

String

要在init容器中运行的命令。

ImageUrl

String

镜像地址。

仅映像类型的应用程序可配置为镜像地址。

Cpu

Integer

分配给Sidecar容器的CPU核心数。

Envs

String

容器环境变量参数。

示例:

[{ \"name\": \"envtmp\", \"value\": \"0\"}]

ConfigMapMountDesc

String

ConfigMap装载说明。

InitContainersConfig语法

"InitContainersConfig": [
  {
    "Command": String,
    "ConfigMapMountDesc": String,
    "ImageUrl": String,
    "CommandArgs": String,
    "Envs": String,
    "Name": String
  }
]  

InitContainersConfig属性

属性名称

类型

必须

允许更新

描述

约束

Command

String

要在init容器中运行的命令。

ConfigMapMountDesc

String

ConfigMap装载说明。

ImageUrl

String

镜像地址。

仅映像类型的应用程序可配置为镜像地址。

CommandArgs

String

要在init容器中运行的命令参数。

Envs

String

容器环境变量参数。

示例:

[{ \"name\": \"envtmp\", \"value\": \"0\"}]

Name

String

初始化容器的名称。

Tags语法

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]  

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

标签键。

长度为1~128个字符,不能以aliyunacs:开头,不能包含http://https://

Value

String

标签值。

长度为0~128个字符,不能以aliyunacs:开头,不能包含http://https://

返回值

Fn::GetAtt

  • AppId:应用ID。

  • ChangeOrderId:发布单ID,用于查询任务执行状态。

示例

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  NamespaceId:
    Type: String
    Description: |-
      EDAS namespace corresponding to ID. Canada supports only the name of the scribe lowercase namespace must begin with a letter.
      Namespace can interface to obtain from DescribeNamespaceList.
  VpcId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
  VSwitchId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
  SecurityGroupId:
    Type: String
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
Resources:
  Application:
    Type: ALIYUN::SAE::Application
    Properties:
      AppName: TestApp
      NamespaceId:
        Ref: NamespaceId
      VpcId:
        Ref: VpcId
      VSwitchId:
        Ref: VSwitchId
      SecurityGroupId:
        Ref: SecurityGroupId
      Cpu: 500
      Memory: 1024
      Replicas: 2
      PackageType: War
      Deploy: true
      Timezone: Asia/Shanghai
Outputs: {}
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "NamespaceId": {
      "Type": "String",
      "Description": "EDAS namespace corresponding to ID. Canada supports only the name of the scribe lowercase namespace must begin with a letter.\nNamespace can interface to obtain from DescribeNamespaceList."
    },
    "VpcId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
    },
    "VSwitchId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
      "AssociationPropertyMetadata": {
        "VpcId": "${VpcId}"
      }
    },
    "SecurityGroupId": {
      "Type": "String",
      "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId",
      "AssociationPropertyMetadata": {
        "VpcId": "${VpcId}"
      }
    }
  },
  "Resources": {
    "Application": {
      "Type": "ALIYUN::SAE::Application",
      "Properties": {
        "AppName": "TestApp",
        "NamespaceId": {
          "Ref": "NamespaceId"
        },
        "VpcId": {
          "Ref": "VpcId"
        },
        "VSwitchId": {
          "Ref": "VSwitchId"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroupId"
        },
        "Cpu": 500,
        "Memory": 1024,
        "Replicas": 2,
        "PackageType": "War",
        "Deploy": true,
        "Timezone": "Asia/Shanghai"
      }
    }
  },
  "Outputs": {
  }
}

更多示例,请参见创建命名空间、创建SAE应用和为应用绑定SLB的组合示例:YAML示例