本文介绍EDAS在使用ACK、ACR等产品时的操作约束。

代购和弹性伸缩ECS实例操作约束(适用于ECS集群)

EDAS代购和弹性伸缩创建ECS实例时,不能删除ESS标签。

创建应用操作约束

在创建应用时,可能需要设置安全组、绑定SLB;在应用创建后,可能需要登录ECS实例。本节介绍涉及这些操作时的操作约束。

  • 系统配置约束(适用于ECS集群):应用创建后,可能需要登录ECS实例进行系统配置,请遵循以下约束:
    • 不能删除admin用户。
    • 不能删除/home/admin配置。
    • 不能停止主机上的以下进程:
      • /home/staragent/bin/staragentd
      • com.alibaba.edas.agent.AgentDaemon
    • 不能删除主机上的以下crontab:
      • root用户下的bash /home/admin/edas-agent/bin/monitor.sh任务
      • admin用户下的bash /home/admin/edas-agent/bin/rotator.sh任务
    • 必须保证磁盘根分区有可用空间。
    • 如果使用CentOS操作系统,需要保证yum源配置正确,功能正常。
    • ECS如果使用多网卡,比如安装了Docker,且应用为HSF应用时,需要为应用指定-Dhsf.server.ip参数来确保注册的IP符合预期。更多信息,请参见JVM -D启动配置参数
  • 安全组配置约束(适用于ECS集群):不能删除或修改EDAS创建的安全组规则。
  • SLB配置约束(适用于ECS集群):EDAS会为托管的HTTP监听设置为会话保持模式,不可更改。
  • ACR操作约束(适用于K8s集群):
    • 如果需要使用容器镜像服务(ACR)、跨账号镜像或跨区镜像,需要启动ACR免密插件。
    • 如果需要使用容器镜像服务(ACR),需要将集群所在的VPC添加到对应仓库的访问控制列表ACL中。

K8s集群导入操作约束

  • 集群安全组配置约束:
    • 需要保证集群所有节点在集群的安全组内或者与集群的安全组能互通。互通的具体操作,请参见为什么容器之间网络不通?
    • 不能删除ACK为集群安全组设置的默认规则。
  • 集群节点配置约束:
    • 需要为集群预留可分配的CPU,内存,Pod资源,确保EDAS管控组件能正常运行。
    • 不能删除ACK为节点配置的RAM角色KubernetesWorkerRole-*
  • 集群apiServer SLB配置约束:
    • 不要阻拦来自内部访问地址100.104.0.0/16的访问请求。
    • 不要删除SLB上的ACK添加的内置标签。
    • 不要复用SLB的6443端口。
  • 集群Helm Chart操作约束:
    • 不能删除EDAS安装的ahas-sentinel-pilot、arms-eventer、arms-pilot和arms-prom组件,包括这些Helm Chart安装的所有资源。
    • 不能安装开源的oam-runtime、kubevela、keda或flagger。
    • 不能删除或修改任何在edas-oam-system命名空间下的K8s资源。
  • 集群ClusterRole操作约束:

    不能使用ACK控制台、kubectl或者第三方界面删除或修改edas-default-cluster-role。

  • ClusterRoleBinding操作约束:

    不能使用ACK控制台、kubectl或者第三方界面删除或修改edas-default-cluster-role-binding、edas-oam-cluster-role-binding、keda-hpa-controller-external-metrics。

  • CRD和CR操作约束:
    • 不能直接操作以下CRD和CR资源,列表如下:
      • alertproviders.flagger.app
      • applicationconfigurations.core.oam.dev
      • applications.oam-domain.alibabacloud.com
      • applicationscopes.core.oam.dev
      • autoscalings.edas.aliyun.oam.com
      • basecomponents.oam-domain.alibabacloud.com
      • canaries.flagger.app
      • componentschematics.core.oam.dev
      • crdreleases.clm.cloudnativeapp.io
      • dynamiclabels.extension.oam.dev
      • imagebuilders.edas.aliyun.oam.com
      • logcollectors.edas.aliyun.oam.com
      • meshtraits.edas.aliyun.oam.com
      • metrictemplates.flagger.app
      • mseruletraits.edas.aliyun.oam.com
      • packageversions.oam-domain.alibabacloud.com
      • rollouts.edas.aliyun.oam.com
      • scaledobjects.keda.k8s.io
      • scalingrules.oam-domain.alibabacloud.com
      • serviceregistrytraits.edas.aliyun.oam.com
      • servicetraits.edas.aliyun.oam.com
      • sources.clm.cloudnativeapp.io
      • traits.core.oam.dev
      • triggerauthentications.keda.k8s.io
      • workloadtypes.core.oam.dev
    • 不能修改EDAS创建的aliyunlogconfigs.log.alibabacloud.com(含有以下标签:edas-domain: edas-admin) 资源。

