Introdução
Neste laboratório, exploraremos o comando kubectl annotate, uma ferramenta poderosa utilizada no Kubernetes para adicionar ou modificar anotações de metadados em recursos Kubernetes. As anotações são usadas para anexar metadados arbitrários aos recursos Kubernetes na forma de pares chave-valor, e podem ser usadas para armazenar informações adicionais sobre um recurso que podem não ser usadas pelo próprio sistema Kubernetes, mas podem ser utilizadas por ferramentas ou processos externos.
Ao longo deste laboratório, começaremos com exemplos simples e gradualmente avançaremos para casos de uso mais complexos do comando kubectl annotate, demonstrando sua versatilidade e utilidade em vários cenários.
Pré-requisitos
- Uma compreensão básica dos conceitos e comandos do Kubernetes.
- Um cluster Kubernetes configurado com
kubectlinstalado e configurado.
Iniciar o Cluster Minikube
Antes de criar recursos, você precisa de um cluster Kubernetes em execução. Minikube é um ambiente Kubernetes leve que roda em sua máquina local.
Navegue para o seu diretório de trabalho:
Abra o terminal e navegue para a pasta do projeto padrão:
cd /home/labex/projectIniciar Minikube:
Inicie o Minikube para inicializar um cluster Kubernetes:
minikube start- Este comando configura um cluster Kubernetes de nó único em sua máquina local.
- O Minikube pode levar alguns minutos para iniciar, dependendo do desempenho do seu sistema.
Verifique se o Minikube está em execução:
Verifique o status do cluster Minikube:
minikube status- Procure por componentes como
kubeleteapiserverlistados comoRunning. - Se o cluster não estiver em execução, execute novamente
minikube start.
- Procure por componentes como
Se você encontrar problemas ao iniciar o Minikube. Use minikube delete para redefinir o ambiente, se necessário.
Explorar o Comando kubectl annotate
O comando kubectl annotate é usado para atualizar ou remover anotações em recursos Kubernetes. As anotações são pares chave-valor que armazenam metadados, que podem incluir strings arbitrárias ou JSON estruturado. Elas são úteis para que ferramentas e extensões armazenem seus dados.
Execute o seguinte comando para visualizar as opções disponíveis para kubectl annotate:
kubectl annotate -h
Você verá a seguinte saída:
Update the annotations on one or more resources.
All Kubernetes objects support the ability to store additional data with the object as annotations. Annotations are
key/value pairs that can be larger than labels and include arbitrary string values such as structured JSON. Tools and
system extensions may use annotations to store their own data.
Attempting to set an annotation that already exists will fail unless --overwrite is set. If --resource-version is
specified and does not match the current resource version on the server the command will fail.
Use "kubectl api-resources" for a complete list of supported resources.
Examples:
## Update pod 'foo' with the annotation 'description' and the value 'my frontend'
## If the same annotation is set multiple times, only the last value will be applied
kubectl annotate pods foo description='my frontend'
## Update a pod identified by type and name in "pod.json"
kubectl annotate -f pod.json description='my frontend'
## Update pod 'foo' with the annotation 'description' and the value 'my frontend running nginx', overwriting any
existing value
kubectl annotate --overwrite pods foo description='my frontend running nginx'
## Update all pods in the namespace
kubectl annotate pods --all description='my frontend running nginx'
## Update pod 'foo' only if the resource is unchanged from version 1
kubectl annotate pods foo description='my frontend running nginx' --resource-version=1
## Update pod 'foo' by removing an annotation named 'description' if it exists
## Does not require the --overwrite flag
kubectl annotate pods foo description-
Anotar um Pod com um Único Par Chave-Valor
Nesta etapa, começaremos com um exemplo simples de como anotar um Pod com um único par chave-valor usando o comando kubectl annotate.
- Crie um arquivo chamado
pod.yamlno diretório/home/labex/projectcom o seguinte conteúdo:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: nginx
image: nginx
Crie o Pod com o seguinte comando:
kubectl apply -f pod.yaml
- Use o comando
kubectl annotatepara adicionar uma anotação ao Pod:
kubectl annotate pod my-pod my-annotation-key=my-annotation-value
- Verifique se a anotação foi adicionada ao Pod:
kubectl describe pod my-pod | grep Annotations
Você deve ver a anotação my-annotation-key com o valor my-annotation-value na saída.
Anotar um Pod com Múltiplos Pares Chave-Valor
Nesta etapa, exploraremos como adicionar múltiplas anotações a um Pod usando o comando kubectl annotate.
- Use o comando
kubectl annotatepara adicionar múltiplas anotações ao Pod:
kubectl annotate pod my-pod my-annotation-key-1=my-annotation-value-1 my-annotation-key-2=my-annotation-value-2
- Verifique se as anotações foram adicionadas ao Pod:
kubectl describe pod my-pod | grep my-annotation-key
Você deve ver ambas as anotações my-annotation-key-1 e my-annotation-key-2 com seus valores correspondentes na saída.
Atualizar uma Anotação Existente
Nesta etapa, aprenderemos como atualizar uma anotação existente em um Pod usando o comando kubectl annotate.
- Use o comando
kubectl annotatepara atualizar o valor de uma anotação existente no Pod:
kubectl annotate pod my-pod my-annotation-key-1=new-value --overwrite=true
- Verifique se a anotação foi atualizada no Pod:
kubectl describe pod my-pod | grep my-annotation-key-1
Você deve ver o valor atualizado de my-annotation-key-1 na saída.
Remover uma Anotação
Nesta etapa, veremos como remover uma anotação de um Pod usando o comando kubectl annotate.
- Use o comando
kubectl annotatecom a flag--overwritepara remover uma anotação do Pod:
kubectl annotate pod my-pod my-annotation-key-2- ## Note the trailing dash
- Verifique se a anotação foi removida do Pod:
kubectl describe pod my-pod | grep my-annotation-key-2
Você não deve ver a anotação my-annotation-key-2 na saída.
Anotar um Recurso Diferente
Nesta etapa, exploraremos como usar o comando kubectl annotate para anotar um recurso diferente, como um Deployment (Implantação).
- Crie um arquivo chamado
deployment.yamlno diretório/home/labex/projectcom o seguinte conteúdo:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: nginx
image: nginx
Crie o deployment com o seguinte comando:
kubectl apply -f deployment.yaml
- Use o comando
kubectl annotatepara adicionar uma anotação ao Deployment:
kubectl annotate deployment my-deployment my-annotation-key=my-annotation-value
- Verifique se a anotação foi adicionada ao Deployment:
kubectl describe deployment my-deployment
Você deve ver a anotação my-annotation-key com o valor my-annotation-value na saída.
Resumo
Neste laboratório, aprendemos como usar o comando kubectl annotate para adicionar, atualizar e remover anotações de recursos Kubernetes. Começamos com exemplos simples de como anotar um Pod com pares chave-valor únicos e múltiplos, e então exploramos casos de uso mais avançados, como atualizar uma anotação existente e anotar um recurso diferente, como um Deployment (Implantação). As anotações podem ser uma ferramenta poderosa para anexar metadados adicionais aos recursos Kubernetes e fornecer informações úteis para ferramentas ou processos externos.


