‫Existem duas partes de metadados neste YAML
‫que você provavelmente já viu nos
‫exemplos e pensou, imaginando para que rótulos e anotações
‫realmente existem.
‫Você provavelmente não percebeu o significado deles.
‫Eles são um componente essencial do Kubernetes e como
‫as coisas se conectam.
‫Muito mais que Swarm.
‫O primeiro são os rótulos. Os rótulos ficam sob
‫a chave de metadados na raiz do arquivo, portanto
‫são opcionais lá. Você não precisa colocá-los, mas
‫eles são um valor-chave ou uma lista de valores-chave, abaixo do
‫cabeçalho dos rótulos.
‫Esses existem por várias razões.
‫Nem sempre são necessários, mas você pode precisar
‫deles para selecionar os objetos, agrupá-los e
‫até filtrá-los mais tarde.
‫Isso pode ser qualquer coisa que descreva o
‫objeto ou o recurso.
‫Pode ser um par de valores-chave que o valor seja simplesmente
‫verdadeiro ou falso.
‫As chaves podem ser o que você quiser.
‫Não pode haver mais de uma chave em cada objeto;
‫portanto, você não pode ter duas chaves consecutivas na
‫YAML para o mesmo objeto com o nome
‫da chave, digamos, app, certo. Estes são realmente usados para
‫descrever o objeto. Esses recursos que estamos
‫criando têm propriedades diferentes para eles.
‫Talvez seja o ambiente como prod, dev ou test.
‫Talvez seja o local como dmz,
‫backend ou frontend. Talvez seja o nome do aplicativo
‫ou talvez o nome do cliente, se você estiver hospedando sites de
‫clientes ou algo assim. Pode ser o que
‫você quiser e não há muitos padrões.
‫A documentação do Kubernetes listada nos recursos aqui fornece
‫alguns exemplos, mas esses são apenas exemplos.
‫Não há muitos padrões no setor.
‫Cabe realmente à sua equipe e à sua empresa
‫como você deseja descrever essa coisa.
‫Também temos anotações. Eles são uma espécie de yin e yang.
‫Os rótulos são muito simples.
‫Eles são muito limitados em tamanho e quais caracteres
‫você pode colocar neles. Eles são feitos para descrever o recurso.
‫Nas anotações, trata-se de dados mais complexos e
‫de vários valores, coisas assim.
‫Você geralmente verá anotações usadas ao adicionar itens
‫personalizados ao Kubernetes que podem conversar com o
‫Kubernetes e extrair dados dele.
‫As anotações existem para talvez armazenar dados
‫de configuração, como proxies e itens de ingresso geralmente
‫podem armazenar configurações diferentes, dentro de anotações diferentes.
‫Portanto, eles não estão necessariamente
‫lá para descrever, mas mais para configuração.
‫Vamos voltar aos rótulos por um minuto, porque
‫há muito mais para entender como tudo isso funciona
‫no Kubernetes.
‫A primeira coisa é que podemos fazer filtros simples limitando
‫os rótulos da linha de comando.
‫Podemos obter pods e apenas dizer, apenas me mostrar
‫os pods com esse rótulo.
‫Você pode até usar uma vírgula para adicionar vários rótulos.
‫De fato, existe um nível inteiro de sintaxe para isso,
‫onde você pode fazer diferentes tipos de sintaxe, diferentes
‫ou's e and's.
‫Realmente, é uma daquelas coisas em
‫que não quero ensinar tudo isso porque será
‫como aprender Regex. É algo em que você realmente não
‫aprenderá apenas tentando uma vez.
‫É somente quando você precisar que
‫você realmente entenderá. A documentação do Kubernetes
‫é realmente ótima. Eles têm vários links que
‫eu coloquei nos recursos que o levarão pelo caminho de todas as maneiras
‫diferentes em que você pode precisar de rótulos.
‫Francamente, você realmente não precisa aprender isso até
‫saber que precisa resolver um problema.
‫Você pode até usá-lo para aplicar comandos.
‫Se você tivesse um monte de coisas em um grande
‫arquivo YAML e desejasse aplicar apenas algumas partes
‫desse arquivo YAML.
‫Eu não faço muito isso, mas é
‫lá que você pode limitar a dizer, aplicar apenas as
‫alterações ou informações que você colocou no YAML para
‫rótulos específicos.
‫Obviamente, novamente com este, você pode colocar
‫a mesma sintaxe. Você pode apenas ter um único rótulo.
‫Você pode colocar vírgulas, ter vários rótulos e
‫valores lá. Você decide.
‫Há outra coisa que os rótulos fazem é importante
‫para o funcionamento do Kubernetes.
‫Tudo se resume a certos recursos que conversam com outros
‫recursos, ou se conectam a eles ou que
‫estão relacionados a eles.
‫No entanto, você quer dizer isso. O bom exemplo
‫é que os serviços precisam saber para quais
‫pods enviar seu tráfego. Você pode se perguntar como ele sabe?
‫Quero dizer, quando você digita, se você executa um comando do
‫serviço kubectl e o aponta para a implantação,
‫o que exatamente ele está usando para identificar essa implantação?
‫Bem, na CLI, você pensaria que realmente está apontando para
‫o objeto de implantação.
‫Mas, realmente, o serviço precisa conversar com os pods, não com
‫a implantação em si.
‫Está usando algo chamado seletores de etiquetas.
‫Isso é comum em muitos recursos diferentes, com níveis
‫mais altos de abstração de pods.
‫Para eles se relacionarem com os pods ou para saber quais deles
‫são, eles usam seletores de etiquetas. Você verá isso
‫no YAML em nosso repositório que você
‫tem usado nas últimas palestras.
‫Se você olhar no aplicativo. você notará que o tempo
‫todo, tivemos algumas coisas sobre as
‫quais não conversamos. O primeiro está
‫na parte superior do serviço, temos sob o seletor de especificações.
‫Isso tem que estar lá.
‫Estamos dizendo a chave e o valor de um rótulo para
‫os pods aos quais ele precisa direcionar o tráfego.
‫Isso é apenas uma combinação simples.
‫Ele precisa encontrar pods com isso.
‫Em seguida, na implantação abaixo, você verá
‫que nossas especificações têm seu próprio
‫seletor, matchLabels, app, app-nginx.
‫O que está acontecendo é que os dois objetos
‫estão selecionando pods com base nessa correspondência.
‫Isso significa que, no modelo de nossa especificação,
‫onde estamos modelando os pods, é necessário que haja
‫esse rótulo para que esses recursos possam encontrar
‫seus pods.
‫O bom é que nas versões posteriores do
‫Kubernetes, é que pelo menos com apenas uma implantação,
‫elas precisam estar sincronizadas. Na verdade, ele falhará
‫na implantação se perceber que o seletor corresponde aos marcadores
‫não corresponde aos marcadores de metadados do modelo, porque
‫eles precisam fazer isso para implantar os pods
‫e poder controlá-los.
‫Está lá para impedir que você acidentalmente faça isso
‫da maneira errada. Esperará que você
‫tenha essas peças lá. Nas versões mais antigas, costumava haver
‫uma maneira de gerá-las automaticamente, por padrão, para que você pudesse
‫deixar as coisas de fora. Eles pararam de fazer isso agora
‫e forçam você a colocar isso lá. Eu acho que
‫é uma coisa boa, especialmente a importância
‫desses seletores de etiquetas. Tecnicamente, se você voltou
‫ao Swarm, o Swarm faz um pouco disso pronto para
‫o uso, onde possui etiquetas que combinam de pilhas a
‫serviços e pilhas a seus volumes e coisas assim.
‫Nós realmente não conseguimos controlá-lo e não vemos
‫muito na interface. É meio que feito
‫em segundo plano para nós no Swarm.
‫Mas também é muito limitante.
‫Você não pode mudar as coisas rapidamente.
‫Você não pode necessariamente personalizá-las para configurações
‫realmente únicas.
‫Aqui, poderíamos ter um serviço conversando com
‫várias implantações se quiséssemos alterar
‫esses seletores.
‫Os seletores não se limitam a vincular recursos.
‫É também sobre controlar para onde eles vão.
‫Nos nós, você pode usar rótulos e seletores para controlar
‫para onde eles vão.
‫Você pode usar ainda mais personalização com coisas chamadas taints
‫e tolerância, que são inversas ao que diz
‫aos nós que eles não podem fazer certas coisas, para
‫que o Kubernetes saiba onde basicamente controlar
‫para onde vão seus pods.
‫Essas coisas ficam realmente personalizadas e
‫avançadas muito rapidamente. Fazê-los todos juntos pode
‫ficar um pouco peludo e louco.
‫Definitivamente, recomendo que você vá devagar com eles.
‫Mantenha tudo simples e pronto para uso.
‫Evite tensões e tolerâncias até que você realmente
‫precise investigá-las.
‫Tudo certo. Vamos limpar essa seção inteira.
‫Se você tiver algo em execução em um espaço de nomes
‫padrão para o seu cluster, se você fizer um
‫kubectl obter tudo e vir coisas além da própria API do
‫Kubernetes, vá em frente e exclua todos esses recursos, porque seguiremos
‫adiante . Nós não vamos precisar deles.