Add common Tasks to documentation (#5383)

* Add labels, annotations, namespaces, and names tasks

* Remove redundant information from ref/labels ref/annotations

* Update labels and annotations example names for consistency

* Remove name, prefix and suffix api examples

* Add link to tasks in reference

* Add link to tasks section for ref/configMapGenerator and ref/secretGenerator

* Add Labels/Annotatations headers

* Add Labels

* Add Template Labels

* Cleanup Add Template Labels

* Consolidate commonLabels and labels.includeSelectors

* Improve commonAnnotations example

* Add labels and annotations ref links

* Add generated ConfigMap to namespace example

* Add name headers

* Change header weights so they appear in sidebar

* Add namespace/name links

* Add generated ConfigMap to namePrefix example

* Add name propagation example

* Add more description of name propagation

* template labels

* Address feedback for labels

* Address names feedback

* Update for consistency

* Address feedback

* Remove API
This commit is contained in:
Nick
2023-11-25 12:34:10 -08:00
committed by GitHub
parent 0122aa82ef
commit bfb00ecb27
10 changed files with 547 additions and 531 deletions

View File

@@ -2,7 +2,295 @@
title: "Labels and Annotations"
linkTitle: "Labels and Annotations"
weight: 3
date: 2017-01-05
date: 2023-10-14
description: >
Working with Labels and Annotations
---
A common set of labels can be applied to all Resources in a project by adding a [`labels`] or [`commonLabels`] entry to the `kustomization.yaml` file. Similarly, a common set of annotations can be applied to Resources with the [`commonAnnotations`] field.
## Working with Labels
### Add Labels
[`labels`] can be used to add labels to the `metadata` field of all Resources in a project. This will override values for label keys that already exist.
Here is an example of how to add labels to the `metadata` field.
1. Create a Kustomization file.
```yaml
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
labels:
- pairs:
someName: someValue
owner: alice
app: bingo
resources:
- deploy.yaml
- service.yaml
```
2. Create Deployment and Service manifests.
```yaml
# deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
```
```yaml
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: example
```
3. Add labels with `kustomize build`.
```bash
kustomize build .
```
The output shows that the `labels` field is used to add labels to the `metadata` field of the Service and Deployment Resources.
```yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: bingo
owner: alice
someName: someValue
name: example
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: bingo
owner: alice
someName: someValue
name: example
```
### Add Template Labels
[`labels.includeTemplates`] can be used to add labels to the template field of all applicable Resources in a project.
Here is an example of how to add labels to the template field of a Deployment.
1. Create a Kustomization file.
```yaml
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
labels:
- pairs:
someName: someValue
owner: alice
app: bingo
includeTemplates: true
resources:
- deploy.yaml
- service.yaml
```
2. Create Deployment and Service manifests.
```yaml
# deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
```
```yaml
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: example
```
3. Add labels with `kustomize build`.
```bash
kustomize build .
```
The output shows that labels are added to the `metadata` field and the `labels.includeTemplates` field is used to add labels to the template field of the Deployment. However, the [Service] Resource does not have a template field, and Kustomize does not add this field.
```yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: bingo
owner: alice
someName: someValue
name: example
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: bingo
owner: alice
someName: someValue
name: example
spec:
template:
metadata:
labels:
app: bingo
owner: alice
someName: someValue
```
### Add Selector Labels
[`labels.includeSelectors`] can be used to add labels to the selector field of applicable Resources in a project. Note that this also adds labels to the template field for applicable Resources.
Labels added to the selector field should not be changed after Workload and Service Resources have been created in a cluster.
Here is an example of how to add labels to the selector field.
1. Create a Kustomization file.
```yaml
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
labels:
- pairs:
someName: someValue
owner: alice
app: bingo
includeSelectors: true
resources:
- deploy.yaml
- service.yaml
```
2. Create Deployment and Service manifests.
```yaml
# deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
```
```yaml
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: example
```
3. Add labels with `kustomize build`.
```bash
kustomize build .
```
The output shows that labels are added to the `metadata` field and the `labels.includeSelectors` field is used to add labels to the selector and template fields for applicable Resources. However, the [Service] Resource does not have a template field, and Kustomize does not add this field.
```yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: bingo
owner: alice
someName: someValue
name: example
spec:
selector:
app: bingo
owner: alice
someName: someValue
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: bingo
owner: alice
someName: someValue
name: example
spec:
selector:
matchLabels:
app: bingo
owner: alice
someName: someValue
template:
metadata:
labels:
app: bingo
owner: alice
someName: someValue
```
The following example produces the same result. The [`commonLabels`] field is equivalent to using [`labels.includeSelectors`].
```yaml
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
someName: someValue
owner: alice
app: bingo
resources:
- deploy.yaml
- service.yaml
```
## Working with Annotations
### Add Annotations
[`commonAnnotations`] can be used to add annotations to all Resources in a project. This will override values for annotations keys that already exist. Annotations are propagated to the Deployment Pod template.
Here is an example of how to add annotations to a Deployment.
1. Create a Kustomization file.
```yaml
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonAnnotations:
oncallPager: 800-867-5309
resources:
- deploy.yaml
```
2. Create a Deployment manifest.
```yaml
# deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
```
3. Add annotations with `kustomize build`.
```bash
kustomize build .
```
The output shows that the `commonAnnotations` field is used to add annotations to a Deployment.
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
annotations:
oncallPager: 800-867-5309
spec:
template:
metadata:
annotations:
oncallPager: 800-867-5309
```
[`labels`]: /docs/reference/api/kustomization-file/labels/
[`labels.includeTemplates`]: /docs/reference/api/kustomization-file/labels/
[`labels.includeSelectors`]: /docs/reference/api/kustomization-file/labels/
[`commonLabels`]: /docs/reference/api/kustomization-file/commonlabels/
[`commonAnnotations`]: /docs/reference/api/kustomization-file/commonannotations/
[Service]: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/