有没有办法在运行时在我的 Kubernetes 微服务中学习大使服务前缀?
以这个配置为例:
---
apiVersion: ambassador/v1
kind: Mapping
name: myservice_get_mapping
prefix: /myprefix/
service: myservice
从我的 docker 容器中,我想获取“/myprefix/”。通过一些 env 变量进行部署,或者如果无法使用 env 变量以编程方式完成。
谢谢。
有没有办法在运行时在我的 Kubernetes 微服务中学习大使服务前缀?
以这个配置为例:
---
apiVersion: ambassador/v1
kind: Mapping
name: myservice_get_mapping
prefix: /myprefix/
service: myservice
从我的 docker 容器中,我想获取“/myprefix/”。通过一些 env 变量进行部署,或者如果无法使用 env 变量以编程方式完成。
谢谢。
假设Ambassador Mapping
资源将 REST 资源与 Kubernetes 服务相关联,如果我正确理解您的问题,您可以通过JSONPath获取注释元数据,然后解析字段。prefix:
大使文档中的 k8s 服务示例:
kind: Service
metadata:
name: httpbin
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: tour-ui_mapping
prefix: /test/
service: http://tour
spec:
ports:
- name: httpbin
port: 80
获取prefix:
字段值的命令行:
$ kubectl get svc httpbin -o jsonpath='{.metadata.annotations}'| grep -w "prefix:"| awk '{print $2}'
/测试/
更新:
或者,您也可以考虑通过 Bearer 令牌身份验证方法直接调用 REST API 来检索相同的结果:
curl -k -XGET -H "Authorization : Bearer $MY_TOKEN" 'https://<API-server_IP>/api/v1/namespaces/default/services/httpbin' -H "Accept: application/yaml"| grep -w "prefix:"| awk '{print $2}
$MY_TOKEN
正如我在之前的回答中已经指出的那样,必须为变量提供适当的令牌,该令牌有权对 REST API 执行上述查询。