Marketplace
BrowsePublish
Marketplace
devops-toolkit/dot-application@v0.6.10
app-backend-db-remote

app-backend-db-remote

app-backend-db-remote
devops-toolkit/dot-application@v0.6.10app-backend-db-remote
Type

Composition

Referenced XRD

App

Source Codegithub.com/vfarcic/crossplane-app
Resources (3)

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
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
              spec:
                selector: {}
                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
                        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.parameters.dbSecret.name
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[0].valueFrom.secretKeyRef.name
        - fromFieldPath: spec.parameters.dbSecret.name
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[1].valueFrom.secretKeyRef.name
        - fromFieldPath: spec.parameters.dbSecret.name
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[2].valueFrom.secretKeyRef.name
        - fromFieldPath: spec.parameters.dbSecret.name
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[3].valueFrom.secretKeyRef.name
        - fromFieldPath: spec.parameters.dbSecret.name
          toFieldPath: spec.forProvider.manifest.spec.template.spec.containers[0].env[4].value
        - fromFieldPath: spec.parameters.kubernetesProviderConfigName
          toFieldPath: spec.providerConfigRef.name
    - name: service
      base:
        apiVersion: kubernetes.crossplane.io/v1alpha1
        kind: Object
        spec:
          forProvider:
            manifest:
              apiVersion: v1
              kind: Service
              spec:
                ports:
                  - name: http
                    port: 8008
                    protocol: TCP
                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
    - 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"
              spec:
                rules:
                  - http:
                      paths:
                        - backend:
                            service:
                              name: acme
                          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
Marketplace

Discover the building blocks for your internal cloud platform.

© 2022 Upbound, Inc.

SolutionsProvidersConfigurations
LearnDocumentationTry for Free
MorePrivacy PolicyTerms & Conditions
Marketplace

© 2022 Upbound, Inc.

Marketplace

Discover the building blocksfor your internal cloud platform.