基于Nginx的开墙方案
Kubernetes集群内部通过服务名能进行相互调用,但如果Kubernetes中的pod需要调用外部服务,而且这些外部服务是属于不同的安全区域,就面临开墙的问题,因为Kubernetes Pod能够漂移道不同的宿主机中,因此很难做到只针对某几台确定的宿主机进行防火墙的开通。参考传统的架构中对外部服务的调用,在Kubernetes内部配置两台宿主机专门部署Nginx Pod,进行反向代理进行实现。
- 外部调用内部,Ingress所在节点开墙
- 内部调用外部,Nginx所在节点开墙
- 为什么不在ingress内做反向代理,因为Ingress中的配置会随着pod的变化刷新掉,所以需要另外再启动个Nginx pod,固定在2台机器上。
- Nginx的配置不能直接固定在Pod中,因为有新的外部服务进行接入时,需要更新nginx.conf,因此需要采用configmap进行配置。
- 每个服务挂接一个不同的location
apiVersion: v1
data:
nginx.conf: |-
worker_processes ; events { worker_connections ; } http {
sendfile on; server {
listen ; # a test endpoint that returns http 200s
location /helloService {
proxy_pass http://somehost:somenodeport/;
proxy_set_header X-Real-IP $remote_addr;
}
} }
kind: ConfigMap
metadata:
name: nginx-config
namespace: default
nginx.yaml文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
run: my-nginx
spec:
replicas:
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: sz-pg-oam-docker-hub-.tendcloud.com/library/nginx:1.9
ports:
- containerPort:
volumeMounts:
- name: config-volume
mountPath: /etc/nginx
volumes:
- name: config-volume
configMap:
name: nginx-config
nginx启动后会替换/etc/nginx中的内容,变成只有一个nginx.config(我们配置的内容)
为了其他pod访问方面,还需要再建立一个services:nginxsvc
然后其他pod进去后通过
curl http://nginxsvc/helloService/hello
进行访问。
其他得命名空间访问
curl http://svcname:namespace/helloService/hello
这样在pod进行飘移后不需要再度进行不同主机的开墙,只需要保持部署nginx的两台机器开墙即可
此方案问题在于当有新的服务接入时,需要更新configmap配置,更新完后发现nginx内的目录文件也更新了,但是nginx没有reload配置。
需要将nginx重启后配置生效,可以通过kubectl delete pod方式进行逐个更新。
基于Nginx的开墙方案的更多相关文章
- Upsync:微博开源基于Nginx容器动态流量管理方案
Upsync:微博开源基于Nginx容器动态流量管理方案 https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=404151075& ...
- 基于Nginx进行地图瓦片缓存的方案描述
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 在产品的迭代中,我们完成了移动端瓦片缓存方案和服务端瓦片缓存 ...
- 基于nginx的频率控制方案思考和实践
基于nginx的频率控制方案思考 标签: 频率控制 nginx 背景 nginx其实有自带的limit_req和limit_conn模块,不过它们需要在配置文件中进行配置才能发挥作用,每次有频控策略的 ...
- 基于nginx tomcat redis分布式web应用的session共享配置
一.前言 nginx 作为目前最流行的开源反向代理HTTP Server,用于实现资源缓存.web server负载均衡等功能,由于其轻量级.高性能.高可靠等特点在互联网项目中有着非常普遍的应用,相关 ...
- 基于nginx的tomcat负载均衡和集群
要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...
- 视频支持拖动进度条播放的实现(基于nginx)
http协议下的flv/mp4流式播放支持的三个要点: 1 服务器端要支持flv/mp4流式播放,现在nginx或者lighttpd都是支持这样的应用的,还支持mp4的流式播放(默认编译版本一般都是打 ...
- windows下编译基于nginx插件的rtmp流媒体服务nginx-rtmp
1 概述 rtmp流媒体服务器,开源方案有多种,包括srs,red5,crtmpserver,fms,nginx插件等.本文描述了基于nginx插件的方式来实现rtmp流媒体服务器nginx-rtmp ...
- 基于Quick-cocos2d-x的资源更新方案 二
写在前面 又是12点半了,对于一个程序员来说,这是一个黄金时间,精力旺盛,我想,是最适合整理和分享一些思路的时候了. 自从上次写了 基于Quick-cocos2d-x的资源更新方案 同样可见quick ...
- 基于Ruby的watir-webdriver自动化测试方案与实施(五)
接着基于Ruby的watir-webdriver自动化测试方案与实施(四) http://www.cnblogs.com/Javame/p/4164570.html 继续 ... ... 关于特殊控件 ...
随机推荐
- 12-5 NSSet
原文:http://rypress.com/tutorials/objective-c/data-types/nsset NSSet NSSet, NSArray, and NSDictionary ...
- 坐标转换——GCJ-02
WGS84(World Geodetic System 1984),是为GPS 全球定位系统 使用而建立的坐标系统GCJ-02,我国在WGS84的基础上加密得到BD-09,百度坐标在GCJ-02基础上 ...
- servlet学习记录:Servlet中的service()方法
Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServ ...
- Combination Sum I&&II(经典的回溯算法题)
I: Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C w ...
- Go语言的web程序写法
一切来自于扩展... 核心也即处理输入输出... // helloworld project main.go package main import ( "fmt" "h ...
- linux下用xampp安装php集成环境,并修改各自端口号
一:安装xampp 1.到官网下载linux版xampp https://www.apachefriends.org/zh_cn/index.html 下载后为:xampp-linux-x64- ...
- Linux之父Linus的8个趣闻轶事
博客中的文章均为 meelo 原创,请务必以链接形式注明本文地址 <只是为了好玩:Linux之父林纳斯自传>是一本很古老的书了,2001年就有了中文版,在2014的时候图灵图书又把它重新翻 ...
- AC日记——「HNOI2017」礼物 LiBreOJ 2020
#2020. 「HNOI2017」礼物 思路: A题进程: 一眼出式子->各种超时过不去->看题解明白还有fft这个东西->百度文库学习fft->学习dft->学习fft ...
- Ext 目录
adapter:负责将里面提供第三方底层库(包括Ext自带的底层库)映射为Ext所支持的底层库. build: 压缩后的ext全部源码(里面分类存放). docs: API帮助文档. exmaples ...
- 求问asp.net mvc发布问题
正常发布 浏览后如下