云产品权限声明
ECP 6.1.1:支持云产品声明安装的命名空间,新增云产品安装资源需求声明
云产品 charts 包中 _acl_helpers.yaml.tpl
文件用于定义云产品的所需权限、资源及安装的命名空间。
目前需要定义云产品的psp策略、cluster_role策略以及pvc策略
psp_type:云产品需要使用的psp类型,目前支持Unlimit和Limit
cluster_role:云产品需要绑定到的cluster role,目前支持cluster-admin
pvc_enable:云产品是否需要使用pvc,布尔值
namespace:指定云产品安装的命名空间,若无此声明时,则默认使用云产品标识作为云产品安装的命名空间。
示例
data:
psp_type: Unlimited
cluster_role: cluster-admin
pvc_enable: true
namespace: openstack
云产品资源需求
云产品默认会被调度到集群中的云产品节点中,安装或升级云产品前,会比对云产品节点资源是否满足云产品的需要,若不满足会触发云产品节点扩容。因此部署到云产品节点的云产品需要按规范声明资源需求。
注意:
- 云产品 Chart.yaml 中 keywords 下声明了
foundation
、creator:foundation
的云产品不会检查资源需求 - 云产品
_acl_helpers.yaml.tpl
中指定了安装命名空间为namespace: openstack
的云产品不会检查资源需求 - 云产品需要安装到控制节点,同时没有按如上两种方式声明 keywords 或 namespace,需要参考_自行声明资源需求 _章节声明云产品资源需求为 0,避免检查资源。
- 由于云产品节点的资源限制,云产品资源需求需要限制最大不超过 6 C 12 G
自动计算资源需求
在编写云产品 charts 时推荐在 values.yaml 统一声明云产品相关资源的资源需求到resources
key 下,构建云产品时会通过 values.yaml 中所有 resources 字段下的资源声明requests
数值,自动计算出一个资源限制的值。
注意:如果 charts 中声明了资源,但是该资源有控制选项,实际部署过程中不一定部署,仍然可以可以保留该资源的需求声明,因为云产品的资源需求按最多需求资源来计算的
目前推荐有三档资源声明:
requests:
cpu: "200m"
memory: "512Mi"
requests:
cpu: "500m"
memory: "1024Mi"
requests:
cpu: "1000m"
memory: "2048Mi"
若云产品需要使用其它数值的自定义资源声明,建议 limits 的数值设置不超过 requests 的 1.5 倍。
示例
pod:
resources:
jobs:
hook:
requests:
memory: "200Mi"
cpu: "512m"
db_init:
requests:
memory: "1024Mi"
cpu: "500m"
backend_api:
requests:
memory: "1024Mi"
cpu: "500m"
front_dashboard:
requests:
memory: "512Mi"
cpu: "200m"
当云产品在 values.yaml 中按如上示例声明了资源需求后,构建云产品时会自动统计 values.yaml 下 resources
下除 **jobs **外各层级的 **requests **资源声明。构建完成后此云产品对应的资源需求为:
cpu:700m memory:1536Mi
自行声明资源需求
建议云产品优先考虑在 values.yaml 中明确定义每项资源的资源需求,若自动计算的资源需求不能准确反应云产品实际所需的资源需求,或有其它特殊场景的考虑,如云产品需要安装到控制节点的非 openstack 命名空间下,无需检查资源;云产品可在 _acl_helpers.yaml.tpl 文件中自行声明所需的资源,构建完云产品后会优先此值作为云产品的资源需求,单位:max_cpu:m,max_memory: Mi。
示例
data:
psp_type: Unlimited
cluster_role: cluster-admin
pvc_enable: true
namespace: openstack
resource_limit:
max_cpu: 500
max_memory: 1200
当云产品在 _acl_helpers.yaml.tpl 中按如上示例声明了资源需求后,构建完成后此云产品对应的资源需求为:cpu:500m memory:1200Mi