应用路由配置约束(适用于K8s集群)

不能修改EDAS创建的Ingress资源(含有以下标签:edas-domain: edas-adminedas-domain)。

配置管理操作约束(适用于K8s集群)

不能修改EDAS创建的ConfigMap和Secret 资源(含有以下标签:edas-domain: edas-adminedas-domain)。

绑定SLB操作约束(适用于K8s集群)

  • 不能使用ACK控制台、kubectl或者第三方界面删除或修改EDAS创建的Service资源(含有以下标签:edas-domain: edas-admin)。更多信息,请参见Service FAQ
  • 不能使用SLB控制台修改或删除EDAS代购的SLB实例。
  • 不能使用SLB控制台修改或删除EDAS代购的SLB实例的监听配置。

YAML编辑约束(适用于K8s集群)

  • 约束:
    • 不能使用ACK控制台、kubectl或者第三方界面删除或修改EDAS创建的Deployment资源(含有以下标签:edas-domain: edas-admin)。
    • 不能修改Deployment中的apiVersion、kind、name、namespace、uid、resourceVersion、selfLink、generation、creationTimestamp、ownerReferences、managedFields、selector、strategy、revisionHistoryLimit和progressDeadlineSeconds信息,以及status下的所有内容。
    • 不能删除或修改Deployment中EDAS特定的labels和annoataions,包含Pod模版中的labels和annotations,列表如下:
      • edas-domain
      • edas.aliyun.oam.com/rollout-name
      • edas.aliyun.oam.com/rollout-namespace
      • edas.aliyun.oam.com/rollout-revision
      • edas.appid
      • edas.controlplane
      • edas.oam.acname
      • edas.oam.acversion
      • edas.oam.basecomponent
      • deployment.kubernetes.io/revision
      • ARMSApmAppId
      • ARMSApmLicenseKey
      • app
      • edas.component
      • edas.groupid
      • version
      • edas.revision
      • sidecar.istio.io/inject
    • 不能修改Deployment中的hostpath类型的磁盘挂载配置,必须使用EDAS的部署功能进行修改。
    • 不能修改Deployment中名为group-1容器的名称。
    • 不能修改EDAS保留的环境变量,列表如下:
      • POD_IP
      • HOST_IP
      • EDAS_APP_ID
      • EDAS_PROJECT_NAME
      • EDAS_GROUP_ID
      • EDAS_APP_NAME
      • EDAS_AC_NAME
      • EDAS_ECC_ID
      • EDAS_JM_CONTAINER_ID
      • EDAS_PACKAGE_VERSION
      • EDAS_AHAS_APPNAME
      • EDAS_DPATH_OPTS
      • EDAS_GRAY_OPTS
      • ALIBABA_ALIWARE_NAMESPACE
      • ALIBABA_ALIWARE_ENDPOINT_URL
      • ALIBABA_ALIWARE_ENDPOINT_PORT
      • ALIBABA_DEPLOY_VERSION
      • profiler.micro.service.canary.enable
      • profiler.micro.service.metadata.report.enable
      • profiler.micro.service.auth.enable
    • 不能修改名为volume-edas-certs的磁盘挂载配置。
    • 不能修改Deployment中的restartPolicy、schedulerName和runtimeClassName。
  • 可执行操作:
    • 可以修改Deployment的replicas来对应用进行扩缩容。
    • 可以修改Deployment的类型为emptydir的磁盘挂载来实现多容器文件共享。
    • 可以为Deployment追加多个container来实现sidecar的功能,但需要保证group-1容器排在第一的位置。
    • 可以修改Deployment的hostAlias来实现自定义的域名解析。
    • 可以修改Deployment的nodeAffinity、podAffinity和podAntiAffinity来指定调度策略。
    • 可以修改Deployment的toleration来干预调度。
    • 可以为Deployment追加labels和annotations来实现特定的功能。

弹性伸缩HPA操作约束(适用于K8s集群)

  • 不能使用ACK控制台,kubectl或者第三方界面为EDAS应用配置HPA资源,而应当使用EDAS内置的弹性伸缩功能。
  • 不能删除或修改EDAS创建HPA资源(ownerReferences为ScaledObject对象)。
  • 开启弹性伸缩后,不能直接修改Deployment的replicas。