InsertK8sApplication - 创建K8s应用

调用InsertK8sApplication接口在容器服务K8s集群或Serverless K8s集群中创建应用。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

调试

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用加粗字体表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
edas:InsertK8sApplicationRead

    请求参数

    名称类型必填描述示例值
    IntranetTargetPortinteger

    内网SLB后端端口,也是应用的服务端口,范围为1~65535。

    80
    IntranetSlbPortinteger

    内网SLB前端端口,范围为1~65535。

    80
    ImageUrlstring

    镜像地址,当设置PackageTypeImage时,此参数项为必填。

    registry.cn-beijing.aliyuncs.com/****_test/****-cons****:1.0
    ApplicationDescriptionstring

    应用描述信息。

    生产环境应用
    RepoIdstring

    镜像的仓库ID。

    ced********
    Replicasinteger

    应用实例数。

    4
    LimitCpuinteger

    应用运行过程中,应用实例的CPU限额,单位:核数。如果LimitmCpu不为空,则忽略该参数。

    4
    LimitMeminteger

    应用运行过程中,应用实例的内存限额,单位:MB。LimitMem取值要不小于RequestsMem。

    2
    RequestsCpuinteger

    应用创建时,应用实例的CPU限额,单位:核数。设置为0时表示不限制。如果RequestsmCpu,则使用RequestsmCpu,忽略该参数。

    0
    RequestsMeminteger

    应用创建时,应用实例的内存限额,单位:MB。设置为0时表示不限制。RequestsMem的取值不能大于LimitMem的取值。

    0
    Commandstring

    设置的命令,如果设置会在镜像启动时,替代镜像中的启动命令。

    ls
    CommandArgsstring

    与命令组合使用,命令的参数是JsonArray字符串,格式如:[{"argument":"-c"},{"argument":"test"}]。其中-ctest为需要设置的两个参数。

    [{"argument":"-lh"}]
    AppNamestring

    应用名称。必须以字母开头,支持数字、字母和短划线(-),最多支持36个字符。

    doc-test
    IntranetSlbProtocolstring

    私网SLB协议,支持TCP、HTTP和HTTPS协议。

    TCP
    IntranetSlbIdstring

    私网SLB ID,不配置时,EDAS会自动为用户新购SLB。

    ae93********
    ClusterIdstring

    集群ID,可调用ListCluster接口获取,详情请参见ListCluster

    c9cd****
    InternetSlbIdstring

    公网SLB ID,不配置时,EDAS会自动为用户新购SLB。

    a3d4********
    InternetSlbProtocolstring

    公网SLB协议,支持TCP、HTTP和HTTPS协议。

    TCP
    InternetSlbPortinteger

    公网SLB前端端口,范围为1~65535。

    80
    InternetTargetPortinteger

    私网SLB后端端口,也是应用的服务端口,范围为1~65535。

    8080
    Envsstring

    部署环境变量,格式需要符合JSON对象数组。支持三种类型的环境变量,分别是普通环境变量,K8s ConfigMap环境变量,K8s Secret环境变量。普通环境变量格式如下所示:

    {"name":"x", "value": "y"}

    ConfigMap环境变量配置可以将指定的ConfigMap中对应的key的值注入到容器的环境变量中,配置的格式如下所示:

    { "name": "x2", "valueFrom": { "configMapKeyRef": { "name": "my-config", "key": "y2" } } }

    Secret环境变量配置可以将指定的Secret中对应的key的值注入到容器的环境变量中,配置的格式如下所示:

    { "name": "x3", "valueFrom": { "secretKeyRef": { "name": "my-secret", "key": "y3" } } }

    说明如果要取消该配置,需设置一个空JSON数组“[]”来表示不做配置。
    [{"name":"x1","value":"y1"},{"name":"x2","valueFrom":{"configMapKeyRef":{"name":"my-config","key":"y2"}}},{"name":"x3","valueFrom":{"secretKeyRef":{"name":"my-secret","key":"y3"}}}]
    PreStopstring

    停止前执行脚本,示例格式:{"tcpSocket":{"host":"", "port":8080}}

    如果设置为""或者{}表示删除,不设置表示忽略。

    {\"exec\":{\"command\":[\"ls\",\"/\"]}}"
    PostStartstring

    启动后执行脚本,格式如:{"exec":{"command":\["cat","/etc/group"\]}}

    如果设置为""或者{}表示删除,不设置表示忽略。

    {\"exec\":{\"command\":[\"ls\",\"/\"]}}"
    Livenessstring

    容器存活状态监测 ,格式如{"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"tcpSocket":{"host":"", "port":8080}}

    如果设置为""或者{}表示删除,不设置表示忽略。

    {"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"tcpSocket":{"host":"", "port":8080}}
    Readinessstring

    容器业务状态检查,如果检查失败,经过K8s Service的流量将不转入到该容器,格式如:{"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"httpGet": {"path": "/consumer","port": 8080,"scheme": "HTTP","httpHeaders": \[{"name": "test","value": "testvalue"}\]}}

    如果设置为""或者{}表示删除,不设置表示忽略。

    {"failureThreshold": 3,"initialDelaySeconds": 5,"successThreshold": 1,"timeoutSeconds": 1,"httpGet": {"path": "/consumer","port": 8080,"scheme": "HTTP","httpHeaders": [{"name": "test","value": "testvalue"}]}}
    NasIdstring

    挂载的NAS的ID,必须与集群在同一个地域。它必须有可用的挂载点创建额度,或者它的挂载点已经在VPC内的交换机上。如果不填,且存在mountDescs字段,则默认将自动购买一个NAS并挂载到VPC内的交换机上。

    dfs23****
    MountDescsstring

    挂载配置描述,为一个序列化的JSON。例如:\[{"nasPath": "/k8s","mountPath": "/mnt"},{"nasPath": "/files","mountPath": "/app/files"}\]。其中,nasPath是指文件储存路径;mountPath是指挂载到容器内的路径。

    [{"nasPath": "/k8s","mountPath": "/mnt"},{"nasPath": "/files","mountPath": "/app/files"}]
    StorageTypestring

    NAS存储类型,包括:

    • 通用型NAS:Capacity(容量型)、Performance(性能型)
    • 极速型NAS:standard(标准型)、advance(高级型)

    目前只支持Performance类型。

    Performance
    LocalVolumestring

    宿主机文件挂载到容器内的配置。例如:\[{"type":"","nodePath":"/localfiles","mountPath":"/app/files"},{"type":"Directory","nodePath":"/mnt","mountPath":"/app/storage"}\]。其中:

    • nodePath为宿主机路径。

    • mountPath为容器内的路径。

    • type为挂载类型。

    [{"type":"","nodePath":"/localfiles","mountPath":"/app/files"},{"type":"Directory","nodePath":"/mnt","mountPath":"/app/storage"}]
    Namespacestring

    K8s集群的命名空间,它将决定您的应用部署在哪个K8s命名空间。默认为default。

    default
    LogicalRegionIdstring

    EDAS命名空间对应ID,非默认命名空间须填写。

    cn-shenzhen:beta****
    PackageTypestring

    应用包类型。可选参数值包含:FatJar、WAR和Image。

    WAR
    PackageUrlstring

    部署包地址。通过FatJar或WAR包部署的应用需要配置部署包地址。

    说明EDAS POP API的Java或者Python SDK需要2.44.0或以上版本。
    https://e***.oss-cn-beijing.aliyuncs.com/s***-1.0-SNAPSHOT-spring-boot.jar
    PackageVersionstring

    部署包的版本号,WAR和FatJar类型必填。请自定义它的含义。

    说明EDAS POP API的Java或者Python SDK需要2.44.0或以上版本。
    20200720
    JDKstring

    部署的包依赖的JDK版本。可选的参数值为Open JDK 7和Open JDK 8。镜像部署方式不支持此参数。

    Open JDK 8
    WebContainerstring

    部署包依赖的Tomcat版本。适用于通过WAR包部署的Spring Cloud和Dubbo应用,镜像不支持此参数。

    apache-tomcat-7.0.91
    EdasContainerVersionstring

    部署的包依赖的EDAS-Container版本。

    说明使用镜像部署时不支持此参数。
    3.5.9
    UriEncodingstring

    URI编码方式,支持ISO-8859-1、GBK、GB2312和UTF-8。

    说明应用配置不设置该参数,使用Tomcat默认值。
    GBK
    UseBodyEncodingboolean

    useBodyEncodingForURI是否启用。

    说明应用配置不设置该参数,使用默认值false。
    false
    RequestsmCpuinteger

    应用创建时,应用实例的CPU限额,单位:毫核数。

    500
    LimitmCpuinteger

    应用运行过程中,应用实例的CPU限额。 单位:毫核数,设置为0表示不限制。

    1000
    RuntimeClassNamestring

    容器运行时类型,仅适用于使用安全沙箱容器的集群。

    runc
    DeployAcrossZonesstring

    是否将应用实例分布到多可用区。true代表是,其他值为否。

    true
    Timeoutinteger

    变更流程超时时间,单位:秒。取值范围为1~1800秒,不填默认为1800秒。

    60
    EnableAhasboolean

    是否接入AHAS:

    • true:接入AHAS。
    • false:不接入AHAS。
    true
    WebContainerConfigstring

    Tomcat容器配置,设置为""或"{}"表示删除配置:

    • useDefaultConfig:是否使用自定义配置,若为true,则表示不使用自定义配置,若为false,则表示使用自定义配置。若不使用自定义配置,则下面的参数配置将不会生效。

    • contextInputType:选择应用的访问路径。

      • war:无需填写自定义路径,应用的访问路径是WAR包名称。
      • root:无需填写自定义路径,应用的访问路径是/
      • custom:需要在下面的自定义路径中填写自定义的路径。
    • contextPath:自定义路径,当contextInputType类型为custom时,才需要配置此参数。

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

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

      说明此项配置对应用性能有很大影响,请由专业人士配置。
    • uriEncoding:Tomcat的编码格式,包括UTF-8、ISO-8859-1、GBK和GB2312。如果不设置则默认为ISO-8859-1。

    • useBodyEncoding:是否使用BodyEncoding for URL。

    • useAdvancedServerXml:是否使用高级配置自定义设置server.xml文件,当上述参数类型和具体参数无法满足您的需求时,可以选中使用高级设置,直接对Tomcat的Server.xml文件进行编辑。

    • serverXml:高级配置中自定义设置的server.xml文本文件内容,当useAdvancedServerXml为true时生效。

    {"useDefaultConfig":false,"contextInputType":"custom","contextPath":"hello","httpPort":8088,"maxThreads":400,"uriEncoding":"UTF-8","useBodyEncoding":true,"useAdvancedServerXml":false}
    JavaStartUpConfigstring

    Java启动参数用于在Java应用启动时配置启动参数。可配置:内存配置、应用、GC策略、工具、服务注册和发现配置和自定义等配置,正确配置这些参数有助于降低垃圾回收(GC)开销,从而缩短服务器响应时间并提高吞吐量。参数格式为JSON字符串:original为配置值,startup为启动参数,系统将自动拼接所有的startup作为应用程序的Java启动参数。设置为"""{}"表示删除配置。JSON中key取值如下:

    • InitialHeapSize:代表初始化堆大小。
    • MaxHeapSize:代表最大堆大小。
    • CustomParams:代表用户自定义内容,如JVM -D参数等。
    • 其它情况:可自行查看前端提交的JSON结构。
    {"InitialHeapSize":{"original":512,"startup":"-Xms512m"},"MaxHeapSize":{"original":1024,"startup":"-Xmx1024m"},"CustomParams":{"original":"-Dcustom.property.sample=false","startup":"-Dcustom.property.sample=false"}}
    SlsConfigsstring

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

    • Configs:

      • type:采集类型,文件类型为file,标准输出类型为stdout。

      • Logstore:Logstore名称。请确保Logstore名称在同一个集群中不重复,其命名应符合规则。

        • 日志库名称仅支持小写字母、数字、短划线(-)和下划线(_)。
        • 必须以小写字母和数字开头和结尾。
        • 名称长度为3~63个字符。若为空,则由系统自动生成。
      • LogDir:若为标准输出类型,则采集路径为stdout.log,若为文件类型,则为采集的文件路径,支持通配,采集路径应符合正则:^/(.+)/(.*)^/$

    [{"logstore":"thisisanotherfilelog","type":"file","logDir":"/var/log/*"},{"logstore":"","type":"stdout","logDir":"stdout.log"},{"logstore":"thisisafilelog","type":"file","logDir":"/tmp/log/*"}]
    IsMultilingualAppboolean

    是否为多语言应用。

    true
    DeployAcrossNodesstring

    是否将应用实例分布到多个节点。true代表是,其他值为否。

    true
    PvcMountDescsstring

    配置K8s PVC(PersistentVolumeClaim)挂载,支持将K8s PVC卷挂载到指定的容器目录。PvcMountDescs的配置参数说明如下:

    • pvcName:PVC卷名称,PVC卷必须已经存在,且处于Bound状态。
    • mountPaths:挂载目录列表,支持配置多个挂载目录。每个挂载目录支持两个配置参数。
      • mountPath:挂载路径,以正斜线(/)开头的容器绝对路径。
      • readOnly:挂载模式,true为只读,false为可读写,默认为false。
    [{"pvcName":"nas-pvc-1","mountPaths":[{"mountPath":"/usr/share/nginx/data"},{"mountPath":"/usr/share/nginx/html","readOnly":true}]}]
    ConfigMountDescsstring

    配置K8s ConfigMap和Secret挂载,支持将ConfigMap和Secret挂载到指定的容器目录。ConfigMountDescs的配置参数说明如下:

    • name:ConfigMap或Secret的名称。
    • type:配置类型,支持ConfigMap和Secret两种类型。
    • mountPath:挂载路径,以正斜线(/)开头的容器绝对路径。
    [{"name":"nginx-config","type":"ConfigMap","mountPath":"/etc/nginx"},{"name":"tls-secret","type":"secret","mountPath":"/etc/ssh"}]
    CsClusterIdstring

    只有在用户使用一个从未导入的集群来创建应用时,才需要指定csClusterId。

    abcdefg
    EnableAsmboolean

    只有在用户使用一个从未导入的集群来创建应用,同时开启ASM时,才需要设置这个值为true。

    false
    EnvFromsstring

    配置K8s EnvFrom类型的环境变量,将指定的ConfigMap或Secret挂载到指定目录,每个key对应目录下的一个文件,文件的内容为该key对应的value。

    EnvFroms的配置参数说明如下:

    • configMapRef:ConfigMap引用,该字段包括以下参数:
      • name:ConfigMap名称。
    • secretRef:Secret引用,该字段包括以下参数:
      • name:Secret名称。
    [{"name":"appname","valueFrom":{"configMapKeyRef":{"name":"appconf","key":"name"}}}]
    EmptyDirsstring

    配置K8s emptyDir挂载,支持将emptyDir卷挂载到指定的容器目录。EmptyDirs的配置参数说明如下:

    • mountPath:容器挂载路径,必填。
    • readOnly:是否只读,可选,true为只读,false为读写,默认为false。
    • subPathExpr:子目录表达式,可选。
    [{"mountPath":"/app-log","subPathExpr":"$(POD_IP)"},{"readOnly":true,"mountPath":"/etc/nginx"}]
    BuildPackIdstring

    配置edas container版本,与edasContainerVersion字段冲突。建议使用edasContainerVersion字段。

    -1
    CustomAffinitystring

    自定义关联。

    demo
    CustomTolerationsstring

    自定义公差。

    demo
    ResourceGroupIdstring

    资源组ID。

    461
    Annotationsstring

    应用Pod注解。

    {"annotation-name-1":"annotation-value-1","annotation-name-2":"annotation-value-2"}
    Labelsstring

    应用Pod标签。

    {"label-name-1":"label-value-1","label-name-2":"label-value-2"}
    EnableEmptyPushRejectboolean

    是否开启推空保护:

    • true:开启推空保护。
    • false:不开启推空保护。
    false
    EnableLosslessRuleboolean

    是否启用无损上线规则:

    • true:启用无损上线规则。
    • false:不启用无损上线规则。
    true
    LosslessRuleWarmupTimeinteger

    服务预热时长,单位:秒。取值范围为0~86400秒。

    120
    LosslessRuleDelayTimeinteger

    服务延迟注册时长,单位:秒。取值范围为0~86400秒。

    0
    LosslessRuleFuncTypeinteger

    服务预热曲线。取值范围0~20。默认为2(适合于一般预热场景),表示在预热周期内服务提供者的流量接收曲线形状呈2次曲线形状。

    2
    LosslessRuleAlignedboolean

    是否启用无损滚动发布模式配置通过就绪检查前完成服务注册:

    • true:打开开关会为应用无侵入提供55199端口和/health路径的健康检查方式,当完成服务注册后,该接口返回200,否则返回500。
    注意若同时配置`LosslessRuleRelated`为`true`,则该接口检查是否完成服务预热。
    • false:不为应用提供检查是否完成服务注册的接口。
    falseLosslessRuleRelatedboolean否

    是否启用无损滚动发布模式配置通过就绪检查前完成服务预热:

    • true:打开开关会为应用无侵入提供55199端口和/health路径的健康检查方式,当完成服务预热后,该接口返回200,否则返回500。
    • false:不为应用提供检查是否完成服务预热的接口。
    falseServiceConfigsstring否

    K8s服务Service配置。

    [{"externalTrafficPolicy":"Local","type":"ClusterIP","servicePorts":[{"targetPort":8080,"port":80,"protocol":"TCP"}]}] AppTemplateNamestring否

    创建应用使用的应用模版名称,若创建应用时指定应用模版,则将优先使用应用模版和AppConfig参数确定应用配置,忽略其他配置。

    app-template001AppConfigstring否

    使用应用模版时的应用配置,JSON格式字符串。

    {}

    返回参数

    名称类型描述示例值
    object

    接口响应。

    Codeinteger

    接口状态或POP错误码。

    200
    Messagestring

    附加信息。

    success
    RequestIdstring

    请求ID。

    b197-40ab-9155-****
    ApplicationInfoobject

    应用详情。

    ChangeOrderIdstring

    变更流程ID,可调用GetChangeOrderInfo接口获取,详情请参见GetChangeOrderInfo

    cd65b247-****-475b-ad4b-7039040d625c
    AppNamestring

    应用名称。

    test
    Dockerizeboolean

    是否为Docker应用。

    • true:是。
    • false:否。
    true
    Ownerstring

    负责人。

    zp
    EdasIdstring

    用户账号ID。

    1172****6608****
    ClusterTypeinteger

    应用集群环境类型如下:

    • 0:普通Docker集群。
    • 1:Swarm集群(已下线)。
    • 2:ECS集群。
    • 3:EDAS自建K8s集群(已下线)。
    • 4:Pandora自动注册应用集群类型。
    • 5:容器服务K8s集群和Serverless K8s集群。
    5
    AppIdstring

    应用ID,可通过调用ListApplication接口获取,详情请参见ListApplication

    e83acea6-****-47e1-96ae-c0e95377****
    UserIdstring

    用户主账号。

    edas_test****@aliyun****.com
    RegionIdstring

    地域ID。

    cn-beijing

    示例

    正常返回示例

    JSON格式

    {
      "Code": 200,
      "Message": "success",
      "RequestId": "b197-40ab-9155-****",
      "ApplicationInfo": {
        "ChangeOrderId": "cd65b247-****-475b-ad4b-7039040d625c",
        "AppName": "test",
        "Dockerize": true,
        "Owner": "zp",
        "EdasId": "1172****6608****",
        "ClusterType": 5,
        "AppId": "e83acea6-****-47e1-96ae-c0e95377****",
        "UserId": "edas_test****@aliyun****.com",
        "RegionId": "cn-beijing"
      }
    }

    错误码

    访问错误中心查看更多错误码。

    阿里云首页 企业级分布式应用服务 EDAS 相关技术圈