6.9 KiB
title | content_type | weight | min-kubernetes-server-version |
---|---|---|---|
Configurando o Ingress no Minikube com o NGINX Ingress Controller Config | task | 110 | 1.19 |
O Ingress é um objeto da API que define regras que permitem acesso externo a serviços em um cluster. Um Ingress controller cumpre as regras estabelecidas no Ingress.
Essa página mostra como configurar um Ingress simples que redireciona as requisições para o Service "web" ou "web2" dependendo do URI HTTP.
{{% heading "prerequisites" %}}
Esse tutorial assume que você está usando minikube
para rodar um cluster Kubernetes local.
Visite Install tools para aprender como instalar o minikube
.
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} Se você estiver usando uma versão mais antiga do Kubernetes, veja a documentação para essa versão.
Criando um cluster minikube
Se você ainda não configurou um cluster local, rode minikube start
para criar um cluster.
Ativando o Ingress controller
-
Para ativar o NGINX Ingress controller, rode os seguintes comandos:
minikube addons enable ingress
-
Verifique que o NGINX Ingress controller está rodando
kubectl get pods -n ingress-nginx
{{< note >}} Os pods podem levar até um minuto para estarem rodando corretamente. {{< /note >}}
O resultado deve ser similar a:
NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-g9g49 0/1 Completed 0 11m ingress-nginx-admission-patch-rqp78 0/1 Completed 1 11m ingress-nginx-controller-59b45fb494-26npt 1/1 Running 0 11m
Instale uma aplicação hello world
-
Crie um Deployment usando o seguinte comando:
kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
O resultado deve ser:
deployment.apps/web created
-
Exponha o Deployment:
kubectl expose deployment web --type=NodePort --port=8080
O resultado deve ser:
service/web exposed
-
Verifique que o Service está criado e disponível em uma porta do nó:
kubectl get service web
O resultado deve ser similar:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE web NodePort 10.104.133.249 <none> 8080:31637/TCP 12m
-
Visite o Service via NodePort:
minikube service web --url
O resultado é similar a:
http://172.17.0.15:31637
curl http://172.17.0.15:31637
O resultado é similar a:
Hello, world! Version: 1.0.0 Hostname: web-55b8c6998d-8k564
Você agora pode acessar a aplicação de exemplo através do endereço IP do Minikube e NodePort. No próximo passo, você irá acessar a aplicação usando o recurso Ingress.
Criando um Ingress
O manifesto a seguir define um Ingress que envia tráfego para seu Serviço via
hello-world.info
.
-
crie
example-ingress.yaml
usando o arquivo:{{% code_sample file="service/networking/example-ingress.yaml" %}}
-
Crie o objeto Ingress rodando o seguinte comando:
kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml
O resultado deve ser:
ingress.networking.k8s.io/example-ingress created
-
Verifique se o endereço IP está configurado:
kubectl get ingress
{{< note >}} Isso pode demorar alguns minutos. {{< /note >}}
Você deve ver um endereçco IPv4 na coluna
ADDRESS
; por exemplo:NAME CLASS HOSTS ADDRESS PORTS AGE example-ingress <none> hello-world.info 172.17.0.15 80 38s
-
Verifique se o Ingress controller está direcionando o tráfego:
curl --resolve "hello-world.info:80:$( minikube ip )" -i http://hello-world.info
Você deve ver:
Hello, world! Version: 1.0.0 Hostname: web-55b8c6998d-8k564
Você também pode visitar
hello-world.info
no seu navegador.-
Opcionalmente Procure o endereço IP externo reportado pelo minikube:
minikube ip
Adicione uma linha semelhante à seguinte no final do arquivo
/etc/hosts
no seu computador (você vai precisar de acesso de administrador):172.17.0.15 hello-world.info
{{< note >}} Altere o endereço IP para corresponder ao resultado de
minikube ip
. {{< /note >}}Depois que você fizer essa mudança, seu navegador enviará solicitações da URL
hello-world.info
para o Minikube
-
Criando um segundo Deployment
-
Crie outro Deployment usando o seguinte comando:
kubectl create deployment web2 --image=gcr.io/google-samples/hello-app:2.0
O resultado deve ser:
deployment.apps/web2 created
-
Expondo o segundo Deployment:
kubectl expose deployment web2 --port=8080 --type=NodePort
O resultado deve ser:
service/web2 exposed
Edite o Ingress existente
-
Edite o manifesto
example-ingress.yaml
existente, e adicione as seguintes linhas no final:- path: /v2 pathType: Prefix backend: service: name: web2 port: number: 8080
-
Aplique as mudanças:
kubectl apply -f example-ingress.yaml
Você deve ver:
ingress.networking/example-ingress configured
Testando o seu Ingress
-
Acesse a primeira versão da sua aplicação Hello World.
curl --resolve "hello-world.info:80:$( minikube ip )" -i http://hello-world.info
O resultado deve ser similar a:
Hello, world! Version: 1.0.0 Hostname: web-55b8c6998d-8k564
-
Acesse a segunda versão da sua aplicação Hello World.
curl --resolve "hello-world.info:80:$( minikube ip )" -i http://hello-world.info/v2
O resultado deve ser similar a:
Hello, world! Version: 2.0.0 Hostname: web2-75cd47646f-t8cjk
{{< note >}} Se você fez o passo opcional para atualizar o arquivo
/etc/hosts
, você também pode visitarhello-world.info
ehello-world.info/v2
do seu navegador. {{< /note >}}
{{% heading "whatsnext" %}}
- Leia mais sobre Ingress
- Leia mais sobre Ingress Controllers
- Leia mais sobre Services