使用场景:

  我们在某些私有化场景下部署服务,一般情况下既然私有化了当然服务器对网络的限制就比较多,一般分两种情况  第一种彻底不让上网,那我这文章就别看了;第二种 就是服务器可以通过内部搭建的代理服务器上网,那这一种就可以用我这篇文章做个参考。

简单的架构图:

这个是一个简单的k8s架构图 我们的服务是 APP01 APP03 APP03

如APP02 是一个需要请求互联网某个接口的服务,如 https://xxxx.qq.com/xxx/xxx

呐,这个集群是不能上网的 只能通过公司的一个代理服务器上网和请求互联网接口,如图我们是在集群部署一个pac 的pod,至于pac是啥能搜索到我这帖子之前应该都知道了,这里不做啥介绍了,不多BB了

第一创建文件并且打镜像



mkdir  PAC
cd PAC

#创建pac文件
touch pac.action

{{alias}}
default    = +forward-override{forward .} 
pac     = +forward-override{forward xxx.xxx.xxx.xxx(代理服务器地址):88}
{default}
/
{pac}
.qq.com   #写你要代理的域名
.cip.cc


#创建Dockerfile文件
touch Dockerfile

FROM alpine:latest
MAINTAINER mading@xxxx.net
RUN apk --no-cache add privoxy 
ADD privoxy-start.sh /usr/local/bin/
ADD config /etc/privoxy/
COPY pac.action /etc/privoxy/ 
RUN chmod +r /etc/privoxy/config && chmod +x /usr/local/bin/privoxy-start.sh
CMD ["privoxy-start.sh"]
EXPOSE 8118

#创建配置文件
touch config

confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile pac.action
logfile logfile
listen-address  0.0.0.0:8118
toggle  1
enable-remote-toggle  0
enable-remote-http-toggle  0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
enable-proxy-authentication-forwarding 0
forwarded-connect-retries  0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
tolerate-pipelining 1
socket-timeout 300

#创建启动脚本文件
touch privoxy-start.sh


#!/bin/sh
CONFFILE=/etc/privoxy/config
PIDFILE=/var/run/privoxy.pid
if [ ! -f "${CONFFILE}" ]; then
	echo "Configuration file ${CONFFILE} not found!"
	exit 1
fi
/usr/sbin/privoxy --no-daemon --pidfile "${PIDFILE}" "${CONFFILE}"


#docker打成镜像
docker build -t test:01 .
#docker上传镜像
docker push test:01

 创建pac服务

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  privoxy-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: privoxy
  template:
    metadata:
      labels:
        app: privoxy
    spec:
      containers:
      - name: privoxy
        image: test:01(改为自己构建的镜像)
        ports:
        - containerPort: 8118
---
apiVersion: v1
kind: Service
metadata:
  name: privoxy-service
spec:
  selector:
    app: privoxy
  ports:
  - protocol: TCP
    port: 8118
    targetPort: 8118
    name: privoxy-deploy

在APP02deployment 加入以下env

此次我们要访问的域名是HTTPS的所以只需要代理HTTPS的域名

        - name: https_proxy
          value: http://privoxy-service:8118

验证:进入APP02的pod 执行curl https://www.cip.cc 看看是不是为代理服务器地址 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