接入路由和登录认证¶
接入后统一登录和密码验证,效果如下图:

各个 GProduct 模块的 API bear token 验证都走 Istio Gateway。
接入后的路由映射图如下:

接入方法¶
以 kpanda 为例注册 GProductProxy CR。
# GProductProxy CR 示例, 包含路由和登录认证
# spec.proxies: 后写的路由不能是先写的路由子集, 反之可以
# spec.proxies.match.uri.prefix: 如果是后端 api, 建议在 prefix 末尾添加 "/" 表述这段 path 结束(特殊需求可以不用加)
# spec.proxies.match.uri: 支持 prefix 和 exact 模式; Prefix 和 Exact 只能 2 选 1; Prefix 优先级大于 Exact
apiVersion: ghippo.io/v1alpha1
kind: GProductProxy
metadata:
  name: kpanda  # (1)
spec:
  gproduct: kpanda  # (2)
  proxies:
  - labels:
      kind: UIEntry
    match:
      uri:
        prefix: /kpanda # (3)
    rewrite:
      uri: /index.html
    destination:
      host: ghippo-anakin.ghippo-system.svc.cluster.local
      port: 80
    authnCheck: false  # (4)
  - labels:
      kind: UIAssets
    match:
      uri:
        prefix: /ui/kpanda/ # (5)
    destination:
      host: kpanda-ui.kpanda-system.svc.cluster.local
      port: 80
    authnCheck: false
  - match:
      uri:
        prefix: /apis/kpanda.io/v1/a
    destination:
      host: kpanda-service.kpanda-system.svc.cluster.local
      port: 80
    authnCheck: false
  - match:
      uri:
        prefix: /apis/kpanda.io/v1 # (6)
    destination:
      host: kpanda-service.kpanda-system.svc.cluster.local
      port: 80
    authnCheck: true
- cluster 级别 CRD
- 需要用小写指定 GProduct 名字
- 还可支持 exact
- 是否需要 istio-gateway 给该条路由 API 作 AuthN Token 认证, false 为跳过认证
- UIAssets 建议末尾添加 / 表示结束(不然前端可能会出现问题)
- 后写的路由不能是先写的路由的子集, 反之可以