有没有办法全局禁用服务链接。在podSpec
中有一个字段
enableServiceLinks: false
但默认情况下它是true
。我在库贝莱特找不到能杀死它的东西。或者有没有什么很酷的入场webhook工具链我可以用?
发布于 2021-10-13 12:39:02
您可以使用名为Kyverno的Kubernetes原生策略引擎。Kyverno策略可以验证、突变(参见:Mutate Resources),并生成Kubernetes资源。
Kyverno策略是可应用于整个集群(ClusterPolicy
)或特定命名空间(Policy
)的规则集合。
我将创建一个示例来说明它是如何工作的。
首先我们需要安装Kyverno,您可以选择直接从最新版本清单安装Kyverno,或者使用Helm (参见:Quick Start guide):
$ kubectl create -f https://raw.githubusercontent.com/kyverno/kyverno/main/definitions/release/install.yaml
成功安装后,我们可以创建一个简单的ClusterPolicy
$ cat strategic-merge-patch.yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: strategic-merge-patch
spec:
rules:
- name: enableServiceLinks_false_globally
match:
resources:
kinds:
- Pod
mutate:
patchStrategicMerge:
spec:
enableServiceLinks: false
$ kubectl apply -f strategic-merge-patch.yaml
clusterpolicy.kyverno.io/strategic-merge-patch created
$ kubectl get clusterpolicy
NAME BACKGROUND ACTION READY
strategic-merge-patch true audit true
该策略会将enableServiceLinks: false
添加到新创建的实例中。
让我们创建一个Pod并检查它是否如预期的那样工作:
$ kubectl run app-1 --image=nginx
pod/app-1 created
$ kubectl get pod app-1 -oyaml | grep "enableServiceLinks:"
enableServiceLinks: false
它还可以与Deployments
、StatefulSets
、DaemonSets
等一起使用:
$ kubectl create deployment deploy-1 --image=nginx
deployment.apps/deploy-1 created
$ kubectl get pod deploy-1-7cfc5d6879-kfdlh -oyaml | grep "enableServiceLinks:"
enableServiceLinks: false
在Kyverno Writing Policies documentation中可以找到更多具有详细解释的示例。
https://stackoverflow.com/questions/69551773
复制相似问题