我试图在Azure中创建一个K8s集群,当集群准备就绪时,我可以看到在default
命名空间中创建了几个资源。示例机密,configmap:
作为一个安全建议,不应该在k8s命名空间下创建任何default
资源,那么如何避免它呢?默认情况下,它是在集群创建期间创建的。
发布于 2021-08-23 08:33:38
我发现了同样的问题问 这里
用户srbose (Microsoft )很好地解释了操作原理:
在Kubernetes中,
ServiceAccount controller
在名称空间中管理ServiceAccounts,并确保每个活动名称空间中都存在一个名为"default“的ServiceAccount。[参考文献] TokenController作为kube-controller-manager
的一部分运行。它以异步方式工作。它监视ServiceAccount的创建,并创建相应的ServiceAccount令牌秘密,以允许API访问。[参考文献]因此,还创建了默认 ServiceAccount令牌的秘密。 信任作为pod运行的应用程序中的自定义CA通常需要一些额外的应用程序配置。您需要将CA证书包添加到TLS客户端或服务器信任的CA证书列表中。例如,您可以通过解析证书链并将解析后的证书添加到RootCAs
结构中的tls.Config
字段中,使用golang配置来完成此操作。 您可以将CA证书分发为您的荚可以使用的ConfigMap。[参考文献] AKS通过这些命名空间中的名为kube-root-ca.crt
的ConfigMaps在所有活动名称空间中实现了这一点。 您还将在kubernetes
默认命名空间中找到一个名为的服务。它有一个ServiceType of ClusterIP,在默认名称空间中向集群内部公开API Server Endpoint (也称为)。 在集群创建时,上面提到的所有资源都将由设计来创建,它们的创建无法阻止。如果您尝试手动删除这些资源,则将重新创建这些资源,以确保kube-controller-manager
能够实现所需的目标状态。
此外:
Kubernetes集群不应该使用默认的命名空间。策略仍然处于预览中。目前,架构没有显式地允许在策略评估期间排除默认命名空间中的Kubernetes资源。但是,在编写本报告时,模式允许将带有标签的服务default/kubernetes的
labelSelector.matchExpressions[].operator
设置为带有适当labelSelector.matchExpressions[].values
的NotIn
:component=apiserver
默认的ServiceAccount
、默认的ServiceAccount token Secret
和RootCA ConfigMap
本身都不是用任何标签创建的,因此不能添加到这个列表中。如果这妨碍了您的用例,我将敦促您在https://techcommunity.microsoft.com/t5/azure/ct-p/Azure上分享您的反馈。
https://stackoverflow.com/questions/68865255
复制相似问题