### Render Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/custom_external_name/README.md Call the locally running function with example manifests. This command renders the XR, composition, and function configuration. ```shell crossplane render xr.yaml composition.yaml functions.yaml -r ``` -------------------------------- ### Example XR Manifest with Conditions Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/conditions/README.md An example XR manifest demonstrating various status conditions, including 'Ready' and 'DatabaseReady' with specific reasons and statuses. ```yaml --- --- apiVersion: example.crossplane.io/v1beta1 kind: XR metadata: name: example status: conditions: - lastTransitionTime: "2024-01-01T00:00:00Z" reason: Available status: "True" type: Ready - lastTransitionTime: "2024-01-01T00:00:00Z" message: Encountered an error creating the database reason: FailedToCreate status: "False" type: DatabaseReady ``` -------------------------------- ### Render Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/required_resources/README.md Call the locally running function with example manifests. This command renders resources using the specified XR, composition, and function configuration. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render --verbose xr.yaml composition.yaml functions.yaml -r --required-resources required_resources.yaml ``` -------------------------------- ### Call Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/conditions/README.md Invoke the locally running function with example XR, composition, and function manifests. Use the `-r` flag to render the output. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render --verbose xr.yaml composition.yaml functions.yaml -r ``` -------------------------------- ### Test Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/options_oxr/README.md Call the locally running function with example manifests using `crossplane render`. This demonstrates how to apply XR, composition, and function configuration. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: example.crossplane.io/v1 kind: XR metadata: name: example-xr --- apiVersion: ec2.aws.upbound.io/v1beta1 kind: Instance metadata: annotations: crossplane.io/composition-resource-name: example-xr generateName: example-xr- labels: crossplane.io/composite: example-xr name: example-xr ownerReferences: - apiVersion: example.crossplane.io/v1 blockOwnerDeletion: true controller: true kind: XR name: example-xr uid: "" spec: forProvider: ami: ami-0d9858aa3c6322f73 instanceType: t2.micro region: us-east-2 --- apiVersion: render.crossplane.io/v1beta1 kind: Result message: created resource "example-xr:Instance" severity: SEVERITY_NORMAL step: normal ``` -------------------------------- ### Test Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/database/README.md Call the locally running function with example manifests. This requires the function to be running in another terminal. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: fn-demo.crossplane.io/v1alpha1 kind: Database metadata: name: database-test-functions --- apiVersion: sql.gcp.upbound.io/v1beta1 kind: DatabaseInstance metadata: annotations: crossplane.io/composition-resource-name: "" generateName: database-test-functions- labels: crossplane.io/composite: database-test-functions ownerReferences: - apiVersion: fn-demo.crossplane.io/v1alpha1 blockOwnerDeletion: true controller: true kind: Database name: database-test-functions uid: "" spec: forProvider: project: test-project settings: - databaseFlags: - name: log_checkpoints value: "on" ``` -------------------------------- ### Example XR Manifest Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/custom_composition_resource_name/README.md This manifest defines an example Composite Resource (XR) named `example-xr`. It includes a status indicating that related resources are being created. ```yaml --- apiVersion: example.crossplane.io/v1 kind: XR metadata: name: example-xr status: conditions: - lastTransitionTime: "2024-01-01T00:00:00Z" message: 'Unready resources: custom-composition-resource-name' reason: Creating status: "False" type: Ready ``` -------------------------------- ### Test Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/options/README.md Call the locally running function with example XR, composition, and function manifests. The `-r` flag indicates a render operation. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: example.crossplane.io/v1 kind: XR metadata: name: example-xr --- apiVersion: ec2.aws.upbound.io/v1beta1 kind: Instance metadata: annotations: crossplane.io/composition-resource-name: input-instance generateName: example-xr- labels: crossplane.io/composite: example-xr name: input-instance ownerReferences: - apiVersion: example.crossplane.io/v1 blockOwnerDeletion: true controller: true kind: XR name: example-xr uid: "" spec: forProvider: ami: ami-0d9858aa3c6322f73 instanceType: t2.micro region: us-east-2 --- apiVersion: render.crossplane.io/v1beta1 kind: Result message: created resource "input-instance:Instance" severity: SEVERITY_NORMAL step: normal ``` -------------------------------- ### Test Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/loop/README.md Call the locally running function with example manifests. This demonstrates how to use `crossplane render` to apply XR, Composition, and Function definitions. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: example.crossplane.io/v1 kind: XR metadata: name: example-xr --- apiVersion: ec2.aws.upbound.io/v1beta1 kind: Instance metadata: annotations: crossplane.io/composition-resource-name: basic-instance-us-east-1 generateName: example-xr- labels: crossplane.io/composite: example-xr name: instance-us-east-1 ownerReferences: - apiVersion: example.crossplane.io/v1 blockOwnerDeletion: true controller: true kind: XR name: example-xr uid: "" spec: forProvider: ami: ami-0d9858aa3c6322f73 instanceType: t2.micro region: us-east-1 --- apiVersion: ec2.aws.upbound.io/v1beta1 kind: Instance metadata: annotations: crossplane.io/composition-resource-name: basic-instance-us-east-2 generateName: example-xr- labels: crossplane.io/composite: example-xr name: instance-us-east-2 ownerReferences: - apiVersion: example.crossplane.io/v1 blockOwnerDeletion: true controller: true kind: XR name: example-xr uid: "" spec: forProvider: ami: ami-0d9858aa3c6322f73 instanceType: t2.micro region: us-east-2 --- apiVersion: render.crossplane.io/v1beta1 kind: Result message: created resource "instance-us-east-1:Instance" severity: SEVERITY_NORMAL step: normal --- apiVersion: render.crossplane.io/v1beta1 kind: Result message: created resource "instance-us-east-2:Instance" severity: SEVERITY_NORMAL step: normal ``` -------------------------------- ### Example XR Manifest Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/extra_resources_namespaced/README.md An example of an XR (Composite Resource) manifest used for testing. It includes a status indicating unready resources. ```yaml --- --- apiVersion: example.crossplane.io/v1beta1 kind: XR metadata: name: example status: conditions: - lastTransitionTime: "2024-01-01T00:00:00Z" message: 'Unready resources: another-awesome-dev-bucket, my-awesome-dev-bucket' reason: Creating status: "False" type: Ready --- ``` -------------------------------- ### Call Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/xr/patching/README.md In a separate terminal, use `crossplane render` to apply example manifests to the running function. This demonstrates how to send input XR and composition definitions and receive results. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: nopexample.org/v1 kind: XSubnetwork metadata: annotations: nobu.dev/app: someapp nobu.dev/cueified: "true" name: test-xrender spec: forProvider: network: somenetwork --- apiVersion: render.crossplane.io/v1beta1 kind: Result message: updated xr ":XSubnetwork" severity: SEVERITY_NORMAL step: normal ``` -------------------------------- ### Example Foo Resource Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/extra_resources_namespaced/README.md These are example manifests for a 'Foo' resource, likely a custom resource defined by the function or its environment. They are associated with an XR and include annotations for composition resource names. ```yaml apiVersion: example/v1alpha1 kind: Foo metadata: annotations: crossplane.io/composition-resource-name: another-awesome-dev-bucket generateName: example- labels: crossplane.io/composite: example name: another-awesome-dev-bucket ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" --- apiVersion: example/v1alpha1 kind: Foo metadata: annotations: crossplane.io/composition-resource-name: my-awesome-dev-bucket generateName: example- labels: crossplane.io/composite: example name: my-awesome-dev-bucket ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" ``` -------------------------------- ### Example XR Manifest Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/custom_external_name/README.md An example of a Crossplane Composite Resource (XR) manifest. This defines the desired state for a composite resource. ```yaml --- apiVersion: example.crossplane.io/v1 kind: XR metadata: name: example-xr status: conditions: - lastTransitionTime: "2024-01-01T00:00:00Z" message: 'Unready resources: instance' reason: Creating status: "False" type: Ready ``` -------------------------------- ### Example XR Manifest Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/required_resources/README.md An example of a Crossplane Composite Resource (XR) manifest. This defines the desired state for a composite resource. ```yaml --- --- apiVersion: example.crossplane.io/v1beta1 kind: XR metadata: name: example status: conditions: - lastTransitionTime: "2024-01-01T00:00:00Z" message: 'Unready resources: another-awesome-dev-bucket, my-awesome-dev-bucket' reason: Creating status: "False" type: Ready ``` -------------------------------- ### Example XR Manifest Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/external_deps/README.md This is an example of an XR (Composed Resource) manifest used for testing. It defines a custom resource of kind XR. ```yaml --- apiVersion: example.crossplane.io/v1beta1 kind: XR metadata: name: example ``` -------------------------------- ### Example Foo Manifest Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/events/README.md An example of a Foo resource manifest, which is a custom resource likely managed by the XR. It includes annotations for composition resource naming and owner references. ```yaml apiVersion: example/v1alpha1 kind: Foo metadata: annotations: crossplane.io/composition-resource-name: another-awesome-dev-bucket generateName: example- labels: crossplane.io/composite: example name: another-awesome-dev-bucket ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" --- ``` ```yaml apiVersion: example/v1alpha1 kind: Foo metadata: annotations: crossplane.io/composition-resource-name: my-awesome-dev-bucket generateName: example- labels: crossplane.io/composite: example name: my-awesome-dev-bucket ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" ``` -------------------------------- ### Render Example Manifests with Crossplane Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/resources_without_xr/README.md Call the locally running function with example manifests to render Kubernetes resources. This demonstrates how Crossplane interacts with the function to generate desired state. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: example.crossplane.io/v1beta1 kind: XR metadata: name: example --- apiVersion: iam.aws.upbound.io/v1beta1 kind: User metadata: annotations: crossplane.io/composition-resource-name: test-user-0 generateName: example- labels: crossplane.io/composite: example dummy: foo testing.upbound.io/example-name: test-user-0 name: test-user-0 ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" spec: forProvider: {} --- apiVersion: iam.aws.upbound.io/v1beta1 kind: AccessKey metadata: annotations: crossplane.io/composition-resource-name: sample-access-key-0 generateName: example- labels: crossplane.io/composite: example name: sample-access-key-0 ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" spec: forProvider: userSelector: matchLabels: testing.upbound.io/example-name: test-user-0 writeConnectionSecretToRef: name: sample-access-key-secret-0 namespace: crossplane-system ``` -------------------------------- ### Render Example Manifests with Crossplane Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/function_ctx/README.md Use `crossplane render` to apply the example manifests to the running KCL function. This command sends the XR, composition, and function definitions to the local function server for processing. ```shell $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: example.crossplane.io/v1beta1 kind: XR metadata: name: example status: dummy: cool-status --- apiVersion: iam.aws.upbound.io/v1beta1 kind: AccessKey metadata: annotations: crossplane.io/composition-resource-name: sample-access-key-1 generateName: example- labels: crossplane.io/composite: example name: sample-access-key-1 ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" spec: forProvider: userSelector: matchLabels: testing.upbound.io/example-name: test-user-1 writeConnectionSecretToRef: name: sample-access-key-secret-1 namespace: crossplane-system --- apiVersion: iam.aws.upbound.io/v1beta1 kind: User metadata: annotations: crossplane.io/composition-resource-name: test-user-0 generateName: example- labels: crossplane.io/composite: example dummy: foo testing.upbound.io/example-name: test-user-0 name: test-user-0 ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" spec: forProvider: {} --- apiVersion: iam.aws.upbound.io/v1beta1 kind: AccessKey metadata: annotations: crossplane.io/composition-resource-name: sample-access-key-0 generateName: example- labels: crossplane.io/composite: example name: sample-access-key-0 ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" spec: forProvider: userSelector: matchLabels: testing.upbound.io/example-name: test-user-0 writeConnectionSecretToRef: name: sample-access-key-secret-0 namespace: crossplane-system --- apiVersion: iam.aws.upbound.io/v1beta1 kind: User metadata: annotations: crossplane.io/composition-resource-name: test-user-1 generateName: example- labels: crossplane.io/composite: example dummy: foo testing.upbound.io/example-name: test-user-1 name: test-user-1 ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" spec: forProvider: {} ``` -------------------------------- ### Call Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/network/README.md Invoke the locally running function with a set of example manifests. This includes a custom resource (Network), AWS resources (InternetGateway, VPC), and render results. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: fn-demo.crossplane.io/v1alpha1 kind: Network metadata: name: network-test-functions --- apiVersion: ec2.aws.upbound.io/v1beta1 kind: InternetGateway metadata: annotations: crossplane.io/composition-resource-name: basic-gateway generateName: network-test-functions- labels: crossplane.io/composite: network-test-functions networks.meta.fn.crossplane.io/network-id: network-test-functions name: gateway ownerReferences: - apiVersion: fn-demo.crossplane.io/v1alpha1 blockOwnerDeletion: true controller: true kind: Network name: network-test-functions uid: "" spec: forProvider: region: eu-west-1 vpcIdSelector: matchControllerRef: true --- apiVersion: ec2.aws.upbound.io/v1beta1 kind: VPC metadata: annotations: crossplane.io/composition-resource-name: basic-vpc generateName: network-test-functions- labels: crossplane.io/composite: network-test-functions networks.meta.fn.crossplane.io/network-id: network-test-functions name: vpc ownerReferences: - apiVersion: fn-demo.crossplane.io/v1alpha1 blockOwnerDeletion: true controller: true kind: Network name: network-test-functions uid: "" spec: forProvider: cidrBlock: 192.168.0.0/16 enableDnsHostnames: true enableDnsSupport: true region: eu-west-1 --- apiVersion: render.crossplane.io/v1beta1 kind: Result message: created resource "gateway:InternetGateway" severity: SEVERITY_NORMAL step: normal --- apiVersion: render.crossplane.io/v1beta1 kind: Result message: created resource "vpc:VPC" severity: SEVERITY_NORMAL step: normal ``` -------------------------------- ### Example Composition Resource Manifest Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/required_resources/README.md An example of a managed resource manifest generated by a composition. This manifest defines a specific instance of a managed resource, such as a bucket. ```yaml --- apiVersion: example/v1alpha1 kind: Foo metadata: annotations: crossplane.io/composition-resource-name: another-awesome-dev-bucket generateName: example- labels: crossplane.io/composite: example name: another-awesome-dev-bucket ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" ``` ```yaml --- apiVersion: example/v1alpha1 kind: Foo metadata: annotations: crossplane.io/composition-resource-name: my-awesome-dev-bucket generateName: example- labels: crossplane.io/composite: example name: my-awesome-dev-bucket ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" ``` -------------------------------- ### Crossplane Composition Pipeline Example Source: https://github.com/crossplane-contrib/function-kcl/blob/main/docs/crossplane-kcl-composition-proposal.md An example of a Crossplane Composition using the `Pipeline` mode. It defines a sequence of steps, including using `function-kcl` for rendering. ```yaml apiVersion: apiextensions.crossplane.io/v1 kind: Composition metadata: name: machine-deployment spec: mode: Pipeline compositeTypeRef: apiVersion: platform.example.io/v1alpha1 kind: MachineDeployment pipeline: - step: gather-env-config functionRef: name: function-environment-configs input: apiVersion: environmentconfigs.fn.crossplane.io/v1beta1 kind: Input spec: environmentConfigs: - type: Reference ref: name: core-details - type: Reference ref: name: images - step: render-machine-deployment functionRef: name: function-kcl input: apiVersion: krm.kcl.dev/v1alpha1 kind: KCLInput spec: # Keep target as Default (or omit target) if you patch XR via dxr.k # target: Default source: oci://registry.example.com/machine-deployment?tag=0.2.0 - step: auto-ready functionRef: name: function-auto-ready ``` -------------------------------- ### Call Function KCL with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/read_ocds_resource/README.md After running the function locally, call it with example manifests using `crossplane render`. This command applies the specified XR, Composition, and Function manifests, along with observed resources. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml \ --observed-resources=existing-observed-resources.yaml ``` ```yaml --- apiVersion: example.crossplane.io/v1beta1 kind: XR metadata: name: example --- metadata: annotations: crossplane.io/composition-resource-name: ocds generateName: example- labels: crossplane.io/composite: example name: ocds ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" spec: ocds: test-user: ConnectionDetails: {} Resource: apiVersion: iam.aws.upbound.io/v1beta1 kind: User metadata: annotations: crossplane.io/composition-resource-name: test-user generateName: example- labels: crossplane.io/composite: example dummy: foo testing.upbound.io/example-name: test-user name: test-user ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" spec: forProvider: {} user_metadata: annotations: crossplane.io/composition-resource-name: test-user generateName: example- labels: crossplane.io/composite: example dummy: foo testing.upbound.io/example-name: test-user name: test-user ownerReferences: - apiVersion: example.crossplane.io/v1beta1 blockOwnerDeletion: true controller: true kind: XR name: example uid: "" ``` -------------------------------- ### Test Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/patch_desired/patching/README.md Call the locally running function with example XR, composition, and function manifests using `crossplane render`. This tests the function's ability to process and reconcile resources. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: nopexample.org/v1 kind: XSubnetwork metadata: name: test-xrender --- apiVersion: v1 kind: XR metadata: annotations: crossplane.io/composition-resource-name: bucket generateName: test-xrender- labels: crossplane.io/composite: test-xrender ownerReferences: - apiVersion: nopexample.org/v1 blockOwnerDeletion: true controller: true kind: XSubnetwork name: test-xrender uid: "" spec: forProvider: network: some-override-network ``` -------------------------------- ### Render Manifests with Extra Resources Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/default/extra_resources_namespaced/README.md Call the locally running function with example manifests, including an extra resource file. This command renders the XR, composition, function configuration, and the specified extra resources. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render --verbose xr.yaml composition.yaml functions.yaml -r --extra-resources extra_resources_namespaced.yaml ``` -------------------------------- ### KCL Input with OCI Source Source: https://github.com/crossplane-contrib/function-kcl/blob/main/README.md This example demonstrates using an OCI (OCI registry) source for KCL code within a KCLInput resource. This allows for referencing pre-packaged KCL logic from a container registry. ```yaml apiVersion: krm.kcl.dev/v1alpha1 kind: KCLInput spec: source: oci://ghcr.io/kcl-lang/crossplane-xnetwork-kcl-function ``` -------------------------------- ### Call KCL Function with Example Manifests Source: https://github.com/crossplane-contrib/function-kcl/blob/main/examples/resources/condition/README.md In a separate terminal, invoke the locally running KCL function using `crossplane render` with provided example manifests. This demonstrates how to apply custom resources and compositions. ```shell # Then, in another terminal, call it with these example manifests $ crossplane render xr.yaml composition.yaml functions.yaml -r ``` ```yaml --- apiVersion: nopexample.org/v1 kind: XNopResource metadata: name: test-xrender --- apiVersion: eks.nobu.dev/v1beta kind: XNodepool metadata: annotations: crossplane.io/composition-resource-name: "" generateName: test-xrender- labels: crossplane.io/composite: test-xrender ownerReferences: - apiVersion: nopexample.org/v1 blockOwnerDeletion: true controller: true kind: XNopResource name: test-xrender uid: "" spec: parameters: autoscaling: - maxNodeCount: 1 minNodeCount: 1 clusterName: example-injections region: us-east-2 --- apiVersion: render.crossplane.io/v1beta1 kind: Result message: created resource ":XNodepool" severity: SEVERITY_NORMAL step: normal ``` -------------------------------- ### Install KCL Function to Cluster Source: https://github.com/crossplane-contrib/function-kcl/blob/main/README.md This command installs the KCL function to your Kubernetes cluster using kubectl. Ensure you have kubectl configured to point to your cluster. ```bash cat <