Files
kubevela/docs/examples/workflow/Li-Auto-Inc/common-definitions.yaml
shreyas pandya e3f0a6006d Fix(docs): documentation where schematic for component definition refers to kube (#6579)
* cue structure implemented

Signed-off-by: Kartikay <kartikay_2101ce32@iitp.ac.in>

* indent fix

Signed-off-by: Kartikay <kartikay_2101ce32@iitp.ac.in>

* Fix(docs): correct example by changing schematic from kube to cue

- fixes #6436

Signed-off-by: Shreyas <pandyashreyas1@gmail.com>

---------

Signed-off-by: Kartikay <kartikay_2101ce32@iitp.ac.in>
Signed-off-by: Shreyas <pandyashreyas1@gmail.com>
Co-authored-by: Kartikay <kartikay_2101ce32@iitp.ac.in>
2024-07-15 14:27:44 +05:30

292 lines
10 KiB
YAML

apiVersion: core.oam.dev/v1beta1
kind: ComponentDefinition
metadata:
annotations:
definition.oam.dev/description: ""
labels: {}
name: base-service
spec:
schematic:
cue:
template: |
output: {
apiVersion: "apps/v1"
kind: "Deployment"
metadata: {
labels: {
appId: "BASE-SERVICE"
appName: "base-service"
version: "0.0.1"
}
name: "base-service"
}
spec: {
replicas: 2
revisionHistoryLimit: 5
selector: matchLabels: app: "base-service"
template: {
metadata: labels: {
antiAffinity: "none"
app: "base-service"
appId: "BASE-SERVICE"
version: "0.0.1"
cluster: parameter.cluster
}
spec: {
affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: [
{
podAffinityTerm: {
labelSelector: matchExpressions: [
{
key: "app"
operator: "In"
values: ["base-service"]
},
{
key: "antiAffinity"
operator: "In"
values: ["none"]
},
]
topologyKey: "kubernetes.io/hostname"
}
weight: 100
},
]
containers: [
{
env: [
{name: "NODE_IP", valueFrom: fieldRef: fieldPath: "status.hostIP"},
{name: "POD_IP", valueFrom: fieldRef: fieldPath: "status.podIP"},
{name: "POD_NAME", valueFrom: fieldRef: fieldPath: "metadata.name"},
{name: "POD_NAMESPACE", valueFrom: fieldRef: fieldPath: "metadata.namespace"},
{name: "APP_NAME", value: "base-service"},
{name: "LOG_BASE", value: "/data/log"},
{name: "RUNTIME_CLUSTER", value: parameter.cluster},
]
image: parameter.image
imagePullPolicy: "Always"
name: "base-service"
ports: [
{containerPort: 11223, protocol: "TCP"},
{containerPort: 11224, protocol: "TCP"},
]
volumeMounts: [
{mountPath: "/tmp/data/log/base-service", name: "log-volume"},
{mountPath: "/data", name: "sidecar-sre"},
{mountPath: "/app/skywalking", name: "skywalking"},
]
},
]
initContainers: [
{
args: ["echo \"do something\""]
command: ["/bin/sh", "-c"]
env: [
{name: "NODE_IP", valueFrom: fieldRef: fieldPath: "status.hostIP"},
{name: "POD_IP", valueFrom: fieldRef: fieldPath: "status.podIP"},
{name: "APP_NAME", value: "base-service"},
]
image: "busybox"
imagePullPolicy: "Always"
name: "sidecar-sre"
resources: limits: {
cpu: "100m"
memory: "100Mi"
}
volumeMounts: [
{mountPath: "/tmp/data/log/base-service", name: "log-volume"},
{mountPath: "/scratch", name: "sidecar-sre"},
]
},
]
terminationGracePeriodSeconds: 120
volumes: [
{hostPath: {path: "/logs/dev/base-service", type: "DirectoryOrCreate"}, name: "log-volume"},
{emptyDir: {}, name: "sidecar-sre"},
{emptyDir: {}, name: "skywalking"},
]
}
}
}
}
parameter: {
image: string
cluster: string
}
workload:
definition:
apiVersion: apps/v1
kind: Deployment
---
apiVersion: core.oam.dev/v1beta1
kind: ComponentDefinition
metadata:
annotations:
definition.oam.dev/description: ""
labels: {}
name: proxy-service
spec:
schematic:
cue:
template: |
output: {
apiVersion: "argoproj.io/v1alpha1"
kind: "Rollout"
metadata: {
labels: {
appId: "PROXY-SERVICE"
appName: "proxy-service"
version: "0.0.0"
}
name: "proxy-service"
}
spec: {
replicas: 1
revisionHistoryLimit: 1
selector: matchLabels: app: "proxy-service"
strategy: canary: steps: [
{setWeight: 50},
{pause: {}},
]
template: {
metadata: labels: {
app: "proxy-service"
appId: "PROXY-SERVICE"
cluster: parameter.cluster
version: "0.0.1"
}
spec: {
affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: [
{
podAffinityTerm: {
labelSelector: matchExpressions: [
{
key: "app"
operator: "In"
values: ["proxy-service"]
},
]
topologyKey: "kubernetes.io/hostname"
}
weight: 100
},
]
containers: [
{
env: [
{name: "NODE_IP", valueFrom: fieldRef: fieldPath: "status.hostIP"},
{name: "POD_IP", valueFrom: fieldRef: fieldPath: "status.podIP"},
{name: "POD_NAME", valueFrom: fieldRef: fieldPath: "metadata.name"},
{name: "POD_NAMESPACE", valueFrom: fieldRef: fieldPath: "metadata.namespace"},
{name: "APP_NAME", value: "proxy-service"},
{name: "LOG_BASE", value: "/app/data/log"},
{name: "RUNTIME_CLUSTER", value: parameter.cluster},
]
#image: "proxy-service:0.1"
image: parameter.image
imagePullPolicy: "Always"
name: "proxy-service"
ports: [
{containerPort: 11024, protocol: "TCP"},
{containerPort: 11025, protocol: "TCP"},
]
volumeMounts: [
{mountPath: "/tmp/data/log/proxy-service", name: "log-volume"},
{mountPath: "/app/data", name: "sidecar-sre"},
{mountPath: "/app/skywalking", name: "skywalking"},
]
},
]
initContainers: [
{
args: ["echo \"do something\" "]
command: ["/bin/sh", "-c"]
env: [
{name: "NODE_IP", valueFrom: fieldRef: fieldPath: "status.hostIP"},
{name: "POD_IP", valueFrom: fieldRef: fieldPath: "status.podIP"},
{name: "APP_NAME", value: "proxy-service"},
]
image: "busybox"
imagePullPolicy: "Always"
name: "sidecar-sre"
resources: limits: {
cpu: "100m"
memory: "100Mi"
}
volumeMounts: [
{mountPath: "/tmp/data/log/proxy-service", name: "log-volume"},
{mountPath: "/scratch", name: "sidecar-sre"},
]
},
]
terminationGracePeriodSeconds: 120
volumes: [
{hostPath: {path: "/app/logs/dev/proxy-service", type: "DirectoryOrCreate"}, name: "log-volume"},
{emptyDir: {}, name: "sidecar-sre"},
{emptyDir: {}, name: "skywalking"},
]
}
}
}
}
parameter: {
image: string
cluster: string
}
workload:
definition:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
---
apiVersion: core.oam.dev/v1beta1
kind: TraitDefinition
metadata:
name: ingress
spec:
schematic:
cue:
template: |
parameter: {
domain: string
http: [string]: int
}
outputs: {
"service": {
apiVersion: "v1"
kind: "Service"
metadata: {
name: context.name
namespace: context.namespace
}
spec: {
selector: app: context.name
ports: [for ph, pt in parameter.http{
protocol: "TCP"
port: pt
targetPort: pt
}]
}
}
"ingress": {
apiVersion: "networking.k8s.io/v1"
kind: "Ingress"
metadata: {
name: "\(context.name)-ingress"
namespace: context.namespace
}
spec: rules: [{
host: parameter.domain
http: paths: [for ph, pt in parameter.http {
path: ph
pathType: "Prefix"
backend: service: {
name: context.name
port: number: pt
}
}]
}]
}
}