命名空間解析

尋找應用程式命名空間是盡力而為的過程。我們會依序執行一些步驟來尋找它。最簡單且最常見的方法是在適當的組態中指定它,例如

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" 屬性進行配置;有關確切詳細資訊,請參閱用戶端文件。

如果從上述步驟中找不到命名空間,將會引發例外。