命名空间解析

查找应用程序命名空间会尽最大努力。 我们会迭代一些步骤来找到它。 最简单和最常见的一种方法是在适当的配置中指定它,例如

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

请记住,config map 也可以这样做。 如果未指定此类命名空间,它将按以下顺序读取

  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" 属性进行配置; 有关确切的详细信息,请查阅客户端文档。

如果在上述步骤中未能找到命名空间,将引发异常。