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