ingress代理mysql_使用开发联调神器做k8s的 ingress
# 背景K8S集群内部的服务在外部不能访问,如需外部访问需要ingress做代理。官方有nginx-ingress,安装配置比较麻烦,想弄个简单的,只需要提交个表单就能配置完成的那种。想到之前写的一个开发联调神器dev-proxy可以做简单的代理使用,配置方便。把她部署在k8s集群里是否就能直接配置服务了。。想到就做。。。。# golang代码```package mainimport ("fla
# 背景
K8S集群内部的服务在外部不能访问,如需外部访问需要ingress做代理。官方有nginx-ingress,安装配置比较麻烦,想弄个简单的,只需要提交个表单就能配置完成的那种。
想到之前写的一个开发联调神器dev-proxy可以做简单的代理使用,配置方便。把她部署在k8s集群里是否就能直接配置服务了。。想到就做。。。。
# golang代码
```
package main
import (
"flag"
"github.com/go-proxy/dev"
"log"
"net/http"
"os"
)
func main() {
port := os.Getenv("port")
if port == "" {
p := flag.String("port", "80", "port default 80")
port = *p
}
dev := dev.NewProxy()
log.Println("start port :" + port)
err := http.ListenAndServe(":"+port, dev)
if err != nil {
log.Fatal(err)
}
}
```
这里我把端口改为80,也可以不改。
# 构建docker镜像Dockerfile
```
FROM scratch
COPY ./dev /usr/local/bin/dev
WORKDIR /usr/local/bin/
EXPOSE 80
CMD [ "dev" ]
```
# 创建部署文件 deploy.yaml
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: dev
labels:
app: dev
spec:
replicas: 1
selector:
matchLabels:
app: dev
template:
metadata:
labels:
app: dev
spec:
containers:
- name: dev
image: gogateway/dev:latest
ports:
- containerPort: 80
```
# 创建service 主注意nodePort端口
```
apiVersion: v1
kind: Service
metadata:
name: dev-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 80
selector:
app: dev
```
k8s的nodePort端口(默认为30000-32767)我使用下面的方式修改的端口,可能有不同改法,自行百度
```
vim /etc/kubernetes/manifests/kube-apiserver.yaml
--service-node-port-range=80-65535
```
# 部署到k8s集群
```
kubectl apply -f k8s.yaml
kubectl apply -f dev-service.yaml
```
# 服务配置
- 访问集群中任意节点 http://ip/admin即可打开配置页面
- 如下图,有 kong-kong-proxy 服务在运行
```
# 查看集群中的服务
kubectl get svc -o wide
```
![image.png](https://static.studygolang.com/200822/fa12d6c53a326c47aad67bd377794310.png)
- 配置填写:kong=>kong-kong-proxy(后缀=>k8s的服务名,即可访问)
- 访问 http://ip/kong 即可看到效果
# 拓展
- [ ] 可按域名路由到不同的服务
- [ ] 域名前缀的路由方式
# 项目地址
https://github.com/gogateway/dev
有疑问加站长微信联系(非本文作者))
更多推荐
所有评论(0)