devops-toolkit/dot-application@v2.0.8,v2.0.7,v2.0.6,v2.0.5,v2.0.4
app-backend-db-remote

app-backend-db-remote

app-backend-db-remote
devops-toolkit/dot-application@v2.0.8,v2.0.7,v2.0.6,v2.0.5,v2.0.4app-backend-db-remote
Type

Composition

Referenced XRD

App

Source Codegithub.com/vfarcic/devops-toolkit-crossplane/tree/master/packages/app
Resources (4)

The following resources are composed to implement the referenced Composite Resource Definition (XRD).

Kind
Group
Version

Object

kubernetes.crossplane.io
v1alpha1

Object

kubernetes.crossplane.io
v1alpha1

Object

kubernetes.crossplane.io
v1alpha1

Object

kubernetes.crossplane.io
v1alpha1
YAML
kind: Composition
apiVersion: apiextensions.crossplane.io/v1
metadata:
  name: app-backend-db-remote
  creationTimestamp: null
  labels:
    location: remote
    type: backend-db
spec:
  compositeTypeRef:
    apiVersion: devopstoolkitseries.com/v1alpha1
    kind: App
  patchSets:
    - name: metadata
      patches:
        - fromFieldPath: metadata.labels
  resources:
    - name: deployment
      base:
        apiVersion: kubernetes.crossplane.io/v1alpha1
        kind: Object
        spec:
          forProvider:
            manifest:
              apiVersion: apps/v1
              kind: Deployment
              metadata:
                ? name
                ? namespace
              spec:
                template:
                  spec:
                    containers:
                      - env:
                          - name: DB_ENDPOINT
                            valueFrom:
                              secretKeyRef:
                                key: endpoint
                          - name: DB_PASSWORD
                            valueFrom:
                              secretKeyRef:
                                key: password
                          - name: DB_PORT
                            valueFrom:
                              secretKeyRef:
                                key: port
                                optional: true
                          - name: DB_USERNAME
                            valueFrom:
                              secretKeyRef:
                                key: username
                          - name: DB_NAME
                            value: null
                        image: null
                        livenessProbe:
                          httpGet:
                            path: /
                            port: 80
                        name: backend
                        ports:
                          - containerPort: 80
                        readinessProbe:
                          httpGet:
                            path: /
                            port: 80
                        resources:
                          limits:
                            cpu: 250m
                            memory: 256Mi
                          requests:
                            cpu: 125m
                            memory: 128Mi
      patches:
        - fromFieldPath: spec.id
          toFieldPath: metadata.name
          transforms:
            - type: string
              string:
                fmt: "%s-deployment"
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.metadata.name
        - fromFieldPath: spec.parameters.namespace
          toFieldPath: spec.forProvider.manifest.metadata.namespace
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.metadata.labels.app
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.selector.matchLabels.app
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.template.metadata.labels.app
        - fromFieldPath: spec.parameters.image
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].image
        - fromFieldPath: spec.parameters.port
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].ports[0].containerPort
        - fromFieldPath: spec.parameters.port
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].livenessProbe.httpGet.port
        - fromFieldPath: spec.parameters.port
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].readinessProbe.httpGet.port
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[0].valueFrom.secretKeyRef.name
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[1].valueFrom.secretKeyRef.name
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[2].valueFrom.secretKeyRef.name
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[3].valueFrom.secretKeyRef.name
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[4].value
        - fromFieldPath: spec.parameters.kubernetesProviderConfigName
          toFieldPath: spec.providerConfigRef.name
      readinessChecks:
        - type: None
    - name: service
      base:
        apiVersion: kubernetes.crossplane.io/v1alpha1
        kind: Object
        spec:
          forProvider:
            manifest:
              apiVersion: v1
              kind: Service
              metadata:
                ? name
                ? namespace
              spec:
                ports:
                  - name: http
                    port: 80
                    protocol: TCP
                    targetPort: 80
                type: ClusterIP
      patches:
        - fromFieldPath: spec.id
          toFieldPath: metadata.name
          transforms:
            - type: string
              string:
                fmt: "%s-service"
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.metadata.name
        - fromFieldPath: spec.parameters.namespace
          toFieldPath: spec.forProvider.manifest.metadata.namespace
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.metadata.labels.app
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.selector.app
        - fromFieldPath: spec.parameters.port
          toFieldPath: spec.forProvider.manifest.spec.ports[0].port
        - fromFieldPath: spec.parameters.port
          toFieldPath: spec.forProvider.manifest.spec.ports[0].targetPort
        - fromFieldPath: spec.parameters.kubernetesProviderConfigName
          toFieldPath: spec.providerConfigRef.name
      readinessChecks:
        - type: None
    - name: ingress
      base:
        apiVersion: kubernetes.crossplane.io/v1alpha1
        kind: Object
        spec:
          forProvider:
            manifest:
              apiVersion: networking.k8s.io/v1
              kind: Ingress
              metadata:
                annotations:
                  ingress.kubernetes.io/ssl-redirect: "false"
                name: null
                namespace: null
              spec:
                rules:
                  - host: devopstoolkitseries.com
                    http:
                      paths:
                        - backend:
                            service:
                              name: devops-toolkit
                              port:
                                number: 80
                          path: /
                          pathType: ImplementationSpecific
      patches:
        - fromFieldPath: spec.id
          toFieldPath: metadata.name
          transforms:
            - type: string
              string:
                fmt: "%s-ingress"
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.metadata.name
        - fromFieldPath: spec.parameters.namespace
          toFieldPath: spec.forProvider.manifest.metadata.namespace
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.metadata.labels.app
        - fromFieldPath: spec.parameters.host
          toFieldPath: spec.forProvider.manifest.spec.rules[0].host
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.spec.rules[0].http.paths[0].backend.service.name
        - fromFieldPath: spec.parameters.port
          toFieldPath: spec.forProvider.manifest.spec.rules[0].http.paths[0].backend.service.port.number
        - fromFieldPath: spec.parameters.kubernetesProviderConfigName
          toFieldPath: spec.providerConfigRef.name
        - type: ToCompositeFieldPath
          fromFieldPath: spec.forProvider.manifest.spec.rules[0].host
          toFieldPath: status.host
    - name: secret
      base:
        apiVersion: kubernetes.crossplane.io/v1alpha1
        kind: Object
        spec:
          forProvider:
            manifest:
              apiVersion: v1
              kind: Secret
              metadata:
                ? name
                ? namespace
          providerConfigRef:
            ? name
          references:
            - patchesFrom:
                apiVersion: v1
                fieldPath: data.endpoint
                kind: Secret
                name: null
                namespace: null
              toFieldPath: data.endpoint
            - patchesFrom:
                apiVersion: v1
                fieldPath: data.password
                kind: Secret
                name: null
                namespace: null
              toFieldPath: data.password
            - patchesFrom:
                apiVersion: v1
                fieldPath: data.port
                kind: Secret
                name: null
                namespace: null
              toFieldPath: data.port
            - patchesFrom:
                apiVersion: v1
                fieldPath: data.username
                kind: Secret
                name: null
                namespace: null
              toFieldPath: data.username
      patches:
        - fromFieldPath: spec.id
          toFieldPath: metadata.name
          transforms:
            - type: string
              string:
                fmt: "%s-secret"
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.metadata.name
        - fromFieldPath: spec.parameters.namespace
          toFieldPath: spec.forProvider.manifest.metadata.namespace
        - fromFieldPath: spec.id
          toFieldPath: spec.forProvider.manifest.metadata.labels.app
        - fromFieldPath: spec.parameters.kubernetesProviderConfigName
          toFieldPath: spec.providerConfigRef.name
        - fromFieldPath: spec.parameters.dbSecret.name
          toFieldPath: spec.references[0].patchesFrom.name
        - fromFieldPath: spec.parameters.dbSecret.namespace
          toFieldPath: spec.references[0].patchesFrom.namespace
        - fromFieldPath: spec.parameters.dbSecret.name
          toFieldPath: spec.references[1].patchesFrom.name
        - fromFieldPath: spec.parameters.dbSecret.namespace
          toFieldPath: spec.references[1].patchesFrom.namespace
        - fromFieldPath: spec.parameters.dbSecret.name
          toFieldPath: spec.references[2].patchesFrom.name
        - fromFieldPath: spec.parameters.dbSecret.namespace
          toFieldPath: spec.references[2].patchesFrom.namespace
        - fromFieldPath: spec.parameters.dbSecret.name
          toFieldPath: spec.references[3].patchesFrom.name
        - fromFieldPath: spec.parameters.dbSecret.namespace
          toFieldPath: spec.references[3].patchesFrom.namespace
Discover the building blocks for your internal cloud platform.
© 2025 Upbound, Inc.
Solutions