From c4dd7220e7d92d764a408e0ca005d2b4224bf284 Mon Sep 17 00:00:00 2001 From: Nima Kaviani Date: Tue, 18 Jun 2024 00:09:24 -0700 Subject: [PATCH 1/3] separate out the crossplane integration 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..4bc71ea --- /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 implemenation, 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 From 98ca15b9d1a1575e606f94c7be4dd7e96c6d0fd4 Mon Sep 17 00:00:00 2001 From: Nima Kaviani Date: Tue, 18 Jun 2024 14:42:19 -0700 Subject: [PATCH 2/3] fix typos Signed-off-by: Nima Kaviani --- crossplane-integrations/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crossplane-integrations/README.md b/crossplane-integrations/README.md index 4bc71ea..4d1e182 100644 --- a/crossplane-integrations/README.md +++ b/crossplane-integrations/README.md @@ -1,6 +1,6 @@ # Crossplane Integrations for Backstage -`idpBuilder` is extensible to launch custom crossplane patterns using package extensions. +`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: @@ -16,11 +16,11 @@ idpbuilder create \ 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. +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 implemenation, together with Crossplane integrations. +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. From b78a54f9e406f16336b945513b6b906e23798268 Mon Sep 17 00:00:00 2001 From: Nima Kaviani Date: Tue, 9 Jul 2024 11:38:55 -0700 Subject: [PATCH 3/3] adding a generic contribution guide Signed-off-by: Nima Kaviani --- CONTRIBUTING.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..fd4652c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,51 @@ +# Contributing Guidelines + +Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional +documentation, we greatly value feedback and contributions from our community. + +Please read through this document before submitting any issues or pull requests to ensure we have all the necessary +information to effectively respond to your bug report or contribution. + +## Reporting Bugs/Feature Requests + +We welcome you to use the GitHub issue tracker to report bugs or suggest features. + +When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already +reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: + +- A reproducible test case or series of steps +- The version of our code being used +- Any modifications you've made relevant to the bug +- Anything unusual about your environment or deployment + +## Contributing via Pull Requests + +Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: + +1. You are working against the latest source on the _main_ branch. +2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. +3. You open an issue to discuss any significant work - we would hate for your time to be wasted. + +To send us a pull request, please: + +1. Fork the repository. +2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. +3. Ensure local tests pass. +4. Commit to your fork using clear commit messages. +5. Send us a pull request, answering any default questions in the pull request interface. +6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. + +GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and +[creating a pull request](https://help.github.com/articles/creating-a-pull-request/). + +## Finding contributions to work on + +Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start. + +## Security issue notifications + +If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. + +## Licensing + +See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution.