Zettelkasten
UFBA-MLOps - Lesson 6

Deploy da aplicação

pedriamos utilizar o confuelce CLI para fazer o deploy da aplicação. entretanto o professor não conseguiu fazer o deploy da aplicação, então ele fez o deploy manualmente, sem zookeper.

A primeira parte consiste em rodar os componentes do Kafka: o zookeeper e um broker pelo menos. Uma das vantagens de usarmos Docker é que já existem imagens prontas, como fizemos para o nginx na seção anterior. Vamos usar duas aqui:

confluentinc/cp-zookeeper

confluentinc/cp-kafka

Essas são imagens oficiais criadas e mantidas pela Confluent, uma das principais contribuidoras do projeto, portanto podemos confiar.

docker run -d --rm --name zookeeper --network minharede -e ZOOKEEPER_CLIENT_PORT=2181 -e ZOOKEEPER_TICK_TIME=2000 confluentinc/cp-zookeeper:7.0.1

Veja como ele não vai encontrar a imagem localmente. Ele fará o download diretamente do Docker Hub. Agora, suba um broker, rodando o seguinte comando:

docker run -d --rm --name broker --network minharede -p 9092:9092 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT='zookeeper:2181' -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://broker:29092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 -e KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1 -e KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 confluentinc/cp-kafka:7.0.1

Atenção especial para o endereço localhost:9092. Esse é o endereço onde nosso producer vai encontrar o broker (ele vai rodar no host). E o endereço broker:29092 é onde o consumer vai encontrar o broker (ele vai rodar no Docker).

Teremos três contêineres Docker rodando, todos eles na rede chamada minharede, portanto eles podem se enxergar utilizando seus respectivos nomes de contêineres como hostnames.

  • Um deles vai rodar o zookeeper, com base na imagem cp-zookeeper. Ele só precisa ser acessado internamente, pois é um controlador de brokers. Portanto não precisamos publicar suas portas. Mas internamente, ele é acessível pela porta 2181.

  • Outro será um broker, com base na imagem cp-kafka. Ele vai acessar o zookeeper na porta 2181. Essa porta do zookeeper não foi publicada, mas é acessível dentro de minharede (basta usar o nome "zookeeper" como hostname).

  • Temos também o analisador de sentimentos, que é uma aplicação Python rodando em contêiner. Ele é o consumer Kafka nessa arquitetura.

-- explicar sobre clusters kubernets, orquestramento, e clusters de docker