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. 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