Loading
close

云产品访问策略

time 更新时间:2022-11-14 11:13:02

云产品部署到集群后,首先需要通过 service 和 ingress 定义云产品的路由,再通过 ECP 规范定义云产品的菜单数据和访问权限,在登录ECP后,符合权限的账户就可以通过上导访问到对应的云产品了。

云产品Service

说明

Service 是 k8s 中的抽象概念, 定义了一组 Pods 的逻辑集合和一个用于访问它们的策略。云产品 Chart 中可能存在多个Service来暴露不同的服务,可采用service-[功能].yaml 的命名方式来进行区分。

示例

以下示例中,mycloud-product 通过 service-product-api.yaml 定义了一个 my-cloud-product-api service 用于暴露后端 api 服务。

apiVersion: v1
kind: Service
metadata:
  name: my-cloud-product-api
spec:
  ports:
    - name: http-api
      port: 80
      protocol: TCP
      targetPort: {{ .Values.conf.container_port }}
  selector:
    app: mycloudproduct
  type: ClusterIP

云产品Ingress

说明

Ingress 是 k8s 定义 service 向外暴露的路由,可采用 ingress-[功能].yaml 的命名方式来进行区分。为了隔离各个云产品的路由,云产品的Ingress需要有一个统一的云产品路径前缀,如示例中的 path: /my-cloud-product,访问此云产品的 api 时,都会携带 /my-cloud-product 的路由。

注意

只需要给 dashboard 和提供界面服务的 pod 添加 ingress.kubernetes.io/custom-http-errors: 404,500,xxx 的注释。API 服务不需要添加 custom http errors,否则异常信息会被 nginx 拦截,导致无法快速定位问题。

示例

以下示例中,mycloud-product 定义了两个ingress用于配置前端和后端的路由。通过 ingress-product-api.yaml 定义了一个 my-cloud-product-api ingress 用于配置后端 api 服务的路由。

ingress-product-dashboard.sh

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-cloud-product-dashboard
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/force-ssl-redirect: "true"
    ingress.kubernetes.io/custom-http-errors: 404,500
spec:
  rules:
  - http:
      paths:
      - path: /my-cloud-product/dashboard/
        backend:
          serviceName: my-cloud-product-dashboard
          servicePort: http-dashboard

ingress-product-api.sh

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-cloud-product-api
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
  rules:
  - http:
      paths:
      - path: /my-cloud-product/api/
        backend:
          serviceName: my-cloud-product-api
          servicePort: http-api

云产品自定义导航分类

说明

云产品的导航需要属于一个导航的分类,如果导航需要加入到一个已有的分类中,可跳过此章节,直接在云产品导航文件中声明已有的分类名。如果新增自定义导航的分类,则需要在 templates/_category.yaml 进行定义,涉及如下参数:

  • 分类名(e.g.:mycloud-product):云产品自定义分类名

  • id(e.g.:mycloud-product):需要和名称一致。

  • dynamicNumber:动态排序保留字段,可以为任意数字。

    示例

    如下 _category.yaml文件示例中,定义了如下两个导航:

  • mycloud-product-a

    • id: mycloud-product-a
    • icon: mycloud-product-a
    • 中文名:云产品-a
    • 英文名:mycloud-product-a
  • mycloud-product-b

    • id: mycloud-product-b
    • icon: mycloud-product-b
    • 中文名:云产品-b
    • 英文名:mycloud-product-b
      mycloud-product-a:
        id: mycloud-product-a
        icon: mycloud-product-a
        name:
          en: mycloud-product-a
          zh-cn: 云产品-a
        navigations: []
        dynamicNumber: 1
      
      mycloud-product-b:
        id: mycloud-product-b
        icon: mycloud-product-b
        name:
          en: mycloud-product-b
          zh-cn: 云产品-b
        navigations: []
        dynamicNumber: 1

      云产品导航

      说明

      云产品 chart 包中,templates/_navigation.yaml用于定义,涉及参数如下:
  • catagory:默认导航分类

  • name:云产品中英文翻译

  • nav:左导航

    • name:导航中英文翻译
    • icon:导航 icon
    • order:导航顺序
    • url:导航 URL
    • baseURI:导航基础路由
    • available:导航可见性
    • wizard:是否有向导数据
    • catagory:导航分类(可选,若无此字段,则会添加到默认导航分类中)
  • sub_nav:左导航二级菜单(可选,属性参见 nav)。

  • top_nav:上导航数据。(可选,属性参见 nav,如果不设置,则将把 nav 的所有数据显示在上导航中,如果显示的过程中 nav 中有 sub_nav 的话,则会把 sub_nav 的第一个 url 取出用于显示)

    示例

    如下 _navigation.yaml 的示例中,此云产品向 security 身份与访问管理 分类下注册了两个导航:

  • 角色

  • 策略

network 网络 分类下注册了一个导航:

  • 应用身份管理
    category: security
    name:
      en: Identity & Access Management
      zh-cn: 身份与访问管理
    nav:
      role:
        proId: role
        name:
          zh-cn: 角色
          en: Role
        url: /iam/roles
        icon: role
        classify: identity
        baseURI: /iam/
        order: 4
        available: true
        wizard: false
      policy:
        proId: policy
        name:
          zh-cn: 策略
          en: Policy
        url: /iam/policies
        icon: policy
        classify: identity
        baseURI: /iam/
        order: 5
        available: true
        wizard: false
      applications:
        proId: applications
        category: network
        name:
          zh-cn: 应用身份管理
          en: Application Identity Management
        url: /iam/applications
        icon: application
        classify: identity
        baseURI: /iam/
        order: 6
        available: true
        wizard: false
    ./images/access_policy_nav.png

导航访问策略

说明

云产品导航的访问策略在templates/_navigation_policy.yaml文件中进行定义,开发者可对不同角色的用户赋予不同的访问权限,例如某些高级管理页面设置仅云管理员可访问。设置访问策略的粒度包括top_navnavsub_nav字段下的所有url。如不填写,则默认所有角色均无权限访问此url,对所有类型账户都不可见。

当前仅支持使用四种默认角色:

  • cloud_admin:云管理员,可管理云环境的所有资源。
  • domian_admin:部门管理员,可管理所属部门下的所有资源。
  • admin:项目管理员,可管理所属项目下的所有资源。
  • member:普通用户,管理自己拥有的所有资源。

    示例

    /mycloud-product/mycloud-product-1:
      - cloud_admin
      - domain_admin
      - admin
      - member
    /mycloud-product/mycloud-product-2:
      - member
    /mycloud-product/mycloud-product-sub-feature:
      - member

    云产品使用向导

说明

开发者可以在templates/_wizard.yaml文件中 nav 属性下对 cloud_admin,domian_admin,admin,member 定义使用向导,当用户安装或升级云产品后首次访问云产品时,将在界面展示账户对应权限的云产品使用向导,使用户能够掌握云产品新特性,快速上手。涉及参数如下:

  • order:新特性顺序
  • proId:云产品的上导航id
  • title:新特性中英文翻译
  • wizard:向导内容列表
    • content:当前向导页标题中英文翻译
    • pics:当前向导页中英文图片

      示例

      nav:
        cloud_admin:
          mycloud_product_overview:
            order: 1
            proId: mycloud_product_overview
            title:
              en: mycloud-product
              zh-cn: 我的云产品
            wizard:
              - content:
                  en: English description
                  zh-cn: 中文功能描述
                pics:
                  en: wizard/wizard_en.png
                  zh-cn: wizard/wizard_zh_cn.png
              - content:
                  en: 英文功能描述
                  zh-cn: 中文功能描述。
                pics:
                  en: wizard/admin_overview_en.png
                  zh-cn: wizard/admin_overview_zh_cn.png
      
          mycloud_product_apps:
            order: 2
            proId: mycloud_product_apps
            title:
              en: mycloud_product_apps
              zh-cn: 云主机应用
            wizard:
              - content:
                  en: 英文功能描述
                  zh-cn: 中文功能描述。
                pics:
                  en: wizard/admin_instance_1_en.png
                  zh-cn: wizard/admin_instance_1_zh_cn.png
              - content:
                  en: 英文功能描述
                  zh-cn: 中文功能描述。
                pics:
                  en: wizard/admin_instance_2_en.png
                  zh-cn: wizard/admin_instance_2_zh_cn.png
      展示效果:
      ./images/access_policy_wiz.png
此篇文章对你是否有帮助?
没帮助
locked-file

您暂无权限访问该产品