GilbertoJunior

Untitled

Mar 26th, 2026
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.43 KB | None | 0 0
  1. estrutura para funcionar um proxy-reverso utilizando kubernetes...
  2. -> ajustar ingress no kubernetes, para apontar para o path correto.. segue abaixo exemplo que esta funcionando
  3.  
  4. apiVersion: networking.k8s.io/v1
  5. kind: Ingress
  6. metadata:
  7. annotations:
  8. cert-manager.io/cluster-issuer: erp-waybe-prod-clusterissuer
  9. nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
  10. nginx.ingress.kubernetes.io/ssl-redirect: "true"
  11. name: erp-waybe-prod
  12. namespace: react
  13. spec:
  14. ingressClassName: nginx
  15. rules:
  16. - host: seu-dominio
  17. http:
  18. paths:
  19. - 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
  20. pathType: Prefix
  21. backend:
  22. service:
  23. name: nginx-ws-externo # nome do service
  24. port:
  25. number: 80
  26. - path: /
  27. pathType: Prefix
  28. backend:
  29. service:
  30. name: erp-waybe-prod-svc
  31. port:
  32. number: 80
  33. tls:
  34. - hosts:
  35. - seu-dominio
  36. secretName: mysecrets-erp-waybe-prod
  37.  
  38. -> Criar um service para esse ingress, segue exemplo abaixo
  39.  
  40. apiVersion: v1 # Esse é o service utilizado, note que ele nao tem um selector, sendo assim, ele precisa de apontar para o endpoint
  41. kind: Service
  42. metadata:
  43. name: nginx-ws-externo
  44. namespace: react
  45. spec:
  46. ports:
  47. - name: http-ws
  48. protocol: TCP
  49. port: 80
  50. targetPort: 80
  51.  
  52. -> Criar um endpoint, apontando para o servidor que estara rodando o nginx, nao precisa necessariamente estar rodando em uma infra local. Segue exemplo abaixo
  53.  
  54. apiVersion: discovery.k8s.io/v1
  55. kind: EndpointSlice
  56. metadata:
  57. name: nginx-ws-externo-1
  58. namespace: react
  59. labels:
  60. 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
  61. endpointslice.kubernetes.io/managed-by: staff
  62. addressType: IPv4
  63. ports:
  64. - name: http-ws
  65. protocol: TCP
  66. port: 80
  67. endpoints:
  68. - addresses:
  69. - 192.168.5.149
  70.  
  71. ## NO MOMENTO DESTA DOCUMENTACAO, TUDO ISSO ACIMA ESTAVA RODANDO EM UMA INFRA ORACLE-CLOUD
  72.  
  73. -> Criar container que sobe o nginx, segue exemplo abaixo
  74. ###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
  75. para fazer a descriptografia.. redirecionar para o back-end... deois criptografar novamente para enviar a resposta ao front-end
  76.  
  77. root@srv-sincronizador:/opt/microsservicos/nginx# cat docker-compose.yaml
  78. services:
  79. erp-proxy:
  80. image: nginx:stable-alpine
  81. container_name: erp-proxy
  82. restart: unless-stopped
  83. ports:
  84. - "80:80"
  85. - "443:443"
  86. volumes:
  87. - ./nginx.conf:/etc/nginx/nginx.conf:ro
  88. - /opt/microsservicos/nginx/certs:/opt/microsservicos/nginx/certs:ro
  89.  
  90. networks:
  91. - spring-cloud-network
  92.  
  93. networks:
  94. spring-cloud-network:
  95. external: true
  96. name: microsservicos_spring-cloud-network
  97.  
  98. root@srv-sincronizador:/opt/microsservicos/nginx# cat nginx.conf
  99. worker_processes auto;
  100.  
  101. events {
  102. worker_connections 1024;
  103. }
  104.  
  105. http {
  106. include /etc/nginx/mime.types;
  107. default_type application/octet-stream;
  108.  
  109. sendfile on;
  110. keepalive_timeout 65;
  111.  
  112. upstream spring_backend {
  113. server api-sincronizador:8069;
  114. }
  115.  
  116. server {
  117. listen 80;
  118. server_name erp.waybe.com.br;
  119.  
  120. location /ws-sincronizador {
  121. proxy_pass http://spring_backend;
  122. proxy_http_version 1.1;
  123.  
  124. proxy_set_header Upgrade $http_upgrade;
  125. proxy_set_header Connection "upgrade";
  126.  
  127. proxy_set_header Host $host;
  128. proxy_set_header X-Real-IP $remote_addr;
  129. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  130. proxy_set_header X-Forwarded-Proto http;
  131. proxy_set_header X-Forwarded-Host $host;
  132. proxy_set_header X-Forwarded-Port 80;
  133.  
  134. proxy_connect_timeout 60s;
  135. proxy_send_timeout 60s;
  136. proxy_read_timeout 3600s;
  137. }
  138.  
  139. location / {
  140. return 301 https://$host$request_uri;
  141. }
  142. }
  143.  
  144. server {
  145. listen 443 ssl;
  146. http2 on;
  147. server_name erp.waybe.com.br;
  148.  
  149. 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
  150. ssl_certificate_key /opt/microsservicos/nginx/certs/erp.key;
  151.  
  152. ssl_protocols TLSv1.2 TLSv1.3;
  153. ssl_ciphers HIGH:!aNULL:!MD5;
  154.  
  155. client_max_body_size 50m;
  156.  
  157. # 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
  158. # proxy_pass http://spring_backend;
  159. # proxy_http_version 1.1;
  160. #
  161. # proxy_set_header Upgrade $http_upgrade;
  162. # proxy_set_header Connection "upgrade";
  163. #
  164. # proxy_set_header Host $host;
  165. # proxy_set_header X-Real-IP $remote_addr;
  166. # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  167. # proxy_set_header X-Forwarded-Proto https;
  168. # proxy_set_header X-Forwarded-Host $host;
  169. # proxy_set_header X-Forwarded-Port 443;
  170. #
  171. # proxy_connect_timeout 60s;
  172. # proxy_send_timeout 60s;
  173. # proxy_read_timeout 3600s;
  174. # }
  175.  
  176. location / {
  177. proxy_pass http://spring_backend;
  178. proxy_http_version 1.1;
  179.  
  180. proxy_set_header Host $host;
  181. proxy_set_header X-Real-IP $remote_addr;
  182. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  183. proxy_set_header X-Forwarded-Proto https;
  184. proxy_set_header X-Forwarded-Host $host;
  185. proxy_set_header X-Forwarded-Port 443;
  186.  
  187. proxy_connect_timeout 60s;
  188. proxy_send_timeout 60s;
  189. proxy_read_timeout 60s;
  190. }
  191. }
  192. }
  193.  
  194.  
  195.  
Add Comment
Please, Sign In to add comment