{"id":18589407,"url":"https://github.com/pmorie/federation-category-experiment","last_synced_at":"2025-05-16T08:08:04.769Z","repository":{"id":138121295,"uuid":"138185376","full_name":"pmorie/federation-category-experiment","owner":"pmorie","description":"A small experiment in using resource categories for federation resources","archived":false,"fork":false,"pushed_at":"2018-06-25T14:56:54.000Z","size":35689,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-17T19:16:43.853Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/pmorie.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":"2018-06-21T14:57:49.000Z","updated_at":"2018-07-02T05:28:20.000Z","dependencies_parsed_at":"2023-03-17T02:12:29.824Z","dependency_job_id":null,"html_url":"https://github.com/pmorie/federation-category-experiment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmorie%2Ffederation-category-experiment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmorie%2Ffederation-category-experiment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmorie%2Ffederation-category-experiment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmorie%2Ffederation-category-experiment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pmorie","download_url":"https://codeload.github.com/pmorie/federation-category-experiment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254493385,"owners_count":22080127,"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":"2024-11-07T00:51:57.598Z","updated_at":"2025-05-16T08:07:59.752Z","avatar_url":"https://github.com/pmorie.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# federation-category-experiment\n\nThis repository is a place to explore use of categories to provide a good\nexperience for [federation-v2](https://github.com/kubernetes-sigs/federation-v2)\nresources. This repository was created using\n[kubebuilder](https://github.com/kubernetes-sigs/kubebuilder).\n\nCategories are sets of arbitrary resources. Resources declare themselves to be\nin categories; Kubernetes CRDs can declare themselves to have categories using\nthe `spec.names.categories` field:\n\n```yaml\napiVersion: apiextensions.k8s.io/v1beta1\nkind: CustomResourceDefinition\nmetadata:\n  name: federatedreplicasets.federation.pmorie.toy\nspec:\n  group: federation.pmorie.toy\n  names:\n    categories:\n    - federation\n    kind: FederatedReplicaSet\n    plural: federatedreplicasets\n  scope: Namespaced\n  validation:\n    openAPIV3Schema:\n      properties:\n        apiVersion:\n          type: string\n        kind:\n          type: string\n        metadata:\n          type: object\n        spec:\n          type: object\n        status:\n          type: object\n      type: object\n  version: v1beta1\n```\n\nThe `kubectl` tool can use categories for `get`:\n\n```shell\n$ k get federation --field-selector=metadata.name=my-rs --show-kind                                      \nNAME                                                      AGE\nfederatedreplicasetoverride.federation.pmorie.toy/my-rs   6m\n                                                    \nNAME                                                       AGE                                           \nfederatedreplicasetplacement.federation.pmorie.toy/my-rs   6m\n                                                    \nNAME                                              AGE\nfederatedreplicaset.federation.pmorie.toy/my-rs   6m\n```\n\n## Running this example\n\nInstall the CRDS as follows:\n\n```shell\n$ kubectl create -f crd.yaml\n\n$ kubectl get crd\nNAME                                                  CREATED AT\nfederatedreplicasetoverrides.federation.pmorie.toy    2018-06-22T15:07:26Z\nfederatedreplicasetplacements.federation.pmorie.toy   2018-06-22T15:07:26Z\nfederatedreplicasets.federation.pmorie.toy            2018-06-22T15:07:26Z\n```\n\nYou can then create example resources using:\n\n```shell\n$ kubectl create -f example-resources.yaml\n```\n\nNow you can try out using categories with `kubectl`. Try:\n\n```shell\n$ kubectl get federation --field-selector=metadata.name=my-rs --show-kind\nNAME                                              AGE\nfederatedreplicaset.federation.pmorie.toy/my-rs   2d\n\nNAME                                                      AGE\nfederatedreplicasetoverride.federation.pmorie.toy/my-rs   2d\n\nNAME                                                       AGE\nfederatedreplicasetplacement.federation.pmorie.toy/my-rs   2d\n```\n\nand:\n\n```shell\n$ kubectl get federation --selector=app=my-federated-app --show-kind\nNAME                                              AGE\nfederatedreplicaset.federation.pmorie.toy/my-rs   2d\n\nNAME                                                      AGE\nfederatedreplicasetoverride.federation.pmorie.toy/my-rs   2d\n\nNAME                                                       AGE\nfederatedreplicasetplacement.federation.pmorie.toy/my-rs   2d\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmorie%2Ffederation-category-experiment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmorie%2Ffederation-category-experiment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmorie%2Ffederation-category-experiment/lists"}