我正在尝试在 Azure AKS 中创建一个 K8s 集群,当集群准备就绪时,我可以看到在default
命名空间中创建了几个资源。示例秘密,配置图:
作为安全建议,不应在命名空间下创建任何 k8s 资源,default
那么如何避免呢?它是在集群创建期间默认创建的。
我正在尝试在 Azure AKS 中创建一个 K8s 集群,当集群准备就绪时,我可以看到在default
命名空间中创建了几个资源。示例秘密,配置图:
作为安全建议,不应在命名空间下创建任何 k8s 资源,default
那么如何避免呢?它是在集群创建期间默认创建的。
我在这里发现了同样的问题:
用户srbose-msft(微软员工)很好地解释了操作原理:
在 Kubernetes 中,a
ServiceAccount controller
管理命名空间内的 ServiceAccount ,并确保 每个活动命名空间中都存在 名为“ default ”的ServiceAccount 。[参考]TokenController 作为
kube-controller-manager
. 它异步运行。它 监视 ServiceAccount 创建并创建相应的 ServiceAccount 令牌 Secret 以允许 API 访问。[参考] 因此, 还创建 了 默认ServiceAccount 令牌的秘密。从作为 pod 运行的应用程序信任自定义 CA 通常需要一些额外的应用程序配置。您需要将 CA 证书包添加到 TLS 客户端或服务器信任的 CA 证书列表中。例如,您可以通过解析证书链并将解析的证书添加到结构中的
RootCAs
字段 来使用 golang TLS 配置来执行此操作tls.Config
。您可以将 CA 证书作为 您的 pod 有权使用的ConfigMap分发。[参考] AKS 通过 在这些命名空间中 命名 的ConfigMap在所有活动命名空间中实现这一点。
kube-root-ca.crt
您还应该在 默认命名空间中找到一个 名为 的服务 。它具有 ClusterIP 的 ServiceType 并 在默认命名空间中向集群公开了 同样在内部命名 的 API 服务器 端点。
kubernetes
kubernetes
上面提到的所有资源都是在集群创建时设计好的, 不能阻止它们的创建。如果您尝试手动删除这些资源,它们将被重新创建以确保
kube-controller-manager
.
此外:
Kubernetes 集群不应使用默认命名空间 Policy 仍处于 Preview中。目前,该模式并未明确允许 在策略评估期间排除默认命名空间中的 Kubernetes 资源。但是,在撰写本文时,架构允许
labelSelector.matchExpressions[].operator
可以将其设置为NotIn
适合 带有标签labelSelector.matchExpressions[].values
的 Service default/kubernetes :
component=apiserver
默认值
ServiceAccount
、默认值ServiceAccount token Secret
和RootCA ConfigMap
它们本身没有使用任何标签创建,因此无法添加到此列表中。如果这阻碍了您的用例,我会敦促您在 https://techcommunity.microsoft.com/t5/azure/ct-p/Azure分享您的反馈