V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zealinux
V2EX  ›  Kubernetes

k8s & kong 里怎么方便添加一个 path 用于返回字符串?

  •  
  •   zealinux · 2020-11-27 18:17:56 +08:00 · 2228 次点击
    这是一个创建于 1453 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求:

    比如访问: http://example.com/abAB 返回是固定的一行文本字符串 (这个文本是微信给的,path 也是固定的,其实是用来验证域名所有者的)

    现在 example.com 域名是定位到 k8s 里的 kong

    kong 和应用服务都是部署在 k8s 里的。 域名也是 DNS 解析到 kong 的 LB 上的,

    想到的一个方法

    再在 k8s 里部署个 nginx (唯一作用就是这一个 path ), 然后用 kong 设置 route 绑定到这个 nginx 服务。但感觉有点复杂。

    问题:有没有更好的方式?


    不想在 k8s 的外面部署 nginx,即域名不能改 DNS 解析。

    6 条回复    2020-11-30 17:28:53 +08:00
    chazyu1996
        1
    chazyu1996  
       2020-11-27 18:39:30 +08:00
    ingress
    zzzmj
        2
    zzzmj  
       2020-11-27 19:46:06 +08:00
    可以使用 kong 的 pre-function 插件 给 kong 注册一个 KongPlugin plugin 选择 pre-function,然后编写一个 lua 脚本即可
    zzzmj
        3
    zzzmj  
       2020-11-27 19:48:47 +08:00
    k8s yaml 如下,在 ingress 层加 annotation 即可

    ---
    apiVersion: configuration.konghq.com/v1
    kind: KongPlugin
    metadata:
    name: plugin name
    plugin: pre-function
    config:
    functions:
    - |
    local path = kong.request.get_path()
    if string.sub(path, -14) == "文件名.txt" then
    return kong.response.exit(200, "微信要求返回的内容")
    end
    zealinux
        4
    zealinux  
    OP
       2020-11-30 13:58:13 +08:00
    @zzzmj 感谢,

    我执行时报错了,不知道哪里错了。
    kubectl create -f wechat-verify-domain.yaml

    The KongPlugin "wechat-verify-domain" is invalid: plugin: Required value
    zzzmj
        6
    zzzmj  
       2020-11-30 17:28:53 +08:00
    看看第二个 tab Kubernetes 里怎么写的 yaml,照着写一个试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1062 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:48 · PVG 03:48 · LAX 11:48 · JFK 14:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.