github.com/oam-dev/kubevela@v1.9.11/pkg/appfile/dryrun/testdata/td-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          parameter: {
    13          	domain: string
    14          	http: [string]: int
    15          }
    16  
    17          outputs: {
    18            service: {
    19              apiVersion: "v1"
    20              kind: "Service"
    21            }
    22            ingress: {
    23              apiVersion: "networking.k8s.io/v1beta1"
    24              kind: "Ingress"
    25            }
    26          }
    27  
    28          // trait template can have multiple outputs in one trait
    29          outputs: service: {
    30          	metadata:
    31          		name: context.name
    32          	spec: {
    33          		selector:
    34          			"app.oam.dev/component": context.name
    35          		ports: [
    36          			for k, v in parameter.http {
    37          				port:       v
    38          				targetPort: v
    39          			},
    40          		]
    41          	}
    42          }
    43  
    44          outputs: ingress: {
    45          	metadata:
    46          		name: context.name
    47          	spec: {
    48          		rules: [{
    49          			host: parameter.domain
    50          			http: {
    51          				paths: [
    52          					for k, v in parameter.http {
    53          						path: k
    54          						backend: {
    55          							serviceName: context.name
    56          							servicePort: v
    57          						}
    58          					},
    59          				]
    60          			}
    61          		}]
    62          	}
    63          }