Kubernetes: Criando um serviço e expondo-o ao mundo externo com o NodePort via Linha de Comando
Vamos criar um serviço e expor ele ao mundo externo com o NodePort via Linha de Comando
Este exemplo continua o que foi realizado em Kubernetes: Deploy de uma aplicação via Linha de comando
Procedimento
Arquivo de deployment webserver-svc.yaml
1) Crie o arquivo webserver-svc.yaml e adicione o conteúdo:
apiVersion: v1 kind: Service metadata: name: web-service labels: run: web-service spec: type: NodePort ports: - port: 80 protocol: TCP selector: app: nginx
Salve e feche o arquivo.
2) Execute o comando kubectl para fazer o deploy das informações no arquivo
kubectl create -f webserver-svc.yaml service "web-service" created
Verificando o que foi criado
- Services
kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6d20h web-service NodePort 10.100.253.18 <none> 80:31240/TCP 14s
O webservice foi criado no IP 10.100.253.18, e ao receber requisições na porta 31240 encaminha para a porta 80. O Pod a ser utilizado é realizado da instrução select.
Para o K8s é indiferente a ordem para criar o deployment ou o serviço.
Vamos pegar mais detalhes:
kubectl describe svc web-service Name: web-service Namespace: default Labels: run=web-service Annotations: <none> Selector: app=nginx Type: NodePort IP: 10.100.253.18 Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 31240/TCP Endpoints: 172.17.0.3:80,172.17.0.5:80,172.17.0.6:80 Session Affinity: None External Traffic Policy: Cluster Events: <none>
O valor em Endpoints informa os ips dos Pods.
Neste exemplo estamos utilizando o minikube, vamos pegar o ip
minikube ip 192.168.99.100
Abra o navegador e acesse o endereço
http://192.168.99.100:31240/