ALIYUN::ASM::ServiceMesh

ALIYUN::ASM::ServiceMesh类型用于创建服务网格实例。

语法

{
  "Type": "ALIYUN::ASM::ServiceMesh",
  "Properties": {
    "EnableAudit": Boolean,
    "OPA": Map,
    "IstioVersion": String,
    "ApiServerPublicEip": Boolean,
    "LocalityLoadBalancing": Boolean,
    "Telemetry": Boolean,
    "OutboundTrafficPolicy": String,
    "AuditProject": String,
    "TraceSampling": Number,
    "Name": String,
    "Proxy": Map,
    "VpcId": String,
    "PilotPublicEip": Boolean,
    "IncludeIPRanges": String,
    "VSwitches": List,
    "Tracing": Boolean,
    "CustomizedZipkin": Boolean,
    "EnableACMG": Boolean,
    "CustomizedPrometheus": Boolean,
    "MSEEnabled": Boolean,
    "WebAssemblyFilterEnabled": Boolean,
    "CRAggregationEnabled": Boolean,
    "CertChain": String,
    "ConfigSourceNacosID": String,
    "ConfigSourceEnabled": Boolean,
    "EnableSDSServer": Boolean,
    "DNSProxyingEnabled": Boolean,
    "OpaEnabled": Boolean,
    "LocalityLBConf": String,
    "GuestCluster": String,
    "KialiEnabled": Boolean,
    "ControlPlaneLogEnabled": Boolean,
    "EnableAmbient": Boolean,
    "ExistingCaKey": String,
    "ApiServerLoadBalancerSpec": String,
    "ExcludeIPRanges": String,
    "FilterGatewayClusterConfig": Boolean,
    "PilotLoadBalancerSpec": String,
    "AutoRenew": Boolean,
    "AccessLogServiceEnabled": Boolean,
    "ExistingRootCaCert": String,
    "MysqlFilterEnabled": Boolean,
    "GatewayAPIEnabled": Boolean,
    "ControlPlaneLogProject": String,
    "Edition": String,
    "UseExistingCA": Boolean,
    "ChargeType": String,
    "ExistingCaType": String,
    "PlaygroundScene": String,
    "AccessLogEnabled": Boolean,
    "AccessLogProject": String,
    "ExistingRootCaKey": String,
    "ExistingCaCert": String,
    "Period": Number,
    "ExcludeInboundPorts": String,
    "ClusterSpec": String,
    "MultiBufferPollDelay": String,
    "AccessLogServicePort": Integer,
    "ExcludeOutboundPorts": String,
    "PrometheusUrl": String,
    "AccessLogFormat": String,
    "DubboFilterEnabled": Boolean,
    "AutoRenewPeriod": Integer,
    "AccessLogFile": String,
    "MultiBufferEnabled": Boolean,
    "EnableCRHistory": Boolean,
    "AccessLogServiceHost": String
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

VpcId

String

专有网络ID。

VSwitches

List

交换机ID。

ApiServerPublicEip

Boolean

是否使用公网地址暴露API Server。

取值:

  • true

  • false(默认值)

AuditProject

String

网格审计对应的日志项目名称。

默认值:mesh-log-{meshId}。

EnableACMG

Boolean

是否启用 ACMG 模式。

CustomizedPrometheus

Boolean

是否自定义 Prometheus。

取值:

  • true:自定义 Prometheus。

  • false:不自定义 Prometheus。

默认值:false

MSEEnabled

Boolean

是否启用 MSE 微服务引擎。

取值:

  • true:启用 MSE 微服务引擎。

  • false:不启用 MSE 微服务引擎。

默认值:false

WebAssemblyFilterEnabled

Boolean

是否启用 WebAssemblyFilter。

取值:

  • true:启用 WebAssemblyFilter。

  • false:不启用 WebAssemblyFilter。

默认值:false

CRAggregationEnabled

Boolean

是否启用数据面集群 Kubernetes API 访问 Istio 资源。

取值:

  • true:启用数据面集群 Kubernetes API 访问 Istio 资源。

  • false:不启用数据面集群 Kubernetes API 访问 Istio 资源。

默认值:false

CertChain

String

从 CaCert 到 RootCert 的证书链,至少包含两个证书。

ConfigSourceNacosID

String

Nacos 注册中心实例 ID。

ConfigSourceEnabled

Boolean

是否启用外部服务注册中心。

取值:

  • true:启用外部服务注册中心。

  • false:不启用外部服务注册中心。

默认值:false

EnableSDSServer

Boolean

是否启用 SDS 服务。

取值:

  • true:启用 SDS 服务。

  • false:不启用 SDS 服务。

默认值:false

DNSProxyingEnabled

Boolean

是否启用 DNS 代理能力。

取值:

  • true:启用 DNS 代理能力。

  • false:不启用 DNS 代理能力。

默认值:false

OpaEnabled

Boolean

是否启用 OPA。

取值:

  • true:启用 OPA。

  • false:不启用 OPA。

默认值:false

LocalityLBConf

String

服务就近访问配置。

GuestCluster

String

创建网格时可以选择一个集群加入网格,若为空时不会添加集群。

该集群需要和网格在同一个 VPC 的同一个 VSwitch 中,且集群域名相同。

KialiEnabled

Boolean

是否启用网格拓扑。

取值:

  • true:启用网格拓扑。

  • false:不启用网格拓扑。

默认值:false

ControlPlaneLogEnabled

Boolean

是否启用控制面日志采集。

取值:

  • true:启用控制面日志采集。

  • false:不启用控制面日志采集。

默认值:false

EnableAmbient

Boolean

是否为服务网格实例启用 Ambient Mesh 模式。

ExistingCaKey

String

CA Key。

该参数一般用于自建 Istio 迁移 ASM 的场景下,对应自建 Istio 集群的 istio-system 命名空间下名称为 istio-ca-secret 的 secret 的 ca-key.pem 文件内容。

ApiServerLoadBalancerSpec

String

APIServer 绑定的 CLB 规格。

取值:简约型 I(slb.s1.small)、标准型 I(slb.s2.small)、标准型 II(slb.s2.medium)、高阶型 I(slb.s3.small)、高阶型 II(slb.s3.medium)、超强型 I(slb.s3.large)。

ExcludeIPRanges

String

排除拦截对外访问的地址范围。

FilterGatewayClusterConfig

Boolean

是否启用 Gateway 配置过滤。

取值:

  • true:启用 Gateway 配置过滤。

  • false:不启用 Gateway 配置过滤。

默认值:false

PilotLoadBalancerSpec

String

服务网格控制面的 Istio Pilot 绑定的 CLB 规格。

取值:简约型 I(slb.s1.small)、标准型 I(slb.s2.small)、标准型 II(slb.s2.medium)、高阶型 I(slb.s3.small) 、高阶型 II(slb.s3.medium)、超强型 I(slb.s3.large)。

AutoRenew

Boolean

CLB 为包年包月类型时,是否自动续费。

取值:

  • true:自动续费。

  • false:不自动续费。

AccessLogServiceEnabled

Boolean

是否启用 Envoy 的 gRPC 日志服务(ALS)。

取值:

  • true:启用 Envoy 的 gRPC 日志服务。

  • false:不启用 Envoy 的 gRPC 日志服务。

默认值:false

ExistingRootCaCert

String

已有的根证书。

MysqlFilterEnabled

Boolean

是否启用 MysqlFilter。

取值:

  • true:启用 MysqlFilter。

  • false:不启用 MysqlFilter。

默认值:false

GatewayAPIEnabled

Boolean

是否启用 Gateway API。

取值:

  • true:启用 Gateway API。

  • false:不启用 Gateway API。

默认值:false

ControlPlaneLogProject

String

控制面日志采集的 SLS Project。

Edition

String

ASM 实例版本。

UseExistingCA

Boolean

使用已有的 CA 证书和私钥。

ChargeType

String

CLB 付费类型。

取值:

  • PayOnDemand:按量付费类型。

  • PrePay:包年包月类型。

ExistingCaType

String

已有的证书类型。

  • 1:Istiod 自签证书。对应 istio-system 命名空间下名称为 istio-ca-secret 的 secret。若使用该类型,还需要提供ExistingCaCert 和ExsitingCaKey两个参数。

  • 2:Istiod 外部证书。详情请参见plugin ca cert。一般对应为 istio-system 命名空间下名称为 cacerts 的 secret。 若使用该类型,还需要提供ExisingRootCaCertExisingRootCaKey两个参数。

PlaygroundScene

String

Playground 场景。

可选值:

  • ewmaLb: ewma 负载均衡场景

AccessLogEnabled

Boolean

是否启用访问日志。

取值:

  • true:启用访问日志。

  • false:不启用访问日志。

默认值:false

AccessLogProject

String

访问日志采集的 SLS Project。

ExistingRootCaKey

String

已有的根证书对应的私钥。

ExistingCaCert

String

CA 证书(Base64 Encode 格式)。

该参数一般用于自建 Istio 迁移 ASM 的场景下,对应自建 Istio 集群的 istio-system 命名空间下名称为 istio-ca-secret 的 secret 的 ca-cert.pem 文件内容。

Period

Number

表示购买包年包月类型的 CLB 时,购买的月份。

ChargeTypePrePay时生效。如果为 1 年,则输入 12。

ExcludeInboundPorts

String

以半角英文逗号(,)分隔的入站端口列表。

ClusterSpec

String

服务网格实例规格。

取值:

  • standard:标准版。

  • enterprise:企业版。

  • ultimate:旗舰版。

MultiBufferPollDelay

String

MultiBuffer 开启状态同步时间。

默认30s

AccessLogServicePort

Integer

启用 Envoy 的 gRPC 日志服务(ALS)的端口。

ExcludeOutboundPorts

String

以半角英文逗号(,)分隔的出站端口列表。

PrometheusUrl

String

自定义 Prometheus 服务地址。

AccessLogFormat

String

自定义访问日志的格式。

本项字符串为 JSON 格式,且 JSON 字符串中必须至少包含下述的键值:authority_for、bytes_received、bytes_sent、downstream_local_address、downstream_remote_address、duration、istio_policy_status、method、path、protocol、requested_server_name、response_code、response_flags、route_name、start_time、trace_id、upstream_cluster、upstream_host、upstream_local_address、upstream_service_time、upstream_transport_failure_reason、user_agent、x_forwarded_for。

示例:

{"authority_for":"%REQ(:AUTHORITY)%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","downstream_local_address":"%DOWNSTREAM_LOCAL_ADDRESS%","downstream_remote_address":"%DOWNSTREAM_REMOTE_ADDRESS%","duration":"%DURATION%","istio_policy_status":"%DYNAMIC_METADATA(istio.mixer:status)%","method":"%REQ(:METHOD)%","path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","protocol":"%PROTOCOL%","request_id":"%REQ(X-REQUEST-ID)%","requested_server_name":"%REQUESTED_SERVER_NAME%","response_code":"%RESPONSE_CODE%","response_flags":"%RESPONSE_FLAGS%","route_name":"%ROUTE_NAME%","start_time":"%START_TIME%","trace_id":"%REQ(X-B3-TRACEID)%","upstream_cluster":"%UPSTREAM_CLUSTER%","upstream_host":"%UPSTREAM_HOST%","upstream_local_address":"%UPSTREAM_LOCAL_ADDRESS%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_transport_failure_reason":"%UPSTREAM_TRANSPORT_FAILURE_REASON%","user_agent":"%REQ(USER-AGENT)%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%"}

DubboFilterEnabled

Boolean

是否启用 DubboFilter。

取值:

  • true:启用 DubboFilter。

  • false:不启用 DubboFilter。

默认值:false

AutoRenewPeriod

Integer

表示购买包年包月类型的 CLB 时,自动续费的时间。

ChargeTypePrePay时生效。如果为购买时间小于 1 年,此参数表示自动续费多少个月;如果购买时长超过 1 年,此参数表示自动续费多少年。

AccessLogFile

String

开启和关闭访问日志。

取值:

  • “”:关闭访问日志。

  • /dev/stdout:开启访问日志。

MultiBufferEnabled

Boolean

是否启用基于 MultiBuffer 的 TLS 性能优化。

取值:

  • true:开启。

  • false:不开启。

默认值:true

EnableCRHistory

Boolean

是否启用 ASM 的 Istio 资源历史版本管理功能。

取值:

  • true:启用 ASM 的 Istio 资源历史版本管理功能。

  • false:不启用 ASM 的 Istio 资源历史版本管理功能。

默认值:false

AccessLogServiceHost

String

启用 Envoy 的 gRPC 日志服务(ALS)的地址。

CustomizedZipkin

Boolean

是否启用自建Zipkin。

取值:

  • true

  • false

EnableAudit

Boolean

是否启用网格审计 。

取值:

  • true

  • false(默认值)

说明

您需要开通阿里云日志服务。

IncludeIPRanges

String

拦截对外访问的地址范围。

IstioVersion

String

Istio版本号。

LocalityLoadBalancing

Boolean

是否启用服务就近访问。

取值:

  • true

  • false(默认值)

Name

String

服务网格名称。

OPA

Map

开放策略代理。

更多信息,请参见OPA属性

OutboundTrafficPolicy

String

对外部服务的访问策略。

取值:

  • ALLOW_ANY

  • REGISTRY_ONLY

PilotPublicEip

Boolean

是否使用公网地址暴露Istio Pilot。

取值:

  • true

  • false(默认值)

Proxy

Map

代理。

更多信息,请参见Proxy属性

Telemetry

Boolean

开启采集Prometheus监控指标。

建议您使用阿里云Prometheus监控。

TraceSampling

Number

链路追踪采样百分比。

Tracing

Boolean

是否启用链路追踪。

取值:

  • true

  • false(默认值)

说明

您需要开通阿里云链路追踪服务。

OPA语法

"OPA": {
  "OPARequestCPU": String,
  "OpenAgentPolicy": Boolean,
  "OPALogLevel": String,
  "OPALimitCPU": String,
  "OPALimitMemory": String,
  "OPARequestMemory": String
}

OPA属性

属性名称

类型

必须

允许更新

描述

约束

OPALimitCPU

String

OPA代理容器的CPU资源限制。

OPALimitMemory

String

OPA代理容器的内存资源限制。

OPALogLevel

String

OPA代理容器日志级别。

OPARequestCPU

String

OPA代理容器的CPU资源请求。

OPARequestMemory

String

OPA代理容器的内存资源请求。

OpenAgentPolicy

Boolean

是否集成开放策略代理(OPA)插件。

取值:

  • true

  • false(默认值)

Proxy语法

"Proxy": {
  "ClusterDomain": String,
  "ProxyLimitCPU": String,
  "ProxyLimitMemory": String,
  "ProxyRequestCPU": String,
  "ProxyRequestMemory": String
}

Proxy属性

属性名称

类型

必须

允许更新

描述

约束

ClusterDomain

String

集群域名。

ProxyLimitCPU

String

CPU资源限制。

ProxyLimitMemory

String

内存资源限制。

ProxyRequestCPU

String

CPU所需资源。

ProxyRequestMemory

String

内存所需资源。

返回值

Fn::GetAtt

ServiceMeshId:服务网格ID。

示例

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    Description: Create an Availability Zone for an instance to ensure that the Availability Zone supports the creation of Memcache resource specifications.
    AssociationProperty: ALIYUN::ECS::Instance::ZoneId
    Label: Zone ID
  VPC:
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
    Type: String
    Description: Please search the ID starts with (vpc-xxx)from console-Virtual Private Cloud
    Label: Existing VPC Instance ID
  VSwitch:
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    Type: String
    Description: Please search the business VSwitch ID starts with(vsw-xxx)from console-Virtual Private Cloud-VSwitches
    Label: Existing VSwitch ID
    AssociationPropertyMetadata:
      VpcId: VPC
      ZoneId: ZoneId
Resources:
  ServiceMesh:
    Type: ALIYUN::ASM::ServiceMesh
    Properties:
      VpcId:
        Ref: VPC
      VSwitches:
        - Ref: VSwitch
Outputs:
  ServiceMeshId:
    Description: The ID of the ASM instance.
    Value:
      Fn::GetAtt:
        - ServiceMesh
        - ServiceMeshId

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "ZoneId": {
      "Type": "String",
      "Description": "Create an Availability Zone for an instance to ensure that the Availability Zone supports the creation of Memcache resource specifications.",
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "Label": "Zone ID"
    },
    "VPC": {
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
      "Type": "String",
      "Description": "Please search the ID starts with (vpc-xxx)from console-Virtual Private Cloud",
      "Label": "Existing VPC Instance ID"
    },
    "VSwitch": {
      "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
      "Type": "String",
      "Description": "Please search the business VSwitch ID starts with(vsw-xxx)from console-Virtual Private Cloud-VSwitches",
      "Label": "Existing VSwitch ID",
      "AssociationPropertyMetadata": {
        "VpcId": "VPC",
        "ZoneId": "ZoneId"
      }
    }
  },
  "Resources": {
    "ServiceMesh": {
      "Type": "ALIYUN::ASM::ServiceMesh",
      "Properties": {
        "VpcId": {
          "Ref": "VPC"
        },
        "VSwitches": [
          {
            "Ref": "VSwitch"
          }
        ]
      }
    }
  },
  "Outputs": {
    "ServiceMeshId": {
      "Description": "The ID of the ASM instance.",
      "Value": {
        "Fn::GetAtt": [
          "ServiceMesh",
          "ServiceMeshId"
        ]
      }
    }
  }
}