Created
December 15, 2025 09:28
-
-
Save binura-g/1ce4d2bfd2ecf903f5755f6900084e31 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| apiVersion: openchoreo.dev/v1alpha1 | |
| kind: ComponentType | |
| metadata: | |
| name: simple-http-service | |
| namespace: default | |
| spec: | |
| workloadType: deployment | |
| schema: | |
| types: | |
| Resources: | |
| cpu: "string | default=100m" | |
| memory: "string | default=256Mi" | |
| parameters: | |
| replicas: "integer | default=1" | |
| port: "integer | default=80" | |
| envOverrides: | |
| resources: | |
| requests: Resources | |
| limits: Resources | |
| minAvailable: "integer | default=1" | |
| resources: | |
| - id: deployment | |
| template: | |
| apiVersion: apps/v1 | |
| kind: Deployment | |
| metadata: | |
| name: ${metadata.name} | |
| namespace: ${metadata.namespace} | |
| labels: ${metadata.labels} | |
| spec: | |
| replicas: ${parameters.replicas} | |
| selector: | |
| matchLabels: ${metadata.podSelectors} | |
| template: | |
| metadata: | |
| labels: ${metadata.podSelectors} | |
| spec: | |
| containers: | |
| - name: main | |
| image: ${workload.containers["main"].image} | |
| ports: | |
| - name: http | |
| containerPort: ${parameters.port} | |
| protocol: TCP | |
| resources: | |
| requests: | |
| cpu: ${parameters.resources.requests.cpu} | |
| memory: ${parameters.resources.requests.memory} | |
| limits: | |
| cpu: ${parameters.resources.limits.cpu} | |
| memory: ${parameters.resources.limits.memory} | |
| - id: service | |
| template: | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| name: ${metadata.name} | |
| namespace: ${metadata.namespace} | |
| labels: ${metadata.labels} | |
| spec: | |
| type: ClusterIP | |
| selector: ${metadata.podSelectors} | |
| ports: | |
| - name: http | |
| port: 80 | |
| targetPort: ${parameters.port} | |
| protocol: TCP | |
| - id: httproute | |
| template: | |
| apiVersion: gateway.networking.k8s.io/v1 | |
| kind: HTTPRoute | |
| metadata: | |
| name: ${metadata.name} | |
| namespace: ${metadata.namespace} | |
| labels: ${metadata.labels} | |
| spec: | |
| parentRefs: | |
| - name: gateway-external | |
| namespace: openchoreo-data-plane | |
| hostnames: | |
| - ${metadata.name}-${metadata.environmentName}.${dataplane.publicVirtualHost} | |
| rules: | |
| - matches: | |
| - path: | |
| type: PathPrefix | |
| value: /${metadata.name} | |
| method: GET | |
| filters: | |
| - type: URLRewrite | |
| urlRewrite: | |
| path: | |
| type: ReplacePrefixMatch | |
| replacePrefixMatch: / | |
| backendRefs: | |
| - name: ${metadata.name} | |
| port: 80 | |
| - id: pdb | |
| template: | |
| apiVersion: policy/v1 | |
| kind: PodDisruptionBudget | |
| metadata: | |
| name: ${metadata.name} | |
| namespace: ${metadata.namespace} | |
| labels: ${metadata.labels} | |
| spec: | |
| minAvailable: ${parameters.minAvailable} | |
| selector: | |
| matchLabels: ${metadata.podSelectors} | |
| --- | |
| apiVersion: openchoreo.dev/v1alpha1 | |
| kind: Trait | |
| metadata: | |
| name: persistent-volume | |
| namespace: default | |
| spec: | |
| schema: | |
| parameters: | |
| volumeName: "string | default=true" | |
| mountPath: "string | default='/var/data'" | |
| containerName: "string | default=main" | |
| envOverrides: | |
| size: "string | default=1Gi" | |
| storageClass: "string | default=local-path" | |
| creates: | |
| - template: | |
| apiVersion: v1 | |
| kind: PersistentVolumeClaim | |
| metadata: | |
| name: ${metadata.name}-${trait.instanceName} | |
| namespace: ${metadata.namespace} | |
| spec: | |
| accessModes: | |
| - ReadWriteOnce | |
| storageClassName: ${parameters.storageClass} | |
| resources: | |
| requests: | |
| storage: ${parameters.size} | |
| patches: | |
| - target: | |
| group: apps | |
| version: v1 | |
| kind: Deployment | |
| operations: | |
| - op: add | |
| path: /spec/template/spec/containers/[?(@.name=='${parameters.containerName}')]/volumeMounts/- | |
| value: | |
| name: ${parameters.volumeName} | |
| mountPath: ${parameters.mountPath} | |
| - op: add | |
| path: /spec/template/spec/volumes/- | |
| value: | |
| name: ${parameters.volumeName} | |
| persistentVolumeClaim: | |
| claimName: ${metadata.name}-${trait.instanceName} | |
| --- | |
| apiVersion: openchoreo.dev/v1alpha1 | |
| kind: Trait | |
| metadata: | |
| name: horizontal-autoscaling | |
| namespace: default | |
| spec: | |
| schema: | |
| parameters: | |
| minReplicas: "integer | default=2" | |
| maxReplicas: "integer | default=5" | |
| targetCpuUtilization: "integer | default=70" | |
| creates: | |
| - template: | |
| apiVersion: autoscaling/v2 | |
| kind: HorizontalPodAutoscaler | |
| metadata: | |
| name: ${metadata.name}-${trait.instanceName} | |
| namespace: ${metadata.namespace} | |
| spec: | |
| scaleTargetRef: | |
| apiVersion: apps/v1 | |
| kind: Deployment | |
| name: ${metadata.name} | |
| minReplicas: ${parameters.minReplicas} | |
| maxReplicas: ${parameters.maxReplicas} | |
| metrics: | |
| - type: Resource | |
| resource: | |
| name: cpu | |
| target: | |
| type: Utilization | |
| averageUtilization: ${parameters.targetCpuUtilization} | |
| --- | |
| apiVersion: openchoreo.dev/v1alpha1 | |
| kind: Component | |
| metadata: | |
| name: foo-api | |
| namespace: default | |
| spec: | |
| owner: | |
| projectName: default | |
| autoDeploy: true | |
| componentType: deployment/simple-http-service | |
| parameters: | |
| replicas: 2 | |
| port: 9090 | |
| resources: | |
| requests: | |
| cpu: "200m" | |
| memory: "512Mi" | |
| limits: | |
| cpu: "1000m" | |
| memory: "1Gi" | |
| traits: | |
| - name: persistent-volume | |
| instanceName: data-storage | |
| parameters: | |
| volumeName: data | |
| mountPath: /var/data | |
| - name: horizontal-autoscaling | |
| instanceName: hpa | |
| parameters: | |
| minReplicas: 2 | |
| maxReplicas: 10 | |
| targetCpuUtilization: 65 | |
| --- | |
| apiVersion: openchoreo.dev/v1alpha1 | |
| kind: Workload | |
| metadata: | |
| name: foo-api-workload | |
| namespace: default | |
| spec: | |
| owner: | |
| projectName: default | |
| componentName: foo-api | |
| containers: | |
| main: | |
| image: "ghcr.io/openchoreo/samples/reading-list-server:latest" | |
| --- | |
| apiVersion: openchoreo.dev/v1alpha1 | |
| kind: ReleaseBinding | |
| metadata: | |
| name: foo-api-development | |
| namespace: default | |
| spec: | |
| owner: | |
| projectName: default | |
| componentName: foo-api | |
| environment: development | |
| componentTypeEnvOverrides: | |
| resources: | |
| requests: | |
| cpu: "50m" | |
| memory: "128Mi" | |
| limits: | |
| cpu: "200m" | |
| memory: "256Mi" | |
| traitOverrides: | |
| data-storage: | |
| size: 1Gi | |
| storageClass: local-path |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment