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