自定义Waypoint资源用量和HPA

ASM通过Gateway API部署Ambient模式的Waypoint组件。本文介绍如何自定义Waypoint的配置。

前提条件

集群中已安装1.2.1及以上版本的Gateway API组件。

操作步骤

ASM支持您通过自定义Configmap来指定WaypointDeploymentHPA,请确保ConfigMapGateway资源在同一命名空间。

创建Waypoint

本步骤将创建一个常规配置的Waypoint。

  1. 创建gateway.yaml。

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
      name: waypoint
      namespace: default
    spec:
      gatewayClassName: istio-waypoint
      listeners:
      - allowedRoutes:
          namespaces:
            from: Same
        name: mesh
        port: 15008
        protocol: HBONE
  2. 部署Waypoint。

    kubectl apply -f gateway.yaml

创建ConfigMap

  1. 创建gw-options.yaml。您可以根据实际需求对配置内容进行调整。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: gw-options
    data:
      horizontalPodAutoscaler: |
        spec:
          minReplicas: 2
          maxReplicas: 2
      deployment: |
        spec:
          # 配置了HPA时,不可以同时配置replicas
          # replicas: 4
          template:
            spec:
              containers:
              - name: istio-proxy
                resources:
                  requests:
                    cpu: 1234m

    部分配置项说明如下:

    配置项

    说明

    data.horizontalPodAutoscaler

    用于定义HPA的配置信息。本示例为配置HPA的最大和最小Pod 副本数均为2。

    data.deployment

    配置Pod级别的模板。本示例配置容器名称为istio-proxy,CPU需求量为1234m。

  2. 部署ConfigMap。

    kubectl apply -f gw-options.yaml

更新Waypoint

  1. 修改Gateway资源配置,引用ConfigMap资源。

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
      name: waypoint
      namespace: default
    spec:
      infrastructure:
        parametersRef:
          group: ""
          kind: ConfigMap
          name: gw-options
      gatewayClassName: istio-waypoint
      listeners:
      - allowedRoutes:
          namespaces:
            from: Same
        name: mesh
        port: 15008
        protocol: HBONE
  2. 更新Waypoint。

    kubectl apply -f gateway.yaml

    更新完成后,ASM将会在实际的资源生成后,使用ConfigMap中的配置对指定资源执行Strategic Merge Patch,然后再创建或更新对应资源。