Guia prático: Como instalar e usar o Kubernetes com Minikube
Kubernetes é um assunto muito falado hoje em dia, mas tão importante quanto saber fazer a instalação é saber fazer o uso efetivo da ferramenta, sendo assim, nesse post vou explicar como fazer o download do minikube, que é a versão do Kubernetes utilizado em 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/minikube
Instalando o comando Kubectl:
sudo wget https://storage.googleapis.com/kubernetes-release/release/v1.12.2/bin/linux/amd64/kubectl -O /usr/local/bin/ sudo chmod +x /usr/local/bin/kubectl
O 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 seguinte 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.100
Veja que no meu caso é192.168.99.100, lembre-se que este 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.key
Nesse arquivo temos o IP e os certificados para fazer a administração do cluster.
Vamos habilitar também o ingress para fazer com que o nosso minikube consiga responder por vários nomes no mesmo endereço IP:
alisson@alisson-avell:~$ minikube addons enable ingress ingress was successfully enabled
Para testar se a conectividade está correta, execute o seguinte comando:
alisson@alisson-avell:~$ kubectl get namespaces NAME STATUS AGE default Active 1h kube-public Active 1h kube-system Active 1h
Caso a saída seja parecida com a mostrada acima, está tudo ok.
Agora vamos criar um novo namespace:
alisson@alisson-avell:~$ kubectl create namespace alisson namespace "alisson" created
Agora com o namespace criado, vamos fazer um deploy de uma aplicação:
alisson@alisson-avell:~$ kubectl --namespace=alisson run python -ti --port=8080 --image=alissonmenezes/python_app:v1 -l app=python
O 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 verificar se o deploy da aplicação foi realizado com sucesso, execute o seguinte comando:
alisson@alisson-avell:~$ kubectl --namespace=alisson get pods NAME READY STATUS RESTARTS AGE python-7889c7c88d-vtbw7 1/1 Running 0 1m
Agora 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" created
Agora 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: 80
Criando o ingress:
alisson@alisson-avell:~$ kubectl --namespace=alisson create -f python_ingress.yml ingress "python" created
Agora edite o /etc/hosts da sua máquina, colocando a seguinte entrada:
vim /etc/hosts 192.168.99.100 python.alissonmachado.com.br
E acesse no navegador: python.alissonmachado.com.br que já deve estar tudo funcionando =)
About author
Você pode gostar também
Desvendando o DevOps: Entenda a Integração, Entrega e Implantação Contínua
Continuous Integration (Integração Continua), Continuous Delivery (Entrega Continua) e Continuous Deployment (Implantação Continua) são práticas DevOps muito populares nos últimos anos, mas o que são e as diferenças entre elas
Entenda o ciclo de vida dos arquivos no Git e facilite seu trabalho
Git é um versionador de código fonte fácil de usar, isso quase todos sabem, entretanto sua experiência de uso pode ser bem confusa em alguns casos. Convido-os a uma breve
Descubra como a filosofia DevOps pode impulsionar o sucesso do seu negócio
DevOps é fundado na construção de uma cultura de colaboração, visando a entrega de software de maneira mais rápida e confiável. Pode ser compreendido como uma filosofia de gestão, englobando