Skip to content
CNPEPlatform APIs and Self-Service CapabilitiesSingle nodeMedium

Automation framework: an Argo WorkflowTemplate that provisions environments

Scenario cnpe-api-005 · about 15 minutes · 8 points · 5 grader checks

Offer environment provisioning as a reusable Argo WorkflowTemplate with a parameter and a resource step, then provision the blue environment through it.

  • argo-workflows
  • workflowtemplate
  • automation
  • self-service
  • resource-template
  • platform-api

What you will practise

  • Write a parameterised WorkflowTemplate
  • Create Kubernetes objects from a workflow with a resource template
  • Run a Workflow from a template under a least-privilege ServiceAccount

Start this lab

With the CLI installed and signed in, this command provisions a single node cluster on your Mac, applies the scenario setup and prints the task below.

goldenkube start cnpe-api-005

Task

The task text exactly as the CLI shows it. Solve it on the cluster, then run goldenkube submit.

Argo Workflows runs in namespace "argo". The ServiceAccount "provisioner" in "argo" may create ConfigMaps in namespace "self-service" and report workflow results. 1. Create a WorkflowTemplate "provision-env" in "argo" with the argument parameter "name" and an entrypoint whose only step is a resource template that creates the ConfigMap "env-<name>" in "self-service" with the data key "owner" set to "platform". 2. Submit a Workflow "provision-blue" in "argo" that runs that template (reference it, do not copy it) with name=blue under the ServiceAccount "provisioner". It must succeed.

Requirements and details

Certification
CNPE · Certified Cloud Native Platform Engineer
Domain
Platform APIs and Self-Service Capabilities
Difficulty
Medium
Cluster topology
Single node
Cluster features
None beyond the base cluster
Recommended time
15 minutes
Points
8
Grader checks
5
Kubernetes version
1.35
Minimum CLI version
0.1.0
Scenario version
1
Published

Grading runs locally: 5 state checks read your cluster when you submit; the scenario passes when every check passes. Hints, the reference solution and the check definitions are available only inside the CLI, not on this page.

CNPEPlatform APIs and Self-Service CapabilitiesMedium

Platform API: design a Database CRD with validation and status

Offer databases as a platform API: a namespaced CustomResourceDefinition with an enum-validated schema, a status subresource and printer columns, plus the first claim.

Single node · ~15 min · 10 points

  • crd
  • customresourcedefinition
  • openapi-schema
  • platform-api
  • self-service

goldenkube start cnpe-api-001

CNPEPlatform APIs and Self-Service CapabilitiesHard

Self-service with Crossplane: an XRD and a Composition that compose a ConfigMap

Expose app configuration as a Crossplane v2 namespaced composite API: define the XRD, write a pipeline Composition with patch-and-transform, and provision the first composite.

Single node · ~20 min · 10 points

  • crossplane
  • composition
  • xrd
  • self-service
  • platform-api
  • function-patch-and-transform

goldenkube start cnpe-api-002

CNPEPlatform APIs and Self-Service CapabilitiesMedium

Operators: run Alertmanager through the Prometheus Operator

Use the Prometheus Operator as a platform automation: declare an Alertmanager and a namespaced AlertmanagerConfig, and confirm the operator reconciled them into a running, configured instance.

Single node · ~15 min · 8 points

  • operator
  • prometheus-operator
  • alertmanager
  • alertmanagerconfig
  • custom-resources
  • platform-automation

goldenkube start cnpe-api-003

CNPEPlatform APIs and Self-Service CapabilitiesMedium

Self-service namespaces: Kyverno generate rules for team onboarding

A team gets a working namespace by labelling it: a Kyverno ClusterPolicy generates the quota and the admin RoleBinding for every namespace carrying the team label and keeps them in sync.

Single node · ~15 min · 10 points

  • kyverno
  • generate
  • self-service
  • namespace-provisioning
  • policy
  • platform-api

goldenkube start cnpe-api-004

Independent community project, not affiliated with or endorsed by CNCF or The Linux Foundation. Lab results are practice feedback, not an exam score.