{"id":27959146,"url":"https://github.com/datalayer-examples/crossplane-example","last_synced_at":"2025-05-07T18:28:56.188Z","repository":{"id":183233650,"uuid":"366339948","full_name":"datalayer-examples/crossplane-example","owner":"datalayer-examples","description":"Curated example for Crossplane on Google Cloud.","archived":false,"fork":false,"pushed_at":"2023-08-28T08:41:10.000Z","size":147,"stargazers_count":8,"open_issues_count":1,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-14T10:17:26.139Z","etag":null,"topics":["crossplane","examples","kubernetes"],"latest_commit_sha":null,"homepage":"https://datalayer.blog/post/2021/05/16/crossplane-by-example","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datalayer-examples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-05-11T10:17:49.000Z","updated_at":"2024-02-28T17:34:45.000Z","dependencies_parsed_at":"2023-07-23T16:01:48.791Z","dependency_job_id":null,"html_url":"https://github.com/datalayer-examples/crossplane-example","commit_stats":null,"previous_names":["datalayer-examples/crossplane-example"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalayer-examples%2Fcrossplane-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalayer-examples%2Fcrossplane-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalayer-examples%2Fcrossplane-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datalayer-examples%2Fcrossplane-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datalayer-examples","download_url":"https://codeload.github.com/datalayer-examples/crossplane-example/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252933459,"owners_count":21827511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crossplane","examples","kubernetes"],"created_at":"2025-05-07T18:28:55.584Z","updated_at":"2025-05-07T18:28:56.165Z","avatar_url":"https://github.com/datalayer-examples.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Datalayer](https://assets.datalayer.design/datalayer-25.svg)](https://datalayer.io)\n\n# Crossplane Examples\n\n\u003cimg src=\"./static/images/crossplane.svg\" width=\"300\"/\u003e\n\nThis repository showcases different usecase for [Crossplane](https://crossplane.io) on top of [Google Cloud](https://cloud.google.com). It aims to complement the official [Crossplane documentation](https://crossplane.io/docs) to give step-by-step examples to deploy infrastructure and services on [Google Cloud](https://cloud.google.com). It focuses on GCP but can be applied to other clouds like [Amazon](https://aws.amazon.com), [Azure](https://azure.microsoft.com)...\n\nYou can read more context about Crossplane on the companion blog post [Crossplane by example](https://datalayer.blog/2021/05/16/crossplane-by-example).\n\n\u003e Ensure you have credits to spend on GCloud to run these examples.\n\nWe have a first section with use case like settting-up the environment, deploying managed and composite resources as helm chart... We also have a second section where we build a custom React.js user interface interacting with a managed database.\n\nWe are trying to stick to some definitions:\n\n- `Control cluster`: The Kubernetes cluster that hosts the Crossplane operator, in our case a [Kind](https://kind.sigs.k8s.io) cluster.\n- `Managed resources`: The managed infrastructure like Kubernetes clusters, databases, IAM roles... created by the Control cluster and running in the cloud.\n- `Workload cluster`: The Kubernetes managed clusters created by the Control cluster and running in the cloud.\n\n## Use Cases\n\nYou are expected to start from step 1 and follow-up step by step until the end. If you jump directly to a specific step, ensure your environment, including the shell environment variables, are set as expected.\n\nStep 1: [Create GCloud Project](./docs/01-gcloud-project.md).\n\nStep 2: [Create a Control Cluster](./docs/02-control-cluster.md).\n\nStep 3: [Create a GCP Provider on the Control Cluster](./docs/03-gcp-provider.md)\n\nStep 4: [Create GCP managed Resources](./docs/04-managed.md).\n\nStep 5: [Deploy Helm Releases](./docs/05-helm.md).\n\nStep 6: [Deploy a Composition](./docs/06-composition.md).\n\nStep 7: [Deploy a Reference Platform](./docs/07-ref-platform.md).\n\nStep 8: [Deploy a Wordpress Cluster](./docs/08-wordpress-cluster.md).\n\nStep 9: [Destroy](./docs/09-destroy.md).\n\nHow to [Troubleshoot](./docs/10-troubleshoot.md) if needed, hopefully not too much.\n\n## Custom Web User Interface\n\nBuild and deploy a UI to insert and view a list of rows from a Postgresql table deployed on GCP. Follow [these instructions](./docs/example-ui.md) to get the following UI in your browser.\n\n\u003cimg src=\"./static/images/users.png\" style=\"max-width: 800px\"/\u003e\n\n## Bare Minimum Setup\n\nAssuming you have a [created a GCloud project](./docs/01-gcloud-project.md) and [created a Control cluster](./docs/02-control-cluster.md), the bare minimun to run is the following.\n\n```bash\n./sbin/create-kind.sh\n./sbin/crossplane-gcp-min.sh \u003cYOUR_RANDOM_PROJECT_NUMBER\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatalayer-examples%2Fcrossplane-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatalayer-examples%2Fcrossplane-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatalayer-examples%2Fcrossplane-example/lists"}