命名空间解析

查找应用程序命名空间是基于尽力而为的基础。为了找到它,我们会迭代一些步骤。最简单也是最常见的方法是在正确的配置中指定它,例如

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

请记住,对于 ConfigMap 也可以这样做。如果没有指定此类命名空间,它将被读取(按以下顺序)

  1. 来自属性 spring.cloud.kubernetes.client.namespace

  2. 来自 spring.cloud.kubernetes.client.serviceAccountNamespacePath 属性指定的配置文件中的字符串

  3. 来自 /var/run/secrets/kubernetes.io/serviceaccount/namespace 文件中的字符串(Kubernetes 默认命名空间路径)

  4. 来自指定的客户端方法调用(例如 Fabric8 的:KubernetesClient::getNamespace),如果客户端提供了此类方法。这反过来可以通过环境属性进行配置。例如,Fabric8 客户端可以通过“KUBERNETES_NAMESPACE”属性进行配置;请参阅客户端文档以获取确切的详细信息。

如果无法从上述步骤中找到命名空间,则将引发异常。