公司利用K8S搭建測試環境,以及存在多套測試換,目前的想法是每一套測試環境使用一個出口IP。
方案:
1.搭建ingress
2.經過搭建一個反向代理api
結合實際狀況,咱們使用搭建一個反向代理解決此問題。ide
咱們環境中存在如下K8S服務
vipapi-mall-com #基於.netcore
billapi-mall-com #基於PHP
www-mall-com #基於PHP
mobile-mall-com #基於VUE測試
vipapi-mall-com對外的域名就是vipapi.mall.com
billapi-mall-com對外的域名就是billapi.mall.com.net
kubernetes的KUBE-DNS的地址是10.254.0.2,使用的是coredns
咱們存在以下命名空間
branches
tags代理
配置文件以下:code
upstream vipapi { server vipapi-mall-com; #正常狀況這裏放是會出錯的,可是若是加了reslover就不會報錯了,這裏填寫K8S的service名稱便可 } server { listen 80; server_name vipapi.mall.com; access_log off; resolver 10.254.0.2; #注意DNS解析的配置必須放在server下不能放在location下,不然沒法解析 location / { proxy_http_version 1.1; proxy_set_header Connection ""; proxy_redirect off ; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 50m; client_body_buffer_size 256k; proxy_connect_timeout 30; proxy_send_timeout 30; proxy_read_timeout 60; proxy_buffer_size 256k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_temp_file_write_size 256k; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404; proxy_max_temp_file_size 128m; proxy_pass http://vipapi; } }