3 Dicas para Implantar o APISIX no Kubernetes (Parte 1)
March 14, 2024
A era da computação nativa em nuvem tem visto a adoção generalizada do Kubernetes como uma plataforma de orquestração de contêineres, com o Apache APISIX emergindo como um gateway de API dinâmico de alto desempenho e nativo em nuvem. A implantação do Apache APISIX no Kubernetes tem se tornado cada vez mais comum. No entanto, apesar do processo de implantação do Apache APISIX no Kubernetes ser relativamente simples, ainda há algumas questões-chave a serem consideradas. Nesta série de artigos, vamos nos aprofundar nos seguintes tópicos:
- Considerações sobre métodos de implantação
- Verificações de saúde, registro e monitoramento
- Lidando com plugins e configurações personalizados
Neste artigo, vamos nos concentrar no primeiro ponto, que são as considerações sobre os métodos de implantação ao implantar o Apache APISIX no Kubernetes.
Métodos de Implantação do APISIX no Kubernetes
Para implantar e gerenciar o APISIX no Kubernetes de forma suave, garantindo a estabilidade e confiabilidade do sistema, vários fatores precisam ser considerados nos métodos de implantação.
1. Separação do Plano de Dados e do Plano de Controle
Ao implantar no Kubernetes, é crucial manter o plano de dados do APISIX (nós que lidam com o tráfego real) separado do seu plano de controle (nós que gerenciam configurações e processam chamadas de API). Essa separação oferece vários benefícios:
-
Escalabilidade Elástica: O plano de dados lida com o processamento real das solicitações, enquanto o plano de controle gerencia a distribuição de configurações e políticas. Com a separação, o sistema pode escalar horizontalmente os planos de dados e controle de forma independente, ajustando dinamicamente o sistema com base nas demandas reais de carga de trabalho. Isso facilita a escalabilidade elástica, aumentando a escalabilidade geral do sistema.
-
Isolamento de Falhas: Separar os planos de dados e controle ajuda a alcançar o isolamento de falhas. Se o plano de controle falhar, o plano de dados pode continuar processando solicitações, garantindo a disponibilidade do serviço, e vice-versa. Essa separação ajuda a evitar que falhas pontuais afetem todo o sistema, melhorando assim a tolerância a falhas e a estabilidade.
-
Segurança Aprimorada: Separar os planos de dados e controle aumenta a segurança do sistema. O plano de controle geralmente contém informações sensíveis, como políticas de controle de acesso e configurações de autenticação, enquanto o plano de dados processa solicitações reais. Ao implantá-los separadamente, a segurança do plano de controle pode ser melhor protegida, reduzindo os riscos potenciais de ataques.
2. Solução de Implantação Persistente do etcd
O Apache APISIX oferece vários modos de configuração, como o modo standalone e o modo de centro de configuração etcd. Se você optar por um cluster etcd como centro de configuração para o Apache APISIX, há várias considerações a serem levadas em conta:
-
Uso do StatefulSet: No Kubernetes, o StatefulSet é comumente usado para implantar o etcd. O StatefulSet fornece identificadores de rede estáveis e implantações ordenadas de Pods, cruciais para um sistema distribuído. Cada nó etcd pode ter um identificador único e manter armazenamento persistente para garantir a segurança dos dados.
-
Limites de recursos adequados: Defina limites de recursos apropriados para os Pods do etcd para garantir que eles funcionem sem problemas no cluster. Ajuste de acordo com o tamanho do cluster e a carga de trabalho para evitar escassez ou desperdício de recursos.
-
Configuração de armazenamento persistente: Para garantir a persistência e confiabilidade dos dados, é recomendável armazenar os dados do etcd em armazenamento persistente. Os Volumes Persistentes (PVs) e as Reivindicações de Volume Persistente (PVCs) do Kubernetes podem ser usados para isso.
-
Habilitar criptografia TLS: Habilite a criptografia TLS no cluster etcd para proteger a transmissão de dados. Use certificados e chaves privadas para autenticar o cluster etcd e criptografar a comunicação entre os nós. Isso pode ser alcançado criando e usando certificados autoassinados ou certificados emitidos por autoridades de certificação (CAs) confiáveis.
-
Habilitar autenticação e autorização: O etcd suporta autenticação baseada em nomes de usuário e senhas, bem como autorização baseada em funções. É aconselhável habilitar esses recursos em um ambiente de produção para garantir que apenas usuários autorizados possam acessar e modificar dados no etcd. Ao conectar o plano de controle e o plano de dados do Apache APISIX ao etcd, é recomendável atribuir funções diferentes, como conceder capacidades de leitura e gravação ao plano de controle e capacidades somente leitura ao plano de dados.
-
Backups regulares: Faça backups regulares dos dados do etcd para evitar perda ou corrupção de dados. Use ferramentas de backup fornecidas pelo etcd e armazene os backups em um local seguro para recuperação quando necessário. Os métodos de backup incluem métodos de backup quente e frio. Para segurança dos dados, é recomendável usar o método de aprendiz do etcd para backup quente e combiná-lo com métodos de backup frio de instantâneo para maximizar as capacidades de recuperação de dados.
-
Monitoramento e alertas: Implante ferramentas de monitoramento para monitorar o estado de saúde do cluster etcd em tempo real. O Prometheus é uma ferramenta de monitoramento comumente usada que pode ser integrada ao etcd. Configure regras de alerta para tomar medidas oportunas quando problemas ocorrerem.
-
Lidar adequadamente com mudanças de nós: Adições, remoções ou substituições de nós podem ocorrer no cluster etcd. Certifique-se de lidar adequadamente com as mudanças de nós para evitar inconsistência de dados e interrupções de serviço.
3. Usar o APISIX Ingress Controller em vez do K8s Ingress Controller
O APISIX Ingress Controller é uma ferramenta focada em gerenciamento de API, oferecendo alto desempenho e opções de configuração flexíveis. Se você precisar de regras de roteamento mais complexas, limitação de taxa, interrupção de circuito e outros recursos avançados, o APISIX Ingress Controller pode ser uma escolha melhor. Ele fornece um sistema rico de plugins, permitindo a integração de plugins através do APISIX Ingress CRD usando configuração declarativa para lidar com autenticação, autorização, monitoramento, registro e outras funcionalidades. Isso enriquece as capacidades do APISIX Ingress Controller e simplifica a configuração.
Se você precisar de uma interface de configuração abrangente e integração profunda com o Kubernetes, considere a Plataforma de Gerenciamento de Ciclo de Vida Completo de API API7 Enterprise baseada no Apache APISIX. O API7 Enterprise fornece uma solução abrangente para automação avançada, monitoramento e solução de problemas, oferecendo suporte mais confiável para negócios.
Conclusão
Ao implantar o APISIX no Kubernetes, é necessário prestar atenção a vários aspectos. Primeiramente, foque na separação do plano de dados e do plano de controle para alcançar escalabilidade elástica, isolamento de falhas e segurança aprimorada. Em segundo lugar, adote um esquema de implantação persistente baseado em etcd para garantir a persistência e confiabilidade das configurações. Além disso, considere usar um APISIX Ingress Controller mais adequado em vez do K8s Ingress Controller para obter funcionalidades mais ricas e configuração mais simples. Somente seguindo essas práticas recomendadas é possível garantir a estabilidade e confiabilidade do sistema.