全局禁用kubernetes enableservicelink ?



有没有办法全局禁用服务链接?podSpec中有一个字段:

enableServiceLinks: false

true默认。我在库贝利特找不到任何能杀死它的东西。或者有一些很酷的webhook工具链我可以使用

您可以使用Kubernetes-native策略引擎Kyverno。Kyverno策略可以验证,更改(参见:Mutate Resources),并生成Kubernetes资源。

Kyverno策略是一组规则,可以应用于整个集群(ClusterPolicy),也可以应用于特定的命名空间(Policy)。


我将创建一个示例来说明它是如何工作的。

首先我们需要安装Kyverno,你可以选择直接从最新的发布清单中安装Kyverno,或者使用Helm(参见:快速入门指南):

$ 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中。

让我们创建一个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文档中找到更多带有详细解释的示例。

相关内容

  • 没有找到相关文章

最新更新