github.com/oam-dev/kubevela@v1.9.11/docs/examples/live-diff/definitions/myingress.yaml (about) 1 apiVersion: core.oam.dev/v1beta1 2 kind: TraitDefinition 3 metadata: 4 name: myingress 5 spec: 6 appliesToWorkloads: 7 - "*" 8 schematic: 9 cue: 10 template: | 11 import ( 12 kubev1 "kube/v1" 13 network "kube/networking.k8s.io/v1beta1" 14 ) 15 16 parameter: { 17 domain: string 18 http: [string]: int 19 } 20 21 outputs: { 22 service: kubev1.#Service 23 ingress: network.#Ingress 24 } 25 26 // trait template can have multiple outputs in one trait 27 outputs: service: { 28 metadata: 29 name: context.name 30 spec: { 31 selector: 32 "app.oam.dev/component": context.name 33 ports: [ 34 for k, v in parameter.http { 35 port: v 36 targetPort: v 37 }, 38 ] 39 } 40 } 41 42 outputs: ingress: { 43 metadata: 44 name: context.name 45 spec: { 46 rules: [{ 47 host: parameter.domain 48 http: { 49 paths: [ 50 for k, v in parameter.http { 51 path: k 52 backend: { 53 serviceName: context.name 54 servicePort: v 55 } 56 }, 57 ] 58 } 59 }] 60 } 61 } 62