the existing infrastructure
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
apiVersion: quai.dev/v1beta1
|
||||
kind: ResourceType
|
||||
metadata:
|
||||
name: app
|
||||
title: Application
|
||||
description: An Argo CD Application that deploys a directory of a team's repository.
|
||||
icon: rocket
|
||||
category: Delivery
|
||||
version: 1.0.0
|
||||
spec:
|
||||
locate: { strategy: dir, path: "apps/{name}" }
|
||||
params:
|
||||
- { name: name, title: Name, pattern: "[a-z][a-z0-9-]{1,40}" }
|
||||
schema: schemas/app.schema.json
|
||||
generate:
|
||||
kind: component
|
||||
component: argocd.application
|
||||
with:
|
||||
name: ${{ params.name }}
|
||||
repoURL: ${{ inputs.repoURL }}
|
||||
path: ${{ inputs.path }}
|
||||
targetRevision: ${{ inputs.?revision }}
|
||||
destinationNamespace: ${{ inputs.namespace }}
|
||||
automated: ${{ inputs.?autoSync.orValue(true) }}
|
||||
syncOptions: [CreateNamespace=true]
|
||||
cascadeDelete: true
|
||||
ownership: { field: owner }
|
||||
paramFields: { name: name }
|
||||
deletion: allowed
|
||||
@@ -0,0 +1,27 @@
|
||||
apiVersion: quai.dev/v1beta1
|
||||
kind: ResourceType
|
||||
metadata:
|
||||
name: config
|
||||
title: Configuration
|
||||
description: Settings for an application, as a ConfigMap in its namespace.
|
||||
icon: settings
|
||||
category: Kubernetes
|
||||
version: 1.0.0
|
||||
spec:
|
||||
locate: { strategy: dir, path: "configs/{namespace}/{name}" }
|
||||
params:
|
||||
- { name: namespace, title: Namespace, type: enum, discover: true }
|
||||
- { name: name, title: Name, pattern: "[a-z][a-z0-9-]{1,30}" }
|
||||
schema: schemas/config.schema.json
|
||||
generate:
|
||||
kind: component
|
||||
component: raw
|
||||
with:
|
||||
manifests:
|
||||
- apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata: { name: "${{ params.name }}", namespace: "${{ params.namespace }}" }
|
||||
data: ${{ inputs.data }}
|
||||
ownership: { field: owner }
|
||||
paramFields: { name: name, namespace: namespace }
|
||||
deletion: allowed
|
||||
@@ -0,0 +1,37 @@
|
||||
apiVersion: quai.dev/v1beta1
|
||||
kind: ResourceType
|
||||
metadata:
|
||||
name: database
|
||||
title: PostgreSQL database
|
||||
description: A managed PostgreSQL instance, claimed from the platform's Crossplane API.
|
||||
icon: database
|
||||
category: Data
|
||||
version: 1.0.0
|
||||
spec:
|
||||
locate: { strategy: dir, path: "databases/{namespace}/{name}" }
|
||||
params:
|
||||
- { name: namespace, title: Namespace, type: enum, discover: true }
|
||||
- { name: name, title: Name, pattern: "[a-z][a-z0-9-]{1,30}" }
|
||||
schema: schemas/database.schema.json
|
||||
generate:
|
||||
kind: component
|
||||
component: crossplane.claim
|
||||
with:
|
||||
apiVersion: database.example.org/v1alpha1
|
||||
kind: PostgreSQLInstance
|
||||
name: ${{ params.name }}
|
||||
namespace: ${{ params.namespace }}
|
||||
spec:
|
||||
parameters:
|
||||
version: ${{ inputs.version }}
|
||||
storageGB: ${{ inputs.storageGB }}
|
||||
highAvailability: ${{ inputs.?highAvailability.orValue(false) }}
|
||||
compositionSelector: { matchLabels: { provider: example } }
|
||||
writeConnectionSecretToRef: { name: "${{ params.name }}-connection" }
|
||||
ownership: { field: owner }
|
||||
paramFields: { name: name, namespace: namespace }
|
||||
deletion: approval
|
||||
ui:
|
||||
order: [version, storageGB, highAvailability]
|
||||
fields:
|
||||
version: { immutable: true }
|
||||
@@ -0,0 +1,31 @@
|
||||
apiVersion: quai.dev/v1beta1
|
||||
kind: ResourceType
|
||||
metadata:
|
||||
name: namespace
|
||||
title: Team namespace
|
||||
description: A team's namespace with a quota of CPU and memory requests.
|
||||
icon: box
|
||||
category: Kubernetes
|
||||
version: 1.0.0
|
||||
spec:
|
||||
locate: { strategy: dir, path: "namespaces/{name}" }
|
||||
params:
|
||||
- { name: name, title: Name, pattern: "[a-z][a-z0-9-]{1,30}" }
|
||||
schema: schemas/namespace.schema.json
|
||||
generate:
|
||||
kind: component
|
||||
component: k8s.namespace
|
||||
with:
|
||||
name: ${{ params.name }}
|
||||
labels: { team: "${{ inputs.team }}" }
|
||||
quota:
|
||||
requests.cpu: ${{ inputs.?cpu }}
|
||||
requests.memory: ${{ inputs.?memory }}
|
||||
ownership: { field: owner }
|
||||
paramFields: { name: name }
|
||||
deletion: approval
|
||||
approval:
|
||||
rules:
|
||||
- name: quota
|
||||
when: inputs.?cpu != previous.?cpu || inputs.?memory != previous.?memory
|
||||
approvers: [group:platform-admins]
|
||||
@@ -0,0 +1,26 @@
|
||||
apiVersion: quai.dev/v1beta1
|
||||
kind: ResourceType
|
||||
metadata:
|
||||
name: sync
|
||||
title: Flux sync
|
||||
description: A Flux Kustomization that applies a directory of the platform repository to a namespace.
|
||||
icon: refresh
|
||||
category: Delivery
|
||||
version: 1.0.0
|
||||
spec:
|
||||
locate: { strategy: dir, path: "flux/{name}" }
|
||||
params:
|
||||
- { name: name, title: Name, pattern: "[a-z][a-z0-9-]{1,40}" }
|
||||
schema: schemas/sync.schema.json
|
||||
generate:
|
||||
kind: component
|
||||
component: flux.kustomization
|
||||
with:
|
||||
name: ${{ params.name }}
|
||||
source: platform
|
||||
path: ${{ inputs.path }}
|
||||
interval: ${{ inputs.?interval }}
|
||||
targetNamespace: ${{ inputs.targetNamespace }}
|
||||
ownership: { field: owner }
|
||||
paramFields: { name: name }
|
||||
deletion: approval
|
||||
Reference in New Issue
Block a user