{"id":24638058,"url":"https://github.com/upbound/platform-ref-cloud-native","last_synced_at":"2025-07-08T12:33:17.778Z","repository":{"id":48976975,"uuid":"356407605","full_name":"upbound/platform-ref-cloud-native","owner":"upbound","description":"The Cloud Native reference platform","archived":false,"fork":false,"pushed_at":"2024-01-22T21:48:49.000Z","size":33,"stargazers_count":8,"open_issues_count":1,"forks_count":9,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-05-08T07:41:00.922Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/upbound.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-09T21:59:45.000Z","updated_at":"2023-04-25T07:09:34.000Z","dependencies_parsed_at":"2025-03-20T09:34:29.030Z","dependency_job_id":"ba53127e-3241-4dc7-8c45-d54c6c327014","html_url":"https://github.com/upbound/platform-ref-cloud-native","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/upbound/platform-ref-cloud-native","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upbound%2Fplatform-ref-cloud-native","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upbound%2Fplatform-ref-cloud-native/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upbound%2Fplatform-ref-cloud-native/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upbound%2Fplatform-ref-cloud-native/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/upbound","download_url":"https://codeload.github.com/upbound/platform-ref-cloud-native/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/upbound%2Fplatform-ref-cloud-native/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264270232,"owners_count":23582415,"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":[],"created_at":"2025-01-25T10:12:53.979Z","updated_at":"2025-07-08T12:33:17.725Z","avatar_url":"https://github.com/upbound.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloud Native Reference Platform\n\nThis reference platform `Configuration` for Cloud Native applications and platform services is a\nstarting point to build, run, and operate your own internal cloud platform and offer a self-service\nconsole and API to your internal teams.\n\nIt provides platform APIs to provision fully configured workload clusters, with secure networking\nand a complete set of platform services that provide the foundation for running cloud native\napplications.  This is a good example of how a platform team may provide a complete platform for\ncloud native applications to run on, which includes continuous deployment, monitoring, metrics,\nlogging, etc.\n\nThe application team simply has to request a \"cloud native platform\" cluster through this\ndeclarative platform API and they'll be ready to deploy their workloads to a complete platform in no\ntime.\n\n## Quick Start\n\n### Platform Ops/SRE: Run your own internal cloud platform\n\nThere are two ways to run Universal Crossplane:\n\n1. Hosted on Upbound Cloud\n1. Self-hosted on any Kubernetes cluster.\n\nTo provision the GCP Reference platform, you can pick the option that is best for you. \n\nWe'll go through each option in the next sections.\n\n### Upbound Cloud Hosted UXP Control Plane\n\nHosted Control planes are run on Upbound's cloud infrastructure and provide a restricted\nKubernetes API endpoint that can be accessed via `kubectl` or CI/CD systems.\n\n#### Create a free account in Upbound Cloud\n\n1. Sign up for [Upbound Cloud](https://cloud.upbound.io/register).\n1. When you first create an Upbound Account, you can create an Organization\n\n#### Create a Hosted UXP Control Plane in Upbound Cloud\n\n1. Create a `Control Plane` in Upbound Cloud (e.g. dev, staging, or prod).\n1. Connect `kubectl` to your `Control Plane` instance.\n   * Click on your Control Plane\n   * Select the *Connect Using CLI*\n   * Paste the commands to configure your local `kubectl` context\n   * Test your connectivity by running `kubectl -n upbound-system get pods`\n\n#### Installing UXP on a Kubernetes Cluster\n\nThe other option is installing UXP into a Kubernetes cluster you manage using `up`, which\nis the official CLI for interacting with Upbound Cloud and Universal Crossplane (UXP).\n\nThere are multiple ways to [install up](https://cloud.upbound.io/docs/cli/#install-script),\nincluding Homebrew and Linux packages.\n\n```console\ncurl -sL https://cli.upbound.io | sh\n```\n\nEnsure that your kubectl context is pointing to the correct cluster:\n\n```console\nkubectl config current-context\n```\n\nInstall UXP into the `upbound-system` namespace:\n\n```console\nup uxp install\n```\n\nValidate the install using the following command:\n\n```console\nkubectl -n upbound-system get all\n```\n\n#### Install the Crossplane kubectl extension (for convenience)\n\nNow that your kubectl context is configured to connect to a UXP Control Plane,\nwe can install this reference platform as a Crossplane package.\n\n\n```console\ncurl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh\ncp kubectl-crossplane /usr/local/bin\n```\n\n#### Install the Platform Configuration\n\n```console\nPLATFORM_VERSION=v0.0.3\nPLATFORM_CONFIG=registry.upbound.io/upbound/platform-ref-cloud-native:${PLATFORM_VERSION}\n\nkubectl crossplane install configuration ${PLATFORM_CONFIG}\nkubectl get pkg\n```\n\n#### GCP Provider Setup\n\nSet up your GCP account keyfile by following the instructions on:\nhttps://crossplane.io/docs/v1.0/getting-started/install-configure.html#select-provider\n\nEnsure that the following roles are added to your service account:\n\n* `roles/compute.networkAdmin`\n* `roles/container.admin`\n* `roles/iam.serviceAccountUser`\n\nThen create the secret using the given `creds.json` file:\n\n```console\nkubectl -n upbound-system create secret generic gcp-creds --from-file=key=./creds.json\n```\n\nCreate the `ProviderConfig`, ensuring to set the `projectID` to your specific GCP project:\n\n```console\nkubectl apply -f examples/provider-default-gcp.yaml\n```\n\n#### Invite App Teams to you Organization in Upbound Cloud\n\n1. Create a Team `team1`.\n1. Invite app team members and grant access to `Control Planes` and `Repositories`.\n\n### App Dev/Ops: Consume the infrastructure you need using kubectl\n\n#### Join your Organization in Upbound Cloud\n\n1. **Join** your [Upbound Cloud](https://cloud.upbound.io/register)\n   `Organization`\n1. Verify access to your team `Control Planes` and Registries\n\n#### Provision a Cloud Native platform cluster in your team Workspace GUI console\n\n1. Provision a `Cluster` using the custom generated GUI for your\nPlatform `Configuration`\n\n```console\nkubectl -n upbound-system apply -f examples/cluster-gcp.yaml\n\n```\n\n1. View status / details of the managed resources created for your claim:\n\n```console\nkubectl get managed\n```\n\n1. Check status of your claim:\n\n```console\nkubectl -n upbound-system get clusterclaim\n```\n\n### Cleanup \u0026 Uninstall\n\n#### Cleanup Resources\n\nThere are 2 options to delete resources created through the `Workspace` GUI:\n\n* From the `Workspace` GUI using the ellipsis menu in the resource view.\n* Using `kubectl delete -n team1 \u003cclaim-name\u003e`.\n\nVerify all underlying resources have been cleanly deleted:\n\n```console\nkubectl get managed\n```\n\n#### Uninstall Provider \u0026 Platform Configuration\n\n```console\nkubectl delete configurations.pkg.crossplane.io platform-ref-cloud-native\nkubectl delete providers.pkg.crossplane.io provider-gcp\nkubectl delete providers.pkg.crossplane.io provider-helm\n```\n\n## APIs in this Configuration\n\n* `Cluster` - provision a fully configured Kubernetes cluster\n  * [definition.yaml](cluster/definition.yaml)\n  * [composition.yaml](cluster/composition.yaml) includes (transitively):\n    * `GKECluster`\n    * `NodePool`\n    * `Network`\n    * `Subnetwork`\n    * `HelmReleases` for Prometheus, Jaeger, Fluentd, Rook, and Flux platform services.\n* `Network` - fabric for a `Cluster` to securely connect the control plane, pods, and services\n  * [definition.yaml](network/definition.yaml)\n  * [composition.yaml](network/composition.yaml) includes:\n\n## Customize for your Organization\n\nCreate a `Repository` called `platform-ref-cloud-native` in your Upbound Cloud `Organization`.\n\nSet these to match your settings:\n\n```console\nUPBOUND_ORG=acme\nUPBOUND_ACCOUNT_EMAIL=me@acme.io\nREPO=platform-ref-cloud-native\nVERSION_TAG=v0.0.3\nREGISTRY=registry.upbound.io\nPLATFORM_CONFIG=${REGISTRY:+$REGISTRY/}${UPBOUND_ORG}/${REPO}:${VERSION_TAG}\n```\n\nClone the GitHub repo.\n\n```console\ngit clone https://github.com/upbound/platform-ref-cloud-native.git\ncd platform-ref-cloud-native\n```\n\nLogin to your container registry.\n\n```console\ndocker login ${REGISTRY} -u ${UPBOUND_ACCOUNT_EMAIL}\n```\n\nBuild package.\n\n```console\nup xpkg build --name package.xpkg --ignore \".github/*,.github/*/*,examples/*,hack/*\"\n```\n\nPush package to registry.\n\n```console\nup xpkg build push ${PLATFORM_CONFIG} -f package.xpkg\n```\n\nInstall package into an Upbound `Platform` instance.\n\n```console\nkubectl crossplane install configuration ${PLATFORM_CONFIG}\n```\n\nTo learn more see [Configuration\nPackages](https://crossplane.io/docs/v0.14/getting-started/package-infrastructure.html).\n\n## Learn More\n\nIf you're interested in building your own reference platform for your company,\nwe'd love to hear from you and chat. You can setup some time with us at\ninfo@upbound.io.\n\nFor Crossplane questions, drop by [slack.crossplane.io](https://slack.crossplane.io), and say hi!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupbound%2Fplatform-ref-cloud-native","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fupbound%2Fplatform-ref-cloud-native","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fupbound%2Fplatform-ref-cloud-native/lists"}