Skip to content

Instantly share code, notes, and snippets.

@JPauloMoura
Created July 24, 2022 01:44
Show Gist options
  • Save JPauloMoura/0607c2329684818301b65c4e3ef1dc65 to your computer and use it in GitHub Desktop.
Save JPauloMoura/0607c2329684818301b65c4e3ef1dc65 to your computer and use it in GitHub Desktop.
Instrução de como podemos fazer o mapeamento de portas de um cluster kubernets local utilizando o Kind.

Criaremos um cluster kubernetes com:

  • 1 pods
  • 1 service para o pod
  • mapeando configurando as portas do cluster para usar o localhost

config.yaml

Nesse arquivo configuramos o mapeamento de portas entre o node e o host local. [localhos:8080] -> [nodeIP:30000]

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 30000
    hostPort: 8080

service.yaml

Utilizamo o service na frente dos nossos pods para que possamos encaminhas as requisições que chegam. Como os pods são efêmeros, o service mapeia os pods pela label, e encaminha a requisição.

Como local não temos um loadbalace vamo acesso o serviço através no NODE que tem o ip exposto fora do cluste. Utilizamos assim um service do tipo NodePort. [nodeIP:30000] -> [service:8080] -> [pod:80]

apiVersion: v1
kind: Service
metadata:
  name: svc-nginx
spec:
  type: NodePort
  selector:
    app: nginx-pod
  ports:
  - port: 3001
    targetPort: 80
    nodePort: 30000

pod.yaml

O pod vai ser onde o container da nossa aplicação ira rodar de fato. Nele definimos qual será imagem, recursos e a porta que será exposta.

Atenção a chave da label para que o service faça o mapeamente corretamente. [app:nome] e não [name:nome]

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx-pod
spec:
  containers:
  - name: nginx-pod
    image: nginx:latest
    resources:
      limits:
        memory: "100Mi"
        cpu: "100m"
    ports:
      - containerPort: 80

Execução

Criação do cluster com a config.

$ kind create cluster --name my-cluster --config=cluster-config.yaml

Criação do pod e do service.

$ kubectl apply -f pod.yaml
$ kubectl apply -f service.yaml

Como o roteamento de portas ficou.

 [localhos:8080] -> [nodeIP:30000] -> [service:8080] -> [pod:80]

Acessando a recurso.

$ curl localhost:8080
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment