Hospedando Sua Própria AI — Parte 02
Continuação…
Aqui continuaremos com a nossa jornada !
Para quem precisar buscar alguma referência na primeira parte 01 é só clicar.
Checando se o nosso cluster esta em execução
kubectl get po -A
Instalando o Helm
O Helm é uma aplicação que vai auxiliar você a instalar aplicações no seu cluster de Kubernetes de forma simplificada, pensa nele como um “gestor de pacotes”.
Instalando openssl:
sudo dnf install openssl -y
Instalando helm:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Check se foi instalado:
helm version
Ótimo, agora vamos acionar os repositório necessário:
Primeiro vamos instalar o repo do nginx e depois no ngrok.
Adicionando repositório nginx:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx && helm repo update
Adicionando repositório ngrok:
helm repo add ngrok https://ngrok.github.io/kubernetes-ingress-controller && helm repo update
Instalando Ingress
Vou tentar resumir de forma simples qual é a função do ingress em um cluster de Kubernetes. Basicamente é o responsável por permitir que suas aplicações sejam acessíveis de fora do cluster, tudo isso com um conceito de proxy reverso, mais para frente algumas coisa ficarão mais elucidada.
Configurando o nginx:
helm install --create-namespace --namespace ingress-controller ingress-nginx ingress-nginx/ingress-nginx
Check se tudo está “OK”:
kubectl get pod -A
Configurando o ngrok:
O que é o ngrok? essa é a primeira pergunta que vem na nossa cabeça :)
O ngrok é um solução de ingresso ou ingress, ele combina diversas alternativas como proxy-reverso, firewall, API Gateway, LoadBalancer etc.
Acho que vale muito entra no site e entender um pouco. Para você que é desenvolvedor e ou até mesmo entusiasta, e quer expor algum serviço de forma fácil ele vai atender super bem.
Após ter criado sua conta, você vai cair em um interface como essa:
A primeira coisa a ser feira é criar um “Domain”:
Feche o frame “start tunnel”:
Vamos criar um API Key:
Volta para o inicio da página:
A tela acima vai mostrar como fazer o deploy no Kubernetes.
Faça como vou colocar no exemplo, apenas preencha as variáveis com o seu authtoken e sua apikey que você criou:
export NGROK_AUTHTOKEN=EXEMPLOEXEMPLOEXEMPLOEXEMPLO
export NGROK_API_KEY=EXEMPLOEXEMPLOEXEMPLOEXEMPLO
helm install --create-namespace --namespace ingress-controller ngrok-ingress-controller ngrok/kubernetes-ingress-controller \
--set credentials.apiKey=$NGROK_API_KEY \
--set credentials.authtoken=$NGROK_AUTHTOKEN
Check
kubectl get po -A
Configurando o Dnsmasq para o nosso uso :)
Na primeira parte desse artigo fizemos um configuração básica do dnsmasq, agora vamos usa-lo para apontar todas as chamadas de um determinado domínio para um endereço ip, ou seja, imagina o seguinte cenário:
Você criou um domínio local : “mediumlab.com.br”
Aí você publicou sua primeira aplicação no cluster com um sub-domínio do seu domínio: “meuapp.medium.lab.com.br”.
Essa publicação meuapp.medium.lab.com.br, vai acontecer no ingress do seu cluster, e aí que acontece a mágica do proxy-reverso, ele identifica para qual serviço ele precisa encaminhar essa chamada, e assim o faz, por outro lado o dnsmaq só vai encaminhar “mediumlab.com.br” para o ip do loadbalancer no seu cluster.
A grande sacada aqui é que você não vai ficar precisando editar seu hosts toda hora a cada aplicação que você fizer deploy, porque vamos apontar o wildcard do domínio “mediumlab.com.br” ou seja *.mediumlab.com.br para o “LB”.
Pegue o ip do seu loadBalancer:
sudo docker network inspect k3d-mediumlab
Configurando:
Defina um nome para o seu domínio, pode ser qualquer um, no meu caso vou usar mediumlab.com.br
Edite o arquivo 00-dnsmasq.conf:
sudo nano /etc/dnsmasq.d/00-dnsmasq.conf
listen-address=127.0.0.1
bind-interfaces
no-resolv
# External Dns Search
server=1.1.1.1
server=8.8.8.8
# Custon Local Dns
address=/.mediumlab.com.br/172.18.0.5
Salve o arquivo ( ctrl + o ) para sair (ctrl + x ).
Faça o restart do serviço dnsmaq:
sudo systemctl restart dnsmasq.service
Check 01:
nslookup mediumlab.com.br
Check 02
nslookup xxxxx.mediumlab.com.br
Se tudo funcionou até aqui é você esta de parabéns !!
Faça um teste simples para ver se tudo esta ok, nesse teste vamos ter a certeza que o cluster, ingress, dnsmasq estão funcionando como deveriam.
Abra o seu navegado e digite qualquercoisa.mediumlab.com.br
Se você obter o resultado acima, significa que tudo esta OK, e na prática você já poderia fazer o deploy de qualquer aplicação no seu cluster que irá funcionar. Sei que ainda não chegamos no ponto de criar um manifesto de um deploy com ingress, mas nada o impede de buscar algo na internet e fazer.
Vamos finalizar essa parte 02 por enquanto, até aqui tivemos grandes evoluções e vamos seguir com a parte 03 .