能否在Kong OAuth2 introspection插件YAML中引用Kubernetes Secret?
可行,但需通过环境变量中转实现
直接在KongPlugin的config字段里引用Kubernetes Secret是不支持的,但可以通过环境变量+Kong插件配置占位符的方式实现从Secret获取introspection_url,具体步骤如下:
1. 创建存储URL的Kubernetes Secret
先把你的introspection URL做Base64编码(避免明文存储),然后创建Secret:
apiVersion: v1 kind: Secret metadata: name: oauth-introspection-url namespace: app type: Opaque data: INTROSPECTION_URL: <base64编码后的URL>
示例编码命令:echo -n "https://your-auth-server.com/introspect" | base64
2. 给Kong实例注入Secret环境变量
修改Kong的Deployment/StatefulSet配置,将Secret中的URL值注入为环境变量,环境变量命名需遵循KONG_<插件名大写>_<配置项名大写>的规则:
spec: template: spec: containers: - name: kong env: - name: KONG_OAUTH2_INTROSPECTION_INTROSPECTION_URL valueFrom: secretKeyRef: name: oauth-introspection-url key: INTROSPECTION_URL
3. 调整KongPlugin配置使用环境变量占位符
更新你的KongPlugin,将introspection_url的值设为环境变量的占位符:
apiVersion: configuration.konghq.com/v1 kind: KongPlugin metadata: name: oauth2-introspection namespace: app annotations: kubernetes.io/ingress.class: kong consumerRef: <你的消费者名称> # 补充实际的consumerRef值 plugin: oauth2-introspection config: introspection_url: $(KONG_OAUTH2_INTROSPECTION_INTROSPECTION_URL)
原理说明
Kong支持在插件配置中使用$(环境变量名)的占位符语法,当Kong加载配置时会自动替换为对应的环境变量值。这种方式既实现了从Secret获取敏感配置的需求,也符合Kubernetes的安全规范,避免敏感数据明文暴露在资源定义中。
内容的提问来源于stack exchange,提问作者lxodowd
相关产品推荐
相关产品推荐

