zealinux

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

  •  
  •   zealinux · Nov 27, 2020 · 3114 views
    This topic created in 2005 days ago, the information mentioned may be changed or developed.

    需求:

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

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

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

    想到的一个方法

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

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


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

    6 replies    2020-11-30 17:28:53 +08:00
    chazyu1996
        1
    chazyu1996  
       Nov 27, 2020
    ingress
    zzzmj
        2
    zzzmj  
       Nov 27, 2020
    可以使用 kong 的 pre-function 插件 给 kong 注册一个 KongPlugin plugin 选择 pre-function,然后编写一个 lua 脚本即可
    zzzmj
        3
    zzzmj  
       Nov 27, 2020
    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
       Nov 30, 2020
    @zzzmj 感谢,

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

    The KongPlugin "wechat-verify-domain" is invalid: plugin: Required value
    zzzmj
        6
    zzzmj  
       Nov 30, 2020
    看看第二个 tab Kubernetes 里怎么写的 yaml,照着写一个试试
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   953 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 20:06 · PVG 04:06 · LAX 13:06 · JFK 16:06
    ♥ Do have faith in what you're doing.