o etcd como seu database • Possui o kubectl como principal client de sua API • Recursos geralmente são declarados em YAML • Arquitetura com foco em eventos • API extensível
etcd como seu database • Possui o kubectl como principal client de sua API • Recursos geralmente são declarados em YAML • Arquitetura com foco em eventos • API extensível
Um controller não core do Kubernetes • Usa CRDs! • Específico para uma aplicação • Estende a API do Kubernetes para fazer da aplicação um Custom Resource
um “Operador” teria sobre o negócio • Abstrai para dentro do Kubernetes algo que não é nativo do Kubernetes • Faz uso da API nativa do Kubernetes • Orientado a eventos (Conectado diretamente ao etcd) • Interação via kubectl
Identity Access Manager • Role: perfil a ser incorporado pela aplicação com permissões pré definidas a recursos da AWS • Cada aplicação possui uma role • Uma role possui N policies • Eram gerenciadas fora do cluster, via terraform • Aplicações frequentemente precisavam ser migradas de cluster/conta AWS, e as roles eram esquecidas.
◦ Move junto com o cluster ◦ Gerenciamento acoplado à aplicação ◦ Continua infra as code ◦ Entra no workflow para quem já está acostumado a trabalhar com o ecossistema do Kubernetes
Gera deep copy para API do Kubernetes • $ operator-sdk generate crds ◦ Gera o CRD baseado no arquivo iamrole_types.go ◦ Validação adicionais usando markers: https://book.kubebuilder.io/reference/markers/crd-validation.html
de outros recursos do cluster, você deve declarar o seu custom resource como “dono” do objeto e assim que o custom resource for deletado o recurso declarado como propriedade também será deletado. • Exemplo: Deployment apagado, pods são apagados.