vSphere IaaS control plane 不支持编辑 NCP 配置文件 ncp.ini。您可以在 NCP 中创建自定义资源定义 (CRD),以配置网络参数和负载均衡器参数。

NCPSetting CRD

创建 NCPSetting CRD,并为 NCP 配置设置值。

下表介绍了用户可以配置的网络参数和负载均衡器参数:
参数 描述
log_dropped_traffic 指示是否记录分布式防火墙拒绝规则。

值:TrueFalse

默认设置为 false

log_firewall_traffic 指示是否记录 DFW 规则。
值为:
  • ALL。为所有 DFW 规则启用日志记录。
  • DENY。仅为拒绝规则启用日志记录。
pool_algorithm 此选项用于在负载均衡器池对象中设置负载均衡算法。
值为:
  • Round_Robin
  • Weighted_Round_Robin
  • Least_Connection
  • Weighted_Least_Connection
  • IP-Hash

默认值为 Round-Robin。

service_size 此选项用于设置负载均衡器大小。

值为 SmallMediumLarge

默认值为 Small

l7_persistence 此选项用于设置负载均衡器持久性选项。
值为:
  • cookie.
  • source_ip
l7_persistence_timeout L7 持久性配置文件上的持久性超时值(以秒为单位)。
cookie_name l7_persistence type 设置为 cookie 时,指定 Cookie 名称。
x_forward_for 为输入中的标头启用 X_forward_for。
值为:
  • Insert
  • Replace
snat_rule_logging 此选项用于选择 SNAT 规则的日志记录。
值为:
  • None
  • Basic。为所有命名空间启用日志记录。
  • Extended。为所有命名空间和服务启用日志记录。
vs_access_log 记录输入和路由的虚拟机服务器属性。
值为:
  • VS_access_log_none
  • access_log_enabled。为第 7 层虚拟服务器启用日志记录。
  • log_significant_event_only。HTTP 响应状态码等于或大于 400 的请求将被视为重大事件。

默认值为 VS_access_log_none

ip_reallocation_time 重新分配已释放的 IP 之前的时间(以秒为单位)。

有关 NCP 和 NSX 对象的详细信息,请参见NSX文档。

执行以下步骤以启用此功能:
  1. enable_ncp_setting_crd 设置为 True
  2. 使用以下模板创建 YAML 文件:
    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      name: ncpsettings.vmware.com
    spec:
      group: vmware.com
      versions:
        - name: v1
          served: true
          storage: true
          schema:
            openAPIV3Schema:          
              type: object
                properties:
                  spec:
                    type: object
                    properties:
                      nsx_v3:
                        type: object
                        properties:
                          log_dropped_traffic:
                            description: 'Indicates whether distributed firewall DENY rules are logged.'
                            type: boolean
                          log_firewall_traffic:
                            description: 'Indicate whether DFW rules are logged.'
    ........ All configs that are allow to be configured via CRD........
                           
      scope: Cluster
      names:
        plural: ncpsettings
        singular: ncpsetting
        kind: NCPSetting
        shortNames:
        - ncpstg
    例如:
    apiVersion: vmware.com/v1alpha2
    kind: NCPSetting
    metadata:
        name: ncp-setting-crd
    spec:
        nsx_v3:
            log_dropped_traffic: True
            log_firewall_traffic: ALL
            pool_algorithm: Round_Robin
            l7_persistence: cookie
            x_forwarded_for: Insert
  3. 使用以下命令应用该 YAML 文件:

    kubectl apply -f ncp-setting-crd.yaml.j2

为防止多个 CRD 覆盖相同的配置值,NCP 仅处理名为 ncp-setting-crd 的 CRD 对象。具有不同名称的其他 CRD 将标记为有错误,NCP 不会处理这些 CRD。

覆盖 NCP 配置

CRD 中的配置参数可能具有相应的 NSX 对象。创建 CRD 以覆盖参数时,CRD 不会更改对象中的参数,下列情况除外:
  • l7_persistencel7_persistence_timeoutcookie_name。如果通过 CRD 更改了 l7_persistence,NCP 会使用值 l7_persistencel7_persistence_timeoutcookie_name 创建新的持久性配置文件。

    如果通过 CRD 更改了 l7_persistence_timeoutcookie_name,则会根据新值更新现有配置文件。

  • x_forwarded_for.如果通过 CRD 更改了 x_forwarded_for,NCP 会根据其值创建新的应用程序配置文件。
  • vs_access_log.如果通过 CRD 更改了 vs_access_log,NCP 会相应地更新虚拟服务器的日志记录选项。