使用开发联调神器做k8s的ingress

如水网 · · 1534 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

背景

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.yaml 主注意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

服务配置

# 查看集群中的服务
kubectl get svc -o wide

image.png
  • 配置填写:kong=>kong-kong-proxy(后缀=>k8s的服务名,即可访问)
  • 访问 http://ip/kong 即可看到效果

拓展

  • 可按域名路由到不同的服务
  • 域名前缀的路由方式

项目地址

https://github.com/gogateway/dev


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:如水网

查看原文:使用开发联调神器做k8s的ingress

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1534 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传