Templates a claim manifest based on input parameters
Input Schema
| Property | Type | Description | Required |
|---|---|---|---|
| kind | string | - | |
| clusters | array | - | |
| nameParam | string | - | |
| apiVersion | string | - | |
| ownerParam | string | - | |
| parameters | object | - | |
| excludeParams | array | - | |
| namespaceParam | string | - | |
| removeEmptyParams | boolean | - |
Output Schema
| Property | Type | Description | Required |
|---|---|---|---|
| manifest | string | - | |
| filePaths | array | - |
Usage Examples
Generate a service claim for a single production cluster
Templates a claim manifest for a microservice deployed to one cluster. Excludes internal notes and removes empty values. Bootstraps a workspace with fetch:template and logs results with debug:log.
steps:
- id: fetch-base
action: fetch:template
input:
url: ./skeleton
targetPath: .
values:
name: ${{ parameters.componentId }}
description: "Service claim for ${{ parameters.componentId }}"
- id: generate-claim
action: terasky:claim-template
input:
parameters:
serviceName: ${{ parameters.componentId }}
kubeNamespace: ${{ parameters.namespace }}
owner: ${{ parameters.owner }}
tier: backend
env: prod
replicas: 3
image: "ghcr.io/acme/orders:1.2.3"
internalNotes: ${{ parameters.notes }}
nameParam: serviceName
namespaceParam: kubeNamespace
excludeParams:
- internalNotes
apiVersion: platform.example.com/v1alpha1
kind: ServiceClaim
clusters:
- prod-us-east-1
removeEmptyParams: true
ownerParam: owner
- id: show-claim
action: debug:log
input:
message: |
Generated claim manifest:
${{ steps.generate-claim.output.manifest }}
Files written:
${{ steps.generate-claim.output.filePaths }}Multi cluster database claim keeping empty fields for defaults
Generates a database claim for dev and staging clusters. Keeps empty fields so downstream defaults can apply.
steps:
- id: generate-db-claim
action: terasky:claim-template
input:
parameters:
dbName: ${{ parameters.database }}
kubeNamespace: ${{ parameters.namespace }}
owner: ${{ parameters.owner }}
engine: postgres
version: "15"
storageGiB: ""
backupRetentionDays: ""
nameParam: dbName
namespaceParam: kubeNamespace
excludeParams: []
apiVersion: database.acme.io/v1
kind: DatabaseClaim
clusters:
- dev
- staging
removeEmptyParams: false
ownerParam: owner
- id: log
action: debug:log
input:
message: |
Database claim manifest:
${{ steps.generate-db-claim.output.manifest }}Preview environment claim across selected clusters using dynamic naming
Creates a preview claim for pull request environments across user selected clusters. Excludes debug flags and removes empty values.
steps:
- id: generate-preview-claim
action: terasky:claim-template
input:
parameters:
serviceName: "${{ parameters.appId }}-pr-${{ parameters.prNumber }}"
kubeNamespace: "preview-${{ parameters.prNumber }}"
owner: ${{ parameters.owner }}
image: "ghcr.io/acme/${{ parameters.appId }}:${{ parameters.sha }}"
prNumber: ${{ parameters.prNumber }}
debugFlag: true
featureToggles:
- canary
nameParam: serviceName
namespaceParam: kubeNamespace
excludeParams:
- debugFlag
apiVersion: platform.example.com/v1alpha1
kind: PreviewAppClaim
clusters: ${{ parameters.targetClusters }}
removeEmptyParams: true
ownerParam: owner
- id: log-preview
action: debug:log
input:
message: |
Preview claim files:
${{ steps.generate-preview-claim.output.filePaths }}Generate claim and publish to a GitHub repository
Bootstraps a repository with fetch:template, templates the claim, then publishes the workspace with publish:github.
steps:
- id: prepare-repo
action: fetch:template
input:
url: ./repo-skeleton
targetPath: .
values:
name: ${{ parameters.componentId }}
owner: ${{ parameters.owner }}
- id: generate-claim
action: terasky:claim-template
input:
parameters:
claimName: ${{ parameters.componentId }}
kubeNamespace: ${{ parameters.namespace }}
owner: ${{ parameters.owner }}
serviceLevel: gold
region: us-west
apiToken: ${{ parameters.apiToken }}
nameParam: claimName
namespaceParam: kubeNamespace
excludeParams:
- apiToken
apiVersion: platform.acme.io/v1alpha1
kind: ServiceClaim
clusters:
- prod-us-west-2
- prod-us-east-1
removeEmptyParams: true
ownerParam: owner
- id: publish
action: publish:github
input:
repoUrl: ${{ parameters.repoUrl }} # e.g. github.com?owner=acme-platform&repo=orders-claim
defaultBranch: main
protect: true
description: "Service claim for ${{ parameters.componentId }}"Platform team claim with strict exclusion and multi region rollout
Creates a platform gateway claim rolled out to multiple production clusters. Excludes deprecated and note fields and removes empty values.
steps:
- id: generate-platform-claim
action: terasky:claim-template
input:
parameters:
serviceName: platform-gateway
kubeNamespace: platform
owner: platform-team
capacity: "large"
escalationPolicy: "oncall-platform"
secretsRef: ""
notes: ""
deprecatedFlag: false
nameParam: serviceName
namespaceParam: kubeNamespace
excludeParams:
- deprecatedFlag
- notes
apiVersion: platform.example.com/v1alpha1
kind: GatewayClaim
clusters:
- prod-eu-central-1
- prod-eu-west-1
- prod-us-east-1
removeEmptyParams: true
ownerParam: owner
- id: log-output
action: debug:log
input:
message: |
Gateway claim manifest saved to:
${{ steps.generate-platform-claim.output.filePaths }}