如何使用metadata.namespace来注解Kubernetes Service?

问题描述 投票:0回答:1

在 Kubernetes Pod 定义中,我使用

metadata.namespace
设置适当的环境变量。

apiVersion: apps/v1
kind: Deployment
[...]
  template:
    spec:
      containers:
[...]
          env:
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: LOG_DIR
              value: /logs/$(POD_NAMESPACE)

是否有类似的机制可以使用

metadata.namespace
来设置Service的注释?

---
apiVersion: v1
kind: Service
metadata:
  annotations:
    external-dns.alpha.kubernetes.io/hostname: {metadata.namespace}.domain.com
kubernetes annotations kubernetes-service
1个回答
0
投票

简短的回答,你不能。

$(VAR_NAME)
语法用于依赖的环境变量,但不用于注释,因为注释是一个通用概念,用于所有 kubernetes 对象,并且从 k8s 的角度来看,只是附加到资源的键/值对,没有任何方式与底层对象交互。

通常,这应该由模板引擎处理,即在 Helm 中,您可以使用 {{ Release.Namespace }} (区分大小写!)在资源模板中注入当前命名空间。

但是,如果您正在处理普通的 k8s 清单,没有一些外部工具,则必须在文件中提供完整的注释。

© www.soinside.com 2019 - 2024. All rights reserved.