github.com/oam-dev/kubevela@v1.9.11/charts/vela-core/templates/defwithtemplate/affinity.yaml (about)

     1  # Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
     2  # Definition source cue file: vela-templates/definitions/internal/affinity.cue
     3  apiVersion: core.oam.dev/v1beta1
     4  kind: TraitDefinition
     5  metadata:
     6    annotations:
     7      definition.oam.dev/description: Affinity specifies affinity and toleration K8s pod for your workload which follows the pod spec in path 'spec.template'.
     8    labels:
     9      custom.definition.oam.dev/ui-hidden: "true"
    10    name: affinity
    11    namespace: {{ include "systemDefinitionNamespace" . }}
    12  spec:
    13    appliesToWorkloads:
    14      - deployments.apps
    15      - statefulsets.apps
    16      - daemonsets.apps
    17      - jobs.batch
    18    podDisruptive: true
    19    schematic:
    20      cue:
    21        template: |
    22          patch: spec: template: spec: {
    23          	if parameter.podAffinity != _|_ {
    24          		affinity: podAffinity: {
    25          			if parameter.podAffinity.required != _|_ {
    26          				requiredDuringSchedulingIgnoredDuringExecution: [
    27          					for k in parameter.podAffinity.required {
    28          						if k.labelSelector != _|_ {
    29          							labelSelector: k.labelSelector
    30          						}
    31          						if k.namespace != _|_ {
    32          							namespace: k.namespace
    33          						}
    34          						topologyKey: k.topologyKey
    35          						if k.namespaceSelector != _|_ {
    36          							namespaceSelector: k.namespaceSelector
    37          						}
    38          					}]
    39          			}
    40          			if parameter.podAffinity.preferred != _|_ {
    41          				preferredDuringSchedulingIgnoredDuringExecution: [
    42          					for k in parameter.podAffinity.preferred {
    43          						weight:          k.weight
    44          						podAffinityTerm: k.podAffinityTerm
    45          					}]
    46          			}
    47          		}
    48          	}
    49          	if parameter.podAntiAffinity != _|_ {
    50          		affinity: podAntiAffinity: {
    51          			if parameter.podAntiAffinity.required != _|_ {
    52          				requiredDuringSchedulingIgnoredDuringExecution: [
    53          					for k in parameter.podAntiAffinity.required {
    54          						if k.labelSelector != _|_ {
    55          							labelSelector: k.labelSelector
    56          						}
    57          						if k.namespace != _|_ {
    58          							namespace: k.namespace
    59          						}
    60          						topologyKey: k.topologyKey
    61          						if k.namespaceSelector != _|_ {
    62          							namespaceSelector: k.namespaceSelector
    63          						}
    64          					}]
    65          			}
    66          			if parameter.podAntiAffinity.preferred != _|_ {
    67          				preferredDuringSchedulingIgnoredDuringExecution: [
    68          					for k in parameter.podAntiAffinity.preferred {
    69          						weight:          k.weight
    70          						podAffinityTerm: k.podAffinityTerm
    71          					}]
    72          			}
    73          		}
    74          	}
    75          	if parameter.nodeAffinity != _|_ {
    76          		affinity: nodeAffinity: {
    77          			if parameter.nodeAffinity.required != _|_ {
    78          				requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: [
    79          					for k in parameter.nodeAffinity.required.nodeSelectorTerms {
    80          						if k.matchExpressions != _|_ {
    81          							matchExpressions: k.matchExpressions
    82          						}
    83          						if k.matchFields != _|_ {
    84          							matchFields: k.matchFields
    85          						}
    86          					}]
    87          			}
    88          			if parameter.nodeAffinity.preferred != _|_ {
    89          				preferredDuringSchedulingIgnoredDuringExecution: [
    90          					for k in parameter.nodeAffinity.preferred {
    91          						weight:     k.weight
    92          						preference: k.preference
    93          					}]
    94          			}
    95          		}
    96          	}
    97          	if parameter.tolerations != _|_ {
    98          		tolerations: [
    99          			for k in parameter.tolerations {
   100          				if k.key != _|_ {
   101          					key: k.key
   102          				}
   103          				if k.effect != _|_ {
   104          					effect: k.effect
   105          				}
   106          				if k.value != _|_ {
   107          					value: k.value
   108          				}
   109          				operator: k.operator
   110          				if k.tolerationSeconds != _|_ {
   111          					tolerationSeconds: k.tolerationSeconds
   112          				}
   113          			}]
   114          	}
   115          }
   116  
   117          #labelSelector: {
   118          	matchLabels?: [string]: string
   119          	matchExpressions?: [...{
   120          		key:      string
   121          		operator: *"In" | "NotIn" | "Exists" | "DoesNotExist"
   122          		values?: [...string]
   123          	}]
   124          }
   125  
   126          #podAffinityTerm: {
   127          	labelSelector?: #labelSelector
   128          	namespaces?: [...string]
   129          	topologyKey:        string
   130          	namespaceSelector?: #labelSelector
   131          }
   132  
   133          #nodeSelecor: {
   134          	key:      string
   135          	operator: *"In" | "NotIn" | "Exists" | "DoesNotExist" | "Gt" | "Lt"
   136          	values?: [...string]
   137          }
   138  
   139          #nodeSelectorTerm: {
   140          	matchExpressions?: [...#nodeSelecor]
   141          	matchFields?: [...#nodeSelecor]
   142          }
   143  
   144          parameter: {
   145          	// +usage=Specify the pod affinity scheduling rules
   146          	podAffinity?: {
   147          		// +usage=Specify the required during scheduling ignored during execution
   148          		required?: [...#podAffinityTerm]
   149          		// +usage=Specify the preferred during scheduling ignored during execution
   150          		preferred?: [...{
   151          			// +usage=Specify weight associated with matching the corresponding podAffinityTerm
   152          			weight: int & >=1 & <=100
   153          			// +usage=Specify a set of pods
   154          			podAffinityTerm: #podAffinityTerm
   155          		}]
   156          	}
   157          	// +usage=Specify the pod anti-affinity scheduling rules
   158          	podAntiAffinity?: {
   159          		// +usage=Specify the required during scheduling ignored during execution
   160          		required?: [...#podAffinityTerm]
   161          		// +usage=Specify the preferred during scheduling ignored during execution
   162          		preferred?: [...{
   163          			// +usage=Specify weight associated with matching the corresponding podAffinityTerm
   164          			weight: int & >=1 & <=100
   165          			// +usage=Specify a set of pods
   166          			podAffinityTerm: #podAffinityTerm
   167          		}]
   168          	}
   169          	// +usage=Specify the node affinity scheduling rules for the pod
   170          	nodeAffinity?: {
   171          		// +usage=Specify the required during scheduling ignored during execution
   172          		required?: {
   173          			// +usage=Specify a list of node selector
   174          			nodeSelectorTerms: [...#nodeSelectorTerm]
   175          		}
   176          		// +usage=Specify the preferred during scheduling ignored during execution
   177          		preferred?: [...{
   178          			// +usage=Specify weight associated with matching the corresponding nodeSelector
   179          			weight: int & >=1 & <=100
   180          			// +usage=Specify a node selector
   181          			preference: #nodeSelectorTerm
   182          		}]
   183          	}
   184          	// +usage=Specify tolerant taint
   185          	tolerations?: [...{
   186          		key?:     string
   187          		operator: *"Equal" | "Exists"
   188          		value?:   string
   189          		effect?:  "NoSchedule" | "PreferNoSchedule" | "NoExecute"
   190          		// +usage=Specify the period of time the toleration
   191          		tolerationSeconds?: int
   192          	}]
   193          }
   194