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