Minikube: Kubernetes em Ambiente de Desenvolvimento

Minikube: Kubernetes em Ambiente de Desenvolvimento

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 =)

CURSOSCONSULTORIA    CONTATO

Anterior Socket em Python
Próxima Temos Vagas em Brasília/DF - 4Linux

About author

Alisson Machado
Alisson Machado 19 posts

Alisson Menezes, atua como Gerente de T.I, 9 anos de experiência em projetos FOSS (Free and Open Source Software) e Python. Formação em Análise de Sistemas pela FMU e cursando MBA em BigData pela FIA, possui certificações LPI1, LPI2 e SUSE CLA, LPI DevOps e Exim - DevOps Professional. Autor dos cursos Python Fundamentals, Python for Sysadmins, MongoDB for Developers/DBAs, DevSecOps, Co-Autor do Infraestrutura Ágil e Docker da 4Linux e palestrantes em eventos como FISL, TDC e Python Brasil. É entusiasta das mais diversas áreas em T.I como Segurança, Bancos de dados NoSQL, DataScience mas tem como foco DevOps e Automação.

View all posts by this author →

Você pode gostar também

DevOps

4Linux inova mais uma vez e lança curso de Continuos Monitoring DEVOPS.

Será o nono curso ofertado na carreira DEVOPS. A mais abrangente oferta do Brasil. A 4linux anuncia hoje o lançamento de mais um curso para enriquecer a sua oferta de

DevOps

Heroku: infraestrutura pronta para uso em cloud

Heroku é atualmente uma das melhores opções PaaS ( Plataform as a Service ) para desenvolvedores fazerem o deploy de suas aplicações. Essa plataforma é muito utilizada nas startups porque

DevOps

Prometheus: uma nova proposta de monitoramento

Conheça o Prometheus, ferramenta open source de monitoramento adaptada ao atual modelo de TI focada em serviços e opção aos tradicionais Zabbix/Nagios.