github.com/oam-dev/kubevela@v1.9.11/docs/examples/workflow/Li-Auto-Inc/common-definitions.yaml (about)

     1  apiVersion: core.oam.dev/v1beta1
     2  kind: ComponentDefinition
     3  metadata:
     4    name: base-service
     5  spec:
     6    workload:
     7      definition:
     8        apiVersion: apps/v1
     9        kind: Deployment
    10    schematic:
    11      kube:
    12        template:
    13          apiVersion: apps/v1
    14          kind: Deployment
    15          metadata:
    16            labels:
    17              appId: BASE-SERVICE
    18              appName: base-service
    19              version: 0.0.1
    20            name: base-service
    21          spec:
    22            replicas: 2
    23            revisionHistoryLimit: 5
    24            selector:
    25              matchLabels:
    26                app: base-service
    27            template:
    28              metadata:
    29                labels:
    30                  antiAffinity: none
    31                  app: base-service
    32                  appId: BASE-SERVICE
    33                  version: 0.0.1
    34              spec:
    35                affinity:
    36                  podAntiAffinity:
    37                    preferredDuringSchedulingIgnoredDuringExecution:
    38                      - podAffinityTerm:
    39                          labelSelector:
    40                            matchExpressions:
    41                              - key: app
    42                                operator: In
    43                                values:
    44                                  - base-service
    45                              - key: antiAffinity
    46                                operator: In
    47                                values:
    48                                  - none
    49                          topologyKey: kubernetes.io/hostname
    50                        weight: 100
    51                containers:
    52                  - env:
    53                      - name: NODE_IP
    54                        valueFrom:
    55                          fieldRef:
    56                            fieldPath: status.hostIP
    57                      - name: POD_IP
    58                        valueFrom:
    59                          fieldRef:
    60                            fieldPath: status.podIP
    61                      - name: POD_NAME
    62                        valueFrom:
    63                          fieldRef:
    64                            fieldPath: metadata.name
    65                      - name: POD_NAMESPACE
    66                        valueFrom:
    67                          fieldRef:
    68                            fieldPath: metadata.namespace
    69                      - name: APP_NAME
    70                        value: base-service
    71                      - name: LOG_BASE
    72                        value: /data/log
    73                      - name: RUNTIME_CLUSTER
    74                        value: default
    75                    image: base-service
    76                    imagePullPolicy: Always
    77                    name: base-service
    78                    ports:
    79                      - containerPort: 11223
    80                        protocol: TCP
    81                      - containerPort: 11224
    82                        protocol: TCP
    83                    volumeMounts:
    84                      - mountPath: /tmp/data/log/base-service
    85                        name: log-volume
    86                      - mountPath: /data
    87                        name: sidecar-sre
    88                      - mountPath: /app/skywalking
    89                        name: skywalking
    90                initContainers:
    91                  - args:
    92                      - 'echo "do something" '
    93                    command:
    94                      - /bin/sh
    95                      - -c
    96                    env:
    97                      - name: NODE_IP
    98                        valueFrom:
    99                          fieldRef:
   100                            fieldPath: status.hostIP
   101                      - name: POD_IP
   102                        valueFrom:
   103                          fieldRef:
   104                            fieldPath: status.podIP
   105                      - name: APP_NAME
   106                        value: base-service
   107                    image: busybox
   108                    imagePullPolicy: Always
   109                    name: sidecar-sre
   110                    resources:
   111                      limits:
   112                        cpu: 100m
   113                        memory: 100Mi
   114                    volumeMounts:
   115                      - mountPath: /tmp/data/log/base-service
   116                        name: log-volume
   117                      - mountPath: /scratch
   118                        name: sidecar-sre
   119                terminationGracePeriodSeconds: 120
   120                volumes:
   121                  - hostPath:
   122                      path: /logs/dev/base-service
   123                      type: DirectoryOrCreate
   124                    name: log-volume
   125                  - emptyDir: {}
   126                    name: sidecar-sre
   127                  - emptyDir: {}
   128                    name: skywalking
   129        parameters:
   130          - name: image
   131            required: true
   132            type: string
   133            fieldPaths:
   134              - "spec.template.spec.containers[0].image"
   135          - name: cluster
   136            required: true
   137            type: string
   138            fieldPaths:
   139              - "spec.template.spec.containers[0].env[6].value"
   140              - "spec.template.metadata.labels.cluster"
   141  ---
   142  apiVersion: core.oam.dev/v1beta1
   143  kind: ComponentDefinition
   144  metadata:
   145    name: proxy-service
   146  spec:
   147    workload:
   148      definition:
   149        apiVersion: argoproj.io/v1alpha1
   150        kind: Rollout
   151    schematic:
   152      kube:
   153        template:
   154          apiVersion: argoproj.io/v1alpha1
   155          kind: Rollout
   156          metadata:
   157            labels:
   158              appId: PROXY-SERVICE
   159              appName: proxy-service
   160              version: 0.0.0
   161            name: proxy-service
   162          spec:
   163            replicas: 1
   164            revisionHistoryLimit: 1
   165            selector:
   166              matchLabels:
   167                app: proxy-service
   168            strategy:
   169              canary:
   170                steps:
   171                  - setWeight: 50
   172                  - pause: {}
   173            template:
   174              metadata:
   175                labels:
   176                  app: proxy-service
   177                  appId: PROXY-SERVICE
   178                  cluster: default
   179                  version: 0.0.1
   180              spec:
   181                affinity:
   182                  podAntiAffinity:
   183                    preferredDuringSchedulingIgnoredDuringExecution:
   184                      - podAffinityTerm:
   185                          labelSelector:
   186                            matchExpressions:
   187                              - key: app
   188                                operator: In
   189                                values:
   190                                  - proxy-service
   191                          topologyKey: kubernetes.io/hostname
   192                        weight: 100
   193                containers:
   194                  - env:
   195                      - name: NODE_IP
   196                        valueFrom:
   197                          fieldRef:
   198                            fieldPath: status.hostIP
   199                      - name: POD_IP
   200                        valueFrom:
   201                          fieldRef:
   202                            fieldPath: status.podIP
   203                      - name: POD_NAME
   204                        valueFrom:
   205                          fieldRef:
   206                            fieldPath: metadata.name
   207                      - name: POD_NAMESPACE
   208                        valueFrom:
   209                          fieldRef:
   210                            fieldPath: metadata.namespace
   211                      - name: APP_NAME
   212                        value: proxy-service
   213                      - name: LOG_BASE
   214                        value: /app/data/log
   215                      - name: RUNTIME_CLUSTER
   216                        value: default
   217                    image: proxy-service:0.1
   218                    imagePullPolicy: Always
   219                    name: proxy-service
   220                    ports:
   221                      - containerPort: 11024
   222                        protocol: TCP
   223                      - containerPort: 11025
   224                        protocol: TCP
   225                    volumeMounts:
   226                      - mountPath: /tmp/data/log/proxy-service
   227                        name: log-volume
   228                      - mountPath: /app/data
   229                        name: sidecar-sre
   230                      - mountPath: /app/skywalking
   231                        name: skywalking
   232                initContainers:
   233                  - args:
   234                      - 'echo "do something" '
   235                    command:
   236                      - /bin/sh
   237                      - -c
   238                    env:
   239                      - name: NODE_IP
   240                        valueFrom:
   241                          fieldRef:
   242                            fieldPath: status.hostIP
   243                      - name: POD_IP
   244                        valueFrom:
   245                          fieldRef:
   246                            fieldPath: status.podIP
   247                      - name: APP_NAME
   248                        value: proxy-service
   249                    image: busybox
   250                    imagePullPolicy: Always
   251                    name: sidecar-sre
   252                    resources:
   253                      limits:
   254                        cpu: 100m
   255                        memory: 100Mi
   256                    volumeMounts:
   257                      - mountPath: /tmp/data/log/proxy-service
   258                        name: log-volume
   259                      - mountPath: /scratch
   260                        name: sidecar-sre
   261                terminationGracePeriodSeconds: 120
   262                volumes:
   263                  - hostPath:
   264                      path: /app/logs/dev/proxy-service
   265                      type: DirectoryOrCreate
   266                    name: log-volume
   267                  - emptyDir: {}
   268                    name: sidecar-sre
   269                  - emptyDir: {}
   270                    name: skywalking
   271        parameters:
   272          - name: image
   273            required: true
   274            type: string
   275            fieldPaths:
   276              - "spec.template.spec.containers[0].image"
   277          - name: cluster
   278            required: true
   279            type: string
   280            fieldPaths:
   281              - "spec.template.spec.containers[0].env[5].value"
   282              - "spec.template.metadata.labels.cluster"
   283  ---
   284  apiVersion: core.oam.dev/v1beta1
   285  kind: TraitDefinition
   286  metadata:
   287    name: ingress
   288  spec:
   289    schematic:
   290      cue:
   291        template: |
   292          parameter: {
   293            domain: string
   294            http: [string]: int
   295          }
   296          outputs: {
   297            "service": {
   298              apiVersion: "v1"
   299              kind: "Service"
   300              metadata: {
   301                name: context.name
   302                namespace: context.namespace
   303              }
   304              spec: {
   305                selector: app: context.name
   306                ports: [for ph, pt in parameter.http{
   307                  protocol: "TCP"
   308                  port: pt
   309                  targetPort: pt
   310                }]
   311              }
   312            }
   313            "ingress": {
   314              apiVersion: "networking.k8s.io/v1"
   315              kind: "Ingress"
   316              metadata: {
   317                name: "\(context.name)-ingress"
   318                namespace: context.namespace
   319              }
   320              spec: rules: [{
   321                host: parameter.domain
   322                http: paths: [for ph, pt in parameter.http {
   323                    path: ph
   324                    pathType: "Prefix"
   325                    backend: service: {
   326                        name: context.name
   327                        port: number: pt
   328                    }
   329                }]
   330              }]
   331             }
   332          }