https://github.com/pmorie/federation-category-experiment
A small experiment in using resource categories for federation resources
https://github.com/pmorie/federation-category-experiment
Last synced: about 1 year ago
JSON representation
A small experiment in using resource categories for federation resources
- Host: GitHub
- URL: https://github.com/pmorie/federation-category-experiment
- Owner: pmorie
- License: apache-2.0
- Created: 2018-06-21T14:57:49.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-06-25T14:56:54.000Z (almost 8 years ago)
- Last Synced: 2025-02-17T19:16:43.853Z (over 1 year ago)
- Language: Go
- Homepage:
- Size: 34 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# federation-category-experiment
This repository is a place to explore use of categories to provide a good
experience for [federation-v2](https://github.com/kubernetes-sigs/federation-v2)
resources. This repository was created using
[kubebuilder](https://github.com/kubernetes-sigs/kubebuilder).
Categories are sets of arbitrary resources. Resources declare themselves to be
in categories; Kubernetes CRDs can declare themselves to have categories using
the `spec.names.categories` field:
```yaml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: federatedreplicasets.federation.pmorie.toy
spec:
group: federation.pmorie.toy
names:
categories:
- federation
kind: FederatedReplicaSet
plural: federatedreplicasets
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
type: object
status:
type: object
type: object
version: v1beta1
```
The `kubectl` tool can use categories for `get`:
```shell
$ k get federation --field-selector=metadata.name=my-rs --show-kind
NAME AGE
federatedreplicasetoverride.federation.pmorie.toy/my-rs 6m
NAME AGE
federatedreplicasetplacement.federation.pmorie.toy/my-rs 6m
NAME AGE
federatedreplicaset.federation.pmorie.toy/my-rs 6m
```
## Running this example
Install the CRDS as follows:
```shell
$ kubectl create -f crd.yaml
$ kubectl get crd
NAME CREATED AT
federatedreplicasetoverrides.federation.pmorie.toy 2018-06-22T15:07:26Z
federatedreplicasetplacements.federation.pmorie.toy 2018-06-22T15:07:26Z
federatedreplicasets.federation.pmorie.toy 2018-06-22T15:07:26Z
```
You can then create example resources using:
```shell
$ kubectl create -f example-resources.yaml
```
Now you can try out using categories with `kubectl`. Try:
```shell
$ kubectl get federation --field-selector=metadata.name=my-rs --show-kind
NAME AGE
federatedreplicaset.federation.pmorie.toy/my-rs 2d
NAME AGE
federatedreplicasetoverride.federation.pmorie.toy/my-rs 2d
NAME AGE
federatedreplicasetplacement.federation.pmorie.toy/my-rs 2d
```
and:
```shell
$ kubectl get federation --selector=app=my-federated-app --show-kind
NAME AGE
federatedreplicaset.federation.pmorie.toy/my-rs 2d
NAME AGE
federatedreplicasetoverride.federation.pmorie.toy/my-rs 2d
NAME AGE
federatedreplicasetplacement.federation.pmorie.toy/my-rs 2d
```