Minikube: Kubernetes em Ambiente de Desenvolvimento
07 de nov. de 2018
Kubernetes é um assunto muito falado hoje em dia, mas tão importante quanto saber fazer a instalação é saber fazer o uso da ferramenta, sendo assim, nesse post vou explicar como a gente faz o download do minikube, que é a versão do Kubernetes para ambientes de desenvolvimento e testes, com o objetivo de conhecer a tecnologia antes de implementar em produção.
Todos os comandos abaixo estou rodando no meu notebook que é um Ubuntu 18.04.
Instalando o Minikube:
sudo wget https://github.com/kubernetes/minikube/releases/download/v0.30.0/minikube-linux-amd64 -O /usr/local/bin/minikube sudo chmod +x /usr/local/bin/minikubeInstalando o comando Kubectl:
sudo wget https://storage.googleapis.com/kubernetes-release/release/v1.12.2/bin/linux/amd64/kubectl -O /usr/local/bin/kubectl sudo chmod +x /usr/local/bin/kubectlO comando kubectl serve para fazer a administração do seu cluster de kubernetes, nele que vamos gerenciar os namespaces, pods, ingress e etc. Para iniciar o minikube digite o comando
alisson@alisson-avell:~$ minikube start Starting local Kubernetes v1.10.0 cluster... Starting VM... Downloading Minikube ISO 170.78 MB / 170.78 MB [============================================] 100.00% 0s Getting VM IP address... Moving files into cluster... Downloading kubeadm v1.10.0 Downloading kubelet v1.10.0 Finished Downloading kubelet v1.10.0 Finished Downloading kubeadm v1.10.0 Setting up certs... Connecting to cluster... Setting up kubeconfig... Starting cluster components... Kubectl is now configured to use the cluster. Loading cached images from config file.Lembrando que é necessário ter o VirtualBox instalado. Agora que o minikube já iniciou, vamos ver o ip em que a máquina virtual está respondendo:
alisson@alisson-avell:~$ minikube status minikube: Running cluster: Running kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100Veja que no meu caso está em: 192.168.99.100, esse ip pode mudar de máquina para máquina. Ao iniciar o minikube, automaticamente ele configura o arquivo:
alisson@alisson-avell:~$ cat .kube/config apiVersion: v1 clusters: - cluster: certificate-authority: /home/alisson/.minikube/ca.crt server: https://192.168.99.100:8443 name: minikube contexts: - context: cluster: minikube user: minikube name: minikube current-context: minikube kind: Config preferences: {} users: - name: minikube user: client-certificate: /home/alisson/.minikube/client.crt client-key: /home/alisson/.minikube/client.keyNesse arquivo temos o ip e os certificados para fazer a administração do cluster. Vamos habilitar também o ingress para pode fazer com que o nosso minikube consiga responder por vários nomes no mesmo ip:
alisson@alisson-avell:~$ minikube addons enable ingress ingress was successfully enabledPara testar se a conectividade está ok, execute o seguinte comando:
alisson@alisson-avell:~$ kubectl get namespaces NAME STATUS AGE default Active 1h kube-public Active 1h kube-system Active 1hCaso a saída seja parecida com a mostrada acima, está tudo ok. Agora vamos criar um novo namespace e fazer o deploy de uma aplicação.
alisson@alisson-avell:~$ kubectl create namespace alisson namespace "alisson" createdAgora com o namespace criado vamos fazer um deploy:
alisson@alisson-avell:~$ kubectl --namespace=alisson run python -ti --port=8080 --image=alissonmenezes/python_app:v1 -l app=pythonO comando acima vai executar a aplicação a partir de uma imagem do dockerhub, chamada python_app, com a tag v1, no repositório alissonmenezes. para ver se a aplicação foi feito o deploy com sucesso execute o comando:
alisson@alisson-avell:~$ kubectl --namespace=alisson get pods NAME READY STATUS RESTARTS AGE python-7889c7c88d-vtbw7 1/1 Running 0 1mAgora vamos criar um service para apontar a porta 80 do kubernetes para a 8080 dessa aplicação:
alisson@alisson-avell:~$ kubectl --namespace=alisson create service clusterip python --tcp=80:8080 service "python" createdAgora precisamos fazer a criação do ingress, para apontar o nome: python.alissonmachado.com.br para essa aplicação em execução. No caso do ingress, não temos um comando específico para fazer a criação dele, então vou criar um arquivo no formato yaml e executar o comando create. arquivo: python__ingress.yml
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: python annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: python.alissonmachado.com.br http: paths: - path: / backend: serviceName: python servicePort: 80Criando o ingress:
alisson@alisson-avell:~$ kubectl --namespace=alisson create -f python_ingress.yml ingress "python" createdAgora edite o /etc/hosts da sua máquina, colocando a seguinte entrada:
vim /etc/hosts 192.168.99.100 python.alissonmachado.com.brE acesse no navegador: python.alissonmachado.com.br que já deve estar tudo funcionando =)