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