Agora, vamos criar o cluster. Para isso, o Minikube requer alguns arquivos essenciais, sendo o principal o kubeconfig. Esse arquivo armazena o endereço do cluster, mesmo que seja local, além dos certificados necessários para acessá-lo com ferramentas como o kubectl.
Configurando o ambiente para o Minikube
O primeiro comando que utilizaremos é export, que define a variável de ambiente KUBECONFIG. Essa variável é utilizada por qualquer ferramenta de gerenciamento de clusters, incluindo o Argo. O arquivo de configuração será armazenado no diretório home do usuário, dentro da pasta oculta .kube, no arquivo config.
export KUBECONFIG=$HOME/.kube/config
Com o comando acima, definimos a variável de ambiente KUBECONFIG para apontar para o arquivo de configuração que será criado. Após criar a variável, precisamos criar o diretório onde este arquivo existirá. Para isso, rodamos o comando mkdir, que cria um diretório dentro do $HOME, nosso diretório de usuário, seguido de .kube.
Lembrando que apenas configuramos a variável, mas o diretório ainda não existia. Agora, criamos o arquivo com o comando touch, apontando para o $KUBECONFIG. Este comando criará um arquivo dentro do diretório .kube.
Podemos verificar o arquivo com ls -l no diretório raiz do nosso usuário, .kube/.
Instalando o Podman para rodar o cluster
Nisso, é indicado que existe um arquivo chamado config. Essa arquivo está vazio, pois ainda não criamos o cluster. Mas, antes de criar o cluster, precisamos escolher a tecnologia sobre a qual ele rodará. Lembrando que o Minikube é uma ferramenta para desenvolvimento e não é recomendada para produção. Vamos usar o Podman, que rodará um cluster em cima de containers Podman. Para isso, precisamos instalar o Podman com o comando abaixo:
sudo apt install podman -y
O Podman é daemonless e roda sem permissão de root. Então, orecisamos fazer algumas configurações para que o Minikube funcione, pois ele precisa acessar interfaces de rede que requerem root. Iniciaremos o socket do Podman para nosso usuário com o comando:
systemctl --user start podman.socket
Sem necessidade de sudo, este comando inicia o socket do Podman para o usuário atual.
Como alguns recursos do cluster precisam acessar endereços protegidos pelo sistema operacional, editaremos o arquivo, passando sudo vi/etc/sudoers.
No final do arquivo, adicionaremos uma linha de código. Existem várias formas de fazer isso, nesse caso seguiremos com a mais simples, passando o comando abaixo:
[usuario] ALL=(ALL) NOPASSWD: /usr/bin/podman
Assim, silicitamos que, para o usuário, de qualquer recurso para qualquer endereço sem senha, porém, somente para o comando usr/bin/podman. Com essa configuração, salvamos. Assim, aparece uma mensagem indicando que esse é um arquivo apenas de leitura. Porém, estamos editando com o sudo, então pressionamos "Enter".
O que fizemos foi editar o arquivo sudoers e demos permissão para o usr/bin/podman, para quando precisar executar qualquer recurso que seja elevado, eu não precise dar senha. Isso só está sendo feito para o minicube funcionar.
Agora, podemos iniciar o cluster. Já temos o comando do minicube instalado, passamos start para iniciá-lo e avisar que o driver que ele usará é o podman.
Outros drivers que poderiamos usar é o docker, virtualbox, kvm, e assim por diante. Escolhemos o podman, porque é mais simples e mais leve.
minikube start -- driver=podman
Ao pressionar "Enter", a instalação de todos os recursos necessários é feita, além da inicialização do cluster. Esse processo pode demorar alguns minutos.
Após a instalação, validamos com o seguinte comando:
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
Verificamos que o Minikube está rodando com um nó. Vamos habilitar um addon do Minikube, o ingress, que permite acessar de fora do Kubernetes algo que está dentro dele. Então, executamos o comando abaixo.
minikube addons enable ingress
Após habilitar o addon, verificamos o funcionamento do cluster com kubectl get nodes.
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 2m27s v1.31.0
Nisso, notamos que existe um nó criado, com o nome minicube. Então, passaremos outro comando para realmente ver o kubectl funcionando dentro do cluster.
Passamos o -A, pois queremos ver de todos os namespaces. Nisso, roda o nginx, o etcd, ou seja, todo o nosso cluster está funcional agora.
Habilitando o autocomplete para kubectl
A partir desse momento, estou apto a instalar o argo, fazer deploy das minhas aplicações. Tem duas coisas que vamos fazer antes de terminar esse vídeo. Primeira coisa será habilitar o autocomplete para o kubectl. Se passarmos kubectl e pressionarmos "TAB" duas vezes, não vai exibir as opções que o kubectl teria, caso quiséssemos manipular o arquivo. Para isso, vamos escrever vi .bashrc e executar.
No final do arquivo, vamos adicionar a linha abaixo:
echo 'source <(kubeclt completion bash)' >>~/.bashrc
Esse comando vai dar um echo, ou seja, vai gerar o conteúdo echo src, um subshell que o src vai ser carregado, estamos puxando essas configurações para o ambiente. O kubectl completion bash vai adicionar dentro do meu src, do ambiente, os subcomandos do kubectl. Estamos direcionando isso para o .bashrc, então, pressionamos "Enter".
Se eu estiver usando o zsh, por exemplo, seria kubectl completion zsh.
Após, passaremos source .bashrc para recarregar o conteúdo do arquivo.
Agora, se digitarmos kubectl e pressionarmos "TAB" duas vezes, temos todas as opções que o kubectl precisa para funcionar.
Por fim, algo que é opcional, mas muito viável para agilizar o dia a dia dos deploys, é a criação de um alias para o comando kubectl. Agora, vamos voltar ao arquivo .bashrc, onde já adicionamos conteúdo anteriormente. Vou até o final do arquivo e incluir duas novas linhas.
No fim, adicionaremos duas linhas. Estamos criando um alias para o kubectl chamado k. Além disso, usamos o complete -F. Essa linha habilita o autocomplete do kubectl também para o alias k.
alias k=kubectl
complete -F __start_kubectl k
Salvamos e executamos source . bashrc. Após, ao digitar k e pressionar duas vezes a tecla "Tab", o autocompletar funcionará da mesma forma. Isso vai nos ajudar a agilizar o deploy das nossas aplicações.
No próximo vídeo, vamos fazer a instalação do Argo CD (Argo Continuous Deployment) no cluster. Até breve!