命名空间解析
查找应用程序命名空间是基于最佳努力原则进行的。我们会按照一系列步骤来尝试找到它。最简单且最常见的方法是在适当的配置中指定它,例如:
spring:
application:
name: app
cloud:
kubernetes:
secrets:
name: secret
namespace: default
sources:
# Spring Cloud Kubernetes looks up a Secret named 'a' in namespace 'default'
- name: a
# Spring Cloud Kubernetes looks up a Secret named 'secret' in namespace 'b'
- namespace: b
# Spring Cloud Kubernetes looks up a Secret named 'd' in namespace 'c'
- namespace: c
name: d
请记住,对于配置映射也可以执行相同的操作。如果未指定此类命名空间,将按以下顺序读取:
-
来自属性
spring.cloud.kubernetes.client.namespace -
来自由
spring.cloud.kubernetes.client.serviceAccountNamespacePath属性指定的文件中的字符串 -
来自
/var/run/secrets/kubernetes.io/serviceaccount/namespace文件中的字符串(Kubernetes 默认命名空间路径) -
来自指定的客户端方法调用(例如 fabric8 的:
KubernetesClient::getNamespace),如果客户端提供了此类方法。这反过来可以通过环境属性进行配置。例如,fabric8 客户端可以通过 "KUBERNETES_NAMESPACE" 属性进行配置;具体细节请查阅客户端文档。
在上述步骤中未能找到命名空间将导致抛出异常。