Annotations são declaradas de maneira semelhante aos labels mas servem para um propósito diferente. Elas representam pares chave-valor que fornecem metadados descritivos. A diferença mais importante entre labels e annotations é que as annotations não podem ser utilizadas para consulta e seleção de objetos. Exemplos típicos de annotations são hashes de commits, informações de release e contato do owner do objeto. Se a annotation possuir caracteres especiais ou espaços coloque-a entre aspas simples ou aspas duplas.
Figure 6-3. Pod with annotations
O comando kubectl run
não fornece uma opção para definir annotations como faz para os labels. É preciso adicionar as annotations no manifesto YAML sob a seção metadata.annotations.
apiVersion: v1
kind: Pod
metadata:
name: annotated-pod
annotations:
commit: 866a8dc
author: 'Benjamin Muschko'
branch: 'bm/bugfix'
spec:
containers:
- image: nginx
name: nginx
Podemos utilizar os comandos describe
e/ou get
para recuperar as annotations criadas no manifesto do Pod.
# Buscando Annotations com o comando Describe
$ kubectl describe pod annotated-pod | grep -C 2 Annotations:
...
Annotations: author: Benjamin Muschko
branch: bm/bugfix
commit: 866a8dc
...
# Buscando Annotations com o comando Get
$ kubectl get pod annotated-pod -o yaml | grep -C 3 annotations:
metadata:
annotations:
author: Benjamin Muschko
branch: bm/bugfix
commit: 866a8dc
O comando kubectl annotate
é utilizado para adicionar, remover ou alterar annotations assim como o comando kubectl label
faz para os labels.
# Adiciona uma annotation ao Pod
$ kubectl annotate pod annotated-pod oncall='800-555-1212'
pod/annotated-pod annotated
# Sobrescreve uma annotation do Pod
$ kubectl annotate pod annotated-pod oncall='800-555-2000' --overwrite
pod/annotated-pod annotated
# Remove uma annotation do Pod
$ kubectl annotate pod annotated-pod oncall-
pod/annotated-pod annotated