Skip to content

Affinity

Pod constraints for this package are implemented following the kubernetes affinity documentation. Gatekeeper pods can be constrained using nodeSelector, nodeAffinity, or the pod Affinity/Anti-affinity feature.

These values are set per component under upstream. The components that accept them are controllerManager, audit, crds, postInstall, postUpgrade, and preUninstall. The examples below use controllerManager.

nodeSelector

in the values.yaml add nodeSelector like:

upstream:
  controllerManager:
    nodeSelector:
      <key>: <value>

nodeAffinity

in the values.yaml, add nodeAffinity like:

upstream:
  controllerManager:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/e2e-az-name
              operator: In
              values:
              - e2e-az1
              - e2e-az2
        preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 1
          preference:
            matchExpressions:
            - key: another-node-label-key
              operator: In
              values:
              - another-node-label-value

podAffinity

In values.yaml add pod affinity/anti-affinity like:

upstream:
  controllerManager:
    affinity:
      podAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
            - key: security
              operator: In
              values:
              - S1
          topologyKey: topology.kubernetes.io/zone
      podAntiAffinity:
        preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 100
          podAffinityTerm:
            labelSelector:
              matchExpressions:
              - key: security
                operator: In
                values:
                - S2
            topologyKey: topology.kubernetes.io/zone