Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- estrutura para funcionar um proxy-reverso utilizando kubernetes...
- -> ajustar ingress no kubernetes, para apontar para o path correto.. segue abaixo exemplo que esta funcionando
- apiVersion: networking.k8s.io/v1
- kind: Ingress
- metadata:
- annotations:
- cert-manager.io/cluster-issuer: erp-waybe-prod-clusterissuer
- nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
- nginx.ingress.kubernetes.io/ssl-redirect: "true"
- name: erp-waybe-prod
- namespace: react
- spec:
- ingressClassName: nginx
- rules:
- - host: seu-dominio
- http:
- paths:
- - path: /ws-sincronizador # Esse path esta apontando para o endpoint que passará pelo proxy-reverso... caso qualquer outra solicitacao que chegar no ingress... e for diferente disso, cai no outro path da linha 26
- pathType: Prefix
- backend:
- service:
- name: nginx-ws-externo # nome do service
- port:
- number: 80
- - path: /
- pathType: Prefix
- backend:
- service:
- name: erp-waybe-prod-svc
- port:
- number: 80
- tls:
- - hosts:
- - seu-dominio
- secretName: mysecrets-erp-waybe-prod
- -> Criar um service para esse ingress, segue exemplo abaixo
- apiVersion: v1 # Esse é o service utilizado, note que ele nao tem um selector, sendo assim, ele precisa de apontar para o endpoint
- kind: Service
- metadata:
- name: nginx-ws-externo
- namespace: react
- spec:
- ports:
- - name: http-ws
- protocol: TCP
- port: 80
- targetPort: 80
- -> Criar um endpoint, apontando para o servidor que estara rodando o nginx, nao precisa necessariamente estar rodando em uma infra local. Segue exemplo abaixo
- apiVersion: discovery.k8s.io/v1
- kind: EndpointSlice
- metadata:
- name: nginx-ws-externo-1
- namespace: react
- labels:
- kubernetes.io/service-name: nginx-ws-externo # Aqui é onde faço a referencia do service acima... ligando o service ao endpoint, neste cenario, meu nginx esta rodando na maquina 192.168.5.149
- endpointslice.kubernetes.io/managed-by: staff
- addressType: IPv4
- ports:
- - name: http-ws
- protocol: TCP
- port: 80
- endpoints:
- - addresses:
- - 192.168.5.149
- ## NO MOMENTO DESTA DOCUMENTACAO, TUDO ISSO ACIMA ESTAVA RODANDO EM UMA INFRA ORACLE-CLOUD
- -> Criar container que sobe o nginx, segue exemplo abaixo
- ###Abaixo esta o container que sobe o nginx, e arquivo por si só... Vale ressaltar que para isso funcionar, foi preciso pegar as secrets do cerftificado SSL do erp em questao, pois o nginx precisa ter acesso a elas
- para fazer a descriptografia.. redirecionar para o back-end... deois criptografar novamente para enviar a resposta ao front-end
- root@srv-sincronizador:/opt/microsservicos/nginx# cat docker-compose.yaml
- services:
- erp-proxy:
- image: nginx:stable-alpine
- container_name: erp-proxy
- restart: unless-stopped
- ports:
- - "80:80"
- - "443:443"
- volumes:
- - ./nginx.conf:/etc/nginx/nginx.conf:ro
- - /opt/microsservicos/nginx/certs:/opt/microsservicos/nginx/certs:ro
- networks:
- - spring-cloud-network
- networks:
- spring-cloud-network:
- external: true
- name: microsservicos_spring-cloud-network
- root@srv-sincronizador:/opt/microsservicos/nginx# cat nginx.conf
- worker_processes auto;
- events {
- worker_connections 1024;
- }
- http {
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- upstream spring_backend {
- server api-sincronizador:8069;
- }
- server {
- listen 80;
- server_name erp.waybe.com.br;
- location /ws-sincronizador {
- proxy_pass http://spring_backend;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto http;
- proxy_set_header X-Forwarded-Host $host;
- proxy_set_header X-Forwarded-Port 80;
- proxy_connect_timeout 60s;
- proxy_send_timeout 60s;
- proxy_read_timeout 3600s;
- }
- location / {
- return 301 https://$host$request_uri;
- }
- }
- server {
- listen 443 ssl;
- http2 on;
- server_name erp.waybe.com.br;
- ssl_certificate /opt/microsservicos/nginx/certs/erp.crt; ##chaves crt e key obtidas atravez deste comando, lembrar de trocar crt por key quando for pegar o valor > kubectl get secret mysecrets-erp-waybe-prod -n react -o jsonpath='{.data.tls\.crt}' | base64 -d
- ssl_certificate_key /opt/microsservicos/nginx/certs/erp.key;
- ssl_protocols TLSv1.2 TLSv1.3;
- ssl_ciphers HIGH:!aNULL:!MD5;
- client_max_body_size 50m;
- # location /ws-sincronizador { # nao foi necessario descomentar o bloco 443, pois no service, estou redirecionando o trafego para a porta 80... e no endpoint redireciono para porta 80 do nginx
- # proxy_pass http://spring_backend;
- # proxy_http_version 1.1;
- #
- # proxy_set_header Upgrade $http_upgrade;
- # proxy_set_header Connection "upgrade";
- #
- # proxy_set_header Host $host;
- # proxy_set_header X-Real-IP $remote_addr;
- # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- # proxy_set_header X-Forwarded-Proto https;
- # proxy_set_header X-Forwarded-Host $host;
- # proxy_set_header X-Forwarded-Port 443;
- #
- # proxy_connect_timeout 60s;
- # proxy_send_timeout 60s;
- # proxy_read_timeout 3600s;
- # }
- location / {
- proxy_pass http://spring_backend;
- proxy_http_version 1.1;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header X-Forwarded-Host $host;
- proxy_set_header X-Forwarded-Port 443;
- proxy_connect_timeout 60s;
- proxy_send_timeout 60s;
- proxy_read_timeout 60s;
- }
- }
- }
Add Comment
Please, Sign In to add comment