From 137a12b8e69067b71622097a0858f14865b6d563 Mon Sep 17 00:00:00 2001 From: Nima Kaviani <17132353+nimakaviani@users.noreply.github.com> Date: Tue, 18 Jun 2024 14:56:38 -0700 Subject: [PATCH] separate out the crossplane integration (#13) Signed-off-by: Nima Kaviani --- crossplane-integrations/README.md | 37 +++++++++++++++++++ .../crossplane-compositions.yaml | 0 .../s3/definition.yaml | 0 .../s3/general-purpose.yaml | 0 .../crossplane-providers.yaml | 0 .../crossplane-providers/provider-aws.yaml | 0 .../crossplane-providers/provider-config.yaml | 0 .../crossplane-providers/provider-secret.yaml | 0 .../crossplane.yaml | 0 ref-implementation/README.md | 24 ++++-------- 10 files changed, 44 insertions(+), 17 deletions(-) create mode 100644 crossplane-integrations/README.md rename {ref-implementation => crossplane-integrations}/crossplane-compositions.yaml (100%) rename {ref-implementation/crossplane-compositions/manifests => crossplane-integrations/crossplane-compositions}/s3/definition.yaml (100%) rename {ref-implementation/crossplane-compositions/manifests => crossplane-integrations/crossplane-compositions}/s3/general-purpose.yaml (100%) rename {ref-implementation => crossplane-integrations}/crossplane-providers.yaml (100%) rename {ref-implementation => crossplane-integrations}/crossplane-providers/provider-aws.yaml (100%) rename {ref-implementation => crossplane-integrations}/crossplane-providers/provider-config.yaml (100%) rename {ref-implementation => crossplane-integrations}/crossplane-providers/provider-secret.yaml (100%) rename {ref-implementation => crossplane-integrations}/crossplane.yaml (100%) diff --git a/crossplane-integrations/README.md b/crossplane-integrations/README.md new file mode 100644 index 0000000..4d1e182 --- /dev/null +++ b/crossplane-integrations/README.md @@ -0,0 +1,37 @@ +# Crossplane Integrations for Backstage + +`idpBuilder` is extensible to launch custom Crossplane patterns using package extensions. + +Please use the below command to deploy an IDP reference implementation with an Argo application for preparing up the setup for terraform integrations: + +```bash +idpbuilder create \ + --use-path-routing \ + --package-dir https://github.com/cnoe-io/stacks//ref-implementation \ + --package-dir https://github.com/cnoe-io/stacks//crossplane-integrations +``` +## What is installed? + +1. Crossplane Runtime +1. AWS providers +1. Basic Compositions + +This needs your credentials for this to work. Follow the Crossplane installation documentation on how to add your credentials. + +## Application with cloud resources. + +With this integration, we can deploy an application with cloud resources using Backstage templates from the reference implementation, together with Crossplane integrations. + +In this example, we will create an application with a S3 Bucket. + +Choose a template named `App with S3 bucket`, type `demo3` as the name, then choose a region to create this bucket in. + +Once you click the create button, you will have a very similar setup as the basic example. +The only difference is we now have a resource for a S3 Bucket which is managed by Crossplane. + +Note that Bucket is **not** created because Crossplane doesn't have necessary credentials to do so. +If you'd like it to actually create a bucket, update [the credentials secret file](crossplane-providers/provider-secret.yaml), then run `idpbuilder create --package-dir examples/ref-implementation`. + +In this example, we used Crossplane to provision resources, but you can use other cloud resource management tools such as Terraform instead. + +Regardless of your tool choice, concepts are the same. We use Backstage as the templating mechanism and UI for users, then use Kubernetes API with GitOps to deploy resources. diff --git a/ref-implementation/crossplane-compositions.yaml b/crossplane-integrations/crossplane-compositions.yaml similarity index 100% rename from ref-implementation/crossplane-compositions.yaml rename to crossplane-integrations/crossplane-compositions.yaml diff --git a/ref-implementation/crossplane-compositions/manifests/s3/definition.yaml b/crossplane-integrations/crossplane-compositions/s3/definition.yaml similarity index 100% rename from ref-implementation/crossplane-compositions/manifests/s3/definition.yaml rename to crossplane-integrations/crossplane-compositions/s3/definition.yaml diff --git a/ref-implementation/crossplane-compositions/manifests/s3/general-purpose.yaml b/crossplane-integrations/crossplane-compositions/s3/general-purpose.yaml similarity index 100% rename from ref-implementation/crossplane-compositions/manifests/s3/general-purpose.yaml rename to crossplane-integrations/crossplane-compositions/s3/general-purpose.yaml diff --git a/ref-implementation/crossplane-providers.yaml b/crossplane-integrations/crossplane-providers.yaml similarity index 100% rename from ref-implementation/crossplane-providers.yaml rename to crossplane-integrations/crossplane-providers.yaml diff --git a/ref-implementation/crossplane-providers/provider-aws.yaml b/crossplane-integrations/crossplane-providers/provider-aws.yaml similarity index 100% rename from ref-implementation/crossplane-providers/provider-aws.yaml rename to crossplane-integrations/crossplane-providers/provider-aws.yaml diff --git a/ref-implementation/crossplane-providers/provider-config.yaml b/crossplane-integrations/crossplane-providers/provider-config.yaml similarity index 100% rename from ref-implementation/crossplane-providers/provider-config.yaml rename to crossplane-integrations/crossplane-providers/provider-config.yaml diff --git a/ref-implementation/crossplane-providers/provider-secret.yaml b/crossplane-integrations/crossplane-providers/provider-secret.yaml similarity index 100% rename from ref-implementation/crossplane-providers/provider-secret.yaml rename to crossplane-integrations/crossplane-providers/provider-secret.yaml diff --git a/ref-implementation/crossplane.yaml b/crossplane-integrations/crossplane.yaml similarity index 100% rename from ref-implementation/crossplane.yaml rename to crossplane-integrations/crossplane.yaml diff --git a/ref-implementation/README.md b/ref-implementation/README.md index efa33cc..8f4705e 100644 --- a/ref-implementation/README.md +++ b/ref-implementation/README.md @@ -35,11 +35,10 @@ This will take ~6 minutes for everything to come up. To track the progress, you ### What was installed? 1. **Argo Workflows** to enable workflow orchestrations. -2. **Backstage** as the UI for software catalog and templating. Source is available [here](https://github.com/cnoe-io/backstage-app). -3. **Crossplane**, AWS providers, and basic compositions for deploying cloud related resources (needs your credentials for this to work) -4. **External Secrets** to generate secrets and coordinate secrets between applications. -5. **Keycloak** as the identity provider for applications. -6. **Spark Operator** to demonstrate an example Spark workload through Backstage. +1. **Backstage** as the UI for software catalog and templating. Source is available [here](https://github.com/cnoe-io/backstage-app). +1. **External Secrets** to generate secrets and coordinate secrets between applications. +1. **Keycloak** as the identity provider for applications. +1. **Spark Operator** to demonstrate an example Spark workload through Backstage. If you don't want to install a package above, you can remove the ArgoCD Application file corresponding to the package you want to remove. For example, if you want to remove Spark Operator, you can delete [this file](./spark-operator.yaml). @@ -137,19 +136,10 @@ Back in the entity page, you can view more details about Spark jobs by navigatin ## Application with cloud resources. -Similar to the above, we can deploy an application with cloud resources using Backstage templates. -In this example, we will create an application with a S3 Bucket. +To deploy cloud resources, you can follow any of the instructions below: -Choose a template named `App with S3 bucket`, type `demo3` as the name, then choose a region to create this bucket in. - -Once you click the create button, you will have a very similar setup as the basic example. -The only difference is we now have a resource for a S3 Bucket which is managed by Crossplane. - -Note that Bucket is **not** created because Crossplane doesn't have necessary credentials to do so. -If you'd like it to actually create a bucket, update [the credentials secret file](crossplane-providers/provider-secret.yaml), then run `idpbuilder create --package-dir examples/ref-implementation`. - -In this example, we used Crossplane to provision resources, but you can use other cloud resource management tools such as Terraform instead. -Regardless of your tool choice, concepts are the same. We use Backstage as the templating mechanism and UI for users, then use Kubernetes API with GitOps to deploy resources. +- [Cloud resource deployments via Crossplane](../crossplane-integrations/) +- [Cloud resource deployments via Terraform](../terraform-integrations/) ## Notes