Kubernetes - API
A API Kubernetes serve como base para o esquema de configuração declarativa do sistema. KubectlA ferramenta de linha de comando pode ser usada para criar, atualizar, excluir e obter o objeto API. A API Kubernetes atua como um comunicador entre os diferentes componentes do Kubernetes.
Adicionar API ao Kubernetes
Adicionar uma nova API ao Kubernetes adicionará novos recursos ao Kubernetes, o que aumentará a funcionalidade do Kubernetes. No entanto, ao lado disso, também aumentará o custo e a capacidade de manutenção do sistema. A fim de criar um equilíbrio entre o custo e a complexidade, existem alguns conjuntos definidos para ele.
A API que está sendo adicionada deve ser útil para mais de 50% dos usuários. Não há outra maneira de implementar a funcionalidade no Kubernetes. Circunstâncias excepcionais são discutidas na reunião da comunidade do Kubernetes e, em seguida, a API é adicionada.
Mudanças API
Para aumentar a capacidade do Kubernetes, mudanças são continuamente introduzidas no sistema. Isso é feito pela equipe do Kubernetes para adicionar a funcionalidade ao Kubernetes sem remover ou impactar a funcionalidade existente do sistema.
Para demonstrar o processo geral, aqui está um exemplo (hipotético) -
Um usuário faz um POST de um objeto Pod para /api/v7beta1/...
O JSON é desempacotado em um v7beta1.Pod estrutura
Os valores padrão são aplicados ao v7beta1.Pod
o v7beta1.Pod é convertido em um api.Pod estrutura
o api.Pod é validado e quaisquer erros são devolvidos ao usuário
o api.Pod é convertido para um v6.Pod (porque v6 é a versão estável mais recente)
o v6.Pod é empacotado em JSON e escrito para etcd
Agora que temos o objeto Pod armazenado, um usuário pode OBTER esse objeto em qualquer versão de API compatível. Por exemplo -
Um usuário obtém o pod de /api/v5/...
O JSON é lido de etcd e unmarshalled dentro de v6.Pod estrutura
Os valores padrão são aplicados ao v6.Pod
o v6.Pod é convertido em uma estrutura api.Pod
o api.Pod é convertido em um v5.Pod estrutura
o v5.Pod é empacotado em JSON e enviado ao usuário
A implicação desse processo é que as alterações da API devem ser feitas com cuidado e com compatibilidade retroativa.
Controle de versão de API
Para facilitar o suporte a várias estruturas, o Kubernetes oferece suporte a várias versões de API, cada uma em um caminho de API diferente, como /api/v1 ou /apsi/extensions/v1beta1
Os padrões de controle de versão no Kubernetes são definidos em vários padrões.
Nível Alfa
Esta versão contém alfa (por exemplo, v1alpha1)
Esta versão pode apresentar erros; a versão habilitada pode ter bugs
O suporte para bugs pode ser eliminado a qualquer momento.
Recomendado para ser usado apenas em testes de curto prazo, pois o suporte pode não estar presente o tempo todo.
Nível Beta
O nome da versão contém beta (por exemplo, v2beta3)
O código foi totalmente testado e a versão habilitada deve ser estável.
O suporte do recurso não será descartado; pode haver algumas pequenas mudanças.
Recomendado apenas para usos não críticos para os negócios devido ao potencial de alterações incompatíveis em releases subsequentes.
Nível Estável
O nome da versão é vX Onde X é um número inteiro.
Versões estáveis de recursos aparecerão no software lançado para muitas versões subsequentes.