Kafka no k8s [Strimzi] Zero to Hero round 1
Na atual geração de Big Data estamos vendo uma movimentação natural para o mundo de containerização, sendo assim vou fazer uma sessão de 5 partes para entendermos melhor sobre apache Kafka no kubernetes, então como a imagem acima, estamos no pé da montanha, vamos agora iniciar a caminhada.
Ainda de começarmos alguns pontos:
- Não é necessário ter conhecimento de Kubernetes
- Não é necessário ter conhecimento em Apache Kafka
Conceitos para melhor entendimento:
- Helm é o gerenciador de pacotes de aplicação de Kubernetes.
- Chart é o nome do pacote das aplicação dentro do Helm.
Para essa primeira sessão vamos preparar o ambiente instalando os programadas necessários para testarmos o Strimzi dento de casa.
Vamos lá, primeiramente vamos instalar o docker:
Eu utilizo o Docker desktop for MacOS, até o momento não tive nenhum problema okay!
Depois o nosso minikube:
Recomendação é utilizar o docker como driver pois vamos precisar do docker para as imagens do Kafka Connect futuramente nas próximas sessões, então vamos instalar somente o que vamos usar!
Dito isso agora nosso ambiente está quase pronto, agora vamos instalar o helm cli para poder fazer o deployment do Strimzi de forma simples!
Agora sim, depois de realizar as instalações citadas acima, vamos acessar o Strimzi github e clonar o repositório, vamos usar bastante o mesmo:
Com todas as ferramentas instaladas em mãos, vamos agora começar o deployment dentro do minikube agora:
Criação da namespace ingestion, essa é a namespace que iremos implantar as aplicações do Apache Kafka e Strimzi Operator
kubectl create namespace ingestion
Agora vamos primeiro começar pelo Strimzi Operator, primeiro adicionando o repositório do Strimzi e em seguida instando:
Repositório:
helm repo add strimzi https://strimzi.io/charts/
Instalação do chart:
helm install kafka strimzi/strimzi-kafka-operator --namespace ingestion --version 0.21.0
O Kubernetes utiliza o desire state então para conferir se o strimzi operator foi instalado ready 1/1:
Agora, vamos no repositório de strimzi no github que foi clonado, vamos no seguinte caminho abaixo:
examples/kafka/
Neste diretório temos alguns arquivos yaml de exemplo para subir o kafka, vamos entender 2 conceitos importantes:
- Ephemeral = Não é criado um persistent volume, ou seja se os pods do Kafka cairem por algum motivo o dado será perdido pois existe somente dentro dos pods.
- JBOD = Just a Bunch Of Disks, nesse caso irá criar persistent volumes no cluster de Kubernetes no nosso caso minikube e caso precise de mais disco, e só adicionar no arquivo yaml o novo disco.
Para a nossa experimentação vamos começar com ephemeral, acesse a pasta do kafka pelo terminal, e execute o comando
kubectl apply -f kafka-ephemeral.yaml -n ingestion
Tudo dando certo, irá aparecer o cluster created e os pods criados e executando:
Todos rodando agora vamos para o segundo round!