Skip to content

Commit 08244bf

Browse files
committed
Addressing review comments
1 parent f06ebe7 commit 08244bf

File tree

1 file changed

+48
-22
lines changed

1 file changed

+48
-22
lines changed

docs/design/proposals/labels.md

Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,43 +29,69 @@ This aligns with the common Kubernetes practice of using labels for discovery an
2929
We will introduce the following new labels, which will be defined in `@pkg/metadata/labels.go`:
3030

3131
1. **Label for an instance being reconciled:**
32-
- **Proposed Label:** `kro.run/reconciled-by`
33-
- **Value:** The name of the ResourceGraphDefinition (e.g., `my-rgd-name`).
34-
- **Purpose:** To indicate that an instance is being actively reconciled against a specific RGD. This label will be applied to the instance itself.
35-
- **Alternative Names:** `kro.run/reconciling-rgd`, `kro.run/template`.
32+
- **Existing Labels:**
33+
- kro.run/resource-graph-definition-id: 761e8fb7-14d5-4da1-b4f9-0a16fc334d6c
34+
- kro.run/resource-graph-definition-name: check-instance-creation
35+
- Conflicts with label used in creation path for nested RGD (https://github.com/kro-run/kro/pull/631)
36+
- **Proposed Label:**
37+
- `kro.run/reconciled-by-rgd`
38+
- **Value:** The name of the ResourceGraphDefinition (e.g., `my-rgd-name`).
39+
- **Purpose:** To indicate that an instance is being actively reconciled against a specific RGD. This label will be applied to the instance itself.
40+
- **Alternative Names:**
41+
- `kro.run/reconciling-rgd`
42+
- `kro.run/template`
3643

3744
2. **Label for resources created during instance reconciliation:**
38-
- **Proposed Label:** `kro.run/created-by`
39-
- **Value:** The name of the ResourceGraphDefinition (e.g., `my-rgd-name`).
40-
- **Purpose:** To identify which RGD was used as a template to create a resource during the reconciliation of an instance. This label will be applied to all resources created by the instance controller.
41-
- **Alternative Names:** `kro.run/managed-by-rgd`, `kro.run/owner-rgd`, `kro.run/template-rgd`. The `managed-by` label is a common pattern in the Kubernetes ecosystem.
45+
- **Existing Labels:**
46+
- kro.run/resource-graph-definition-id: 761e8fb7-14d5-4da1-b4f9-0a16fc334d6c
47+
- kro.run/resource-graph-definition-name: check-instance-creation
48+
- **Proposed Label:**
49+
- `kro.run/defined-by-rgd`
50+
- **Value:** The name of the ResourceGraphDefinition (e.g., `my-rgd-name`).
51+
- **Purpose:** To identify which RGD was used as a template to create a resource during the reconciliation of an instance. This label will be applied to all resources created by the instance controller.
52+
- **Alternative Names:**
53+
- kro.run/created-by-rgd
54+
- kro.run/managed-by-rgd
55+
- kro.run/owner-rgd
56+
- kro.run/template-rgd
4257

4358
3. **Labels for resources to link back to the instance:**
44-
- **Proposed Labels:**
45-
- `kro.run/managed-by-instance-group`: The API group of the instance (e.g., `mygroup.example.com`).
46-
- `kro.run/managed-by-instance-kind`: The kind of the instance (e.g., `MyKind`).
47-
- `kro.run/managed-by-instance-namespace`: The namespace of the instance (e.g., `default`).
48-
- `kro.run/managed-by-instance-name`: The name of the instance (e.g., `my-instance`).
49-
- The `managed-by` label is a common pattern in the Kubernetes ecosystem.
50-
- **Purpose:** To provide a direct and queryable link from a created resource back to the instance that caused its creation. This set of labels uniquely identifies the instance.
51-
- **Alternative Name prefix:** `kro.run/owner-`, `kro.run/created-by-`, etc.
59+
- **Existing Label:**
60+
- kro.run/instance-id: 6e6a1d95-4855-4062-b51b-8f288cb96365
61+
- kro.run/instance-name: test-instance
62+
- kro.run/instance-namespace: default
63+
- **Proposed Labels:**
64+
- `kro.run/managed-by-instance-group`: The API group of the instance (e.g., `mygroup.example.com`).
65+
- `kro.run/managed-by-instance-kind`: The kind of the instance (e.g., `MyKind`).
66+
- `kro.run/managed-by-instance-namespace`: The namespace of the instance (e.g., `default`).
67+
- `kro.run/managed-by-instance-name`: The name of the instance (e.g., `my-instance`).
68+
- The `managed-by` label is a common pattern in the Kubernetes ecosystem.
69+
- **Purpose:** To provide a direct and queryable link from a created resource back to the instance that caused its creation. This set of labels uniquely identifies the instance.
70+
- **Alternative Name prefix:**
71+
- `kro.run/owner-`
72+
- `kro.run/created-by-`
5273

5374
## Other solutions considered
5475

55-
We could continue using the existing labels, but their purpose is not as explicit for relationship tracking, which can lead to confusion for users and client tools. We could also use annotations, but labels are better suited for this purpose as they are queryable via the Kubernetes API, which is a key requirement for observability and tooling.
76+
1. We could continue using the existing labels, but their purpose is not as explicit for relationship tracking, which can lead to confusion for users and client tools.
77+
2. We could also use annotations, but labels are better suited for this purpose as they are queryable via the Kubernetes API, which is a key requirement for observability and tooling.
5678

5779
## Scoping
5880

5981
#### What is in scope for this proposal?
6082

61-
- Defining and adding the new labels to the KRO API.
62-
- Updating the instance controller to apply these labels to instances and created resources during reconciliation.
63-
- Updating the official KRO documentation to reflect the new labels and their usage.
83+
- Defining and adding the new labels to the KRO API.
84+
- Updating the instance controller to apply these labels to instances and created resources during reconciliation.
85+
- Updating the official KRO documentation to reflect the new labels and their usage.
86+
- Adding docs reflecting the new labels. Old labels would not be documented.
87+
- Deprecate old labels in next minor release or the one after that.
6488

6589
#### What is not in scope?
6690

67-
- Removing or deprecating the existing labels. This could be considered in a future proposal to maintain backward compatibility.
68-
- Changing how KRO uses annotations.
91+
- Changing how KRO uses annotations.
92+
- Changing these existing labels:
93+
- kro.run/kro-version: v0.4.0
94+
- kro.run/owned: "true"
6995

7096
## Testing strategy
7197

0 commit comments

Comments
 (0)