有没有办法在不知道其来源并避免浏览所有可能来源的情况下获取环境变量的值?
假设在 YAML 领域,我们可以拥有:
env:
- name: CONF_ENV
value: test
或者:
env:
- name: CONF_ENV
valueFrom:
configMapKeyRef:
name: my-config-map
key: CONF_ENV
但甚至还有许多其他来源。
现在,当使用 Kubernetes 的 Go SDK 时,在这里https://pkg.go.dev/k8s.io/api/core/v1#EnvVar我看到我可以这样做:
import (
corev1 "k8s.io/api/core/v1"
...
)
...
var myConfEnv corev1.EnvVar
...
// then I can retrieve the `Value`
myConfEnv.Value
// or I need to navigate the instance of type `corev1.EnvVar` with a few nested structs
// https://pkg.go.dev/k8s.io/api/core/v1#EnvVarSource
// https://pkg.go.dev/k8s.io/api/core/v1#ConfigMapKeySelector
// https://pkg.go.dev/k8s.io/api/core/v1#LocalObjectReference
// ... then somehow retrieve this value (how?)
// the same flow of nested structs applies for other sources in `EnvVarSource`
是否可以Value
在 Go 中检索它而忽略 type 实例中的内容corev1.EnvVar
?某种方便的代码为我们进行迭代?
作为替代方法,如何corev1.EnvVar
在 Go 中检索来自 ConfigMap 的值?