github.com/oam-dev/kubevela@v1.9.11/charts/vela-core/templates/defwithtemplate/env.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/env.cue 3 apiVersion: core.oam.dev/v1beta1 4 kind: TraitDefinition 5 metadata: 6 annotations: 7 definition.oam.dev/description: Add env on K8s pod for your workload which follows the pod spec in path 'spec.template' 8 name: env 9 namespace: {{ include "systemDefinitionNamespace" . }} 10 spec: 11 appliesToWorkloads: 12 - deployments.apps 13 - statefulsets.apps 14 - daemonsets.apps 15 - jobs.batch 16 schematic: 17 cue: 18 template: | 19 #PatchParams: { 20 // +usage=Specify the name of the target container, if not set, use the component name 21 containerName: *"" | string 22 // +usage=Specify if replacing the whole environment settings for the container 23 replace: *false | bool 24 // +usage=Specify the environment variables to merge, if key already existing, override its value 25 env: [string]: string 26 // +usage=Specify which existing environment variables to unset 27 unset: *[] | [...string] 28 } 29 PatchContainer: { 30 _params: #PatchParams 31 name: _params.containerName 32 _delKeys: {for k in _params.unset {(k): ""}} 33 _baseContainers: context.output.spec.template.spec.containers 34 _matchContainers_: [ for _container_ in _baseContainers if _container_.name == name {_container_}] 35 _baseContainer: *_|_ | {...} 36 if len(_matchContainers_) == 0 { 37 err: "container \(name) not found" 38 } 39 if len(_matchContainers_) > 0 { 40 _baseContainer: _matchContainers_[0] 41 _baseEnv: _baseContainer.env 42 if _baseEnv == _|_ { 43 // +patchStrategy=replace 44 env: [ for k, v in _params.env if _delKeys[k] == _|_ { 45 name: k 46 value: v 47 }] 48 } 49 if _baseEnv != _|_ { 50 _baseEnvMap: {for envVar in _baseEnv {(envVar.name): envVar}} 51 // +patchStrategy=replace 52 env: [ for envVar in _baseEnv if _delKeys[envVar.name] == _|_ && !_params.replace { 53 name: envVar.name 54 if _params.env[envVar.name] != _|_ { 55 value: _params.env[envVar.name] 56 } 57 if _params.env[envVar.name] == _|_ { 58 if envVar.value != _|_ { 59 value: envVar.value 60 } 61 if envVar.valueFrom != _|_ { 62 valueFrom: envVar.valueFrom 63 } 64 } 65 }] + [ for k, v in _params.env if _delKeys[k] == _|_ && (_params.replace || _baseEnvMap[k] == _|_) { 66 name: k 67 value: v 68 }] 69 } 70 } 71 } 72 patch: spec: template: spec: { 73 if parameter.containers == _|_ { 74 // +patchKey=name 75 containers: [{ 76 PatchContainer & {_params: { 77 if parameter.containerName == "" { 78 containerName: context.name 79 } 80 if parameter.containerName != "" { 81 containerName: parameter.containerName 82 } 83 replace: parameter.replace 84 env: parameter.env 85 unset: parameter.unset 86 }} 87 }] 88 } 89 if parameter.containers != _|_ { 90 // +patchKey=name 91 containers: [ for c in parameter.containers { 92 if c.containerName == "" { 93 err: "containerName must be set for containers" 94 } 95 if c.containerName != "" { 96 PatchContainer & {_params: c} 97 } 98 }] 99 } 100 } 101 102 parameter: *#PatchParams | close({ 103 // +usage=Specify the environment variables for multiple containers 104 containers: [...#PatchParams] 105 }) 106 107 errs: [ for c in patch.spec.template.spec.containers if c.err != _|_ {c.err}] 108