公司动态
HNC 与 Helm 集成:简化多环境命名空间管理的完整方案
HNC 与 Helm 集成简化多环境命名空间管理的完整方案【免费下载链接】hierarchical-namespacesHome of the Hierarchical Namespace Controller (HNC). Adds hierarchical policies and delegated creation to Kubernetes namespaces for improved in-cluster multitenancy.项目地址: https://gitcode.com/gh_mirrors/hi/hierarchical-namespacesHierarchical Namespace Controller (HNC) 是一款为 Kubernetes 提供命名空间层级管理的工具通过 Helm 集成可实现多环境命名空间的快速部署与高效管理。本文将详细介绍如何通过 Helm 简化 HNC 的安装配置以及如何利用这一组合优化多租户场景下的命名空间层级策略。为什么选择 HNC 与 Helm 集成在 Kubernetes 集群中命名空间的管理往往面临以下挑战多团队协作时命名空间结构混乱跨命名空间权限继承复杂环境一致性难以保障资源配额分配效率低下HNC 通过引入命名空间层级关系解决了这些问题而 Helm 则提供了标准化的部署方式。两者结合可实现 ✅ 一键部署完整的层级命名空间体系 ✅ 环境配置的版本化管理 ✅ 跨集群部署的一致性保障 ✅ 资源配额的层级化分配快速上手HNC 的 Helm 安装指南准备工作确保环境满足以下要求Kubernetes 集群 v1.16Helm v3.0kubectl 命令行工具安装步骤克隆项目仓库git clone https://gitcode.com/gh_mirrors/hi/hierarchical-namespaces cd hierarchical-namespaces生成 Helm Chartexport HNC_REGISTRYgcr.io/k8s-staging-multitenancy export HNC_IMG_NAMEhnc-manager export HNC_IMG_TAGv1.1.0 make charts安装 HNC Charthelm install hnc charts/hnc --create-namespace -n hnc-system⚠️ 注意不要修改 release 名称(hnc)和命名空间(hnc-system)HNC 内部依赖这些固定值。验证安装kubectl get pods -n hnc-system配置自定义Helm values.yaml 优化HNC 的 Helm Chart 提供了丰富的配置选项主要通过charts/hnc/values.yaml文件进行自定义关键配置项配置项说明示例值hncExcludeNamespaces排除 HNC 管理的命名空间kube-system,kube-publicenableHRQ是否启用层级资源配额truereplicaCount控制器副本数2(生产环境建议)image.repository镜像仓库地址gcr.io/k8s-staging-multitenancy/hnc-manager配置示例# 启用层级资源配额 enableHRQ: true # 排除系统命名空间 hncExcludeNamespaces: - kube-system - kube-public - kube-node-lease # 资源限制配置 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 200m memory: 256Mi实战应用多环境命名空间层级管理创建命名空间层级结构使用 HNC 插件快速创建层级命名空间# 创建根命名空间 kubectl create namespace prod # 创建子命名空间 kubectl hns create prod/frontend -n prod kubectl hns create prod/backend -n prod # 查看层级结构 kubectl hns tree prod输出结果prod ├── frontend └── backend资源配额的层级化分配通过 Helm 配置文件设置层级资源配额 (HRQ)# 在 values.yaml 中启用 HRQ enableHRQ: true创建 HRQ 资源apiVersion: hnc.x-k8s.io/v1alpha2 kind: HierarchicalResourceQuota metadata: name: prod-quota namespace: prod spec: hard: cpu: 10 memory: 10Gi subnamespace: cpu: 8 memory: 8Gi跨环境配置同步利用 HNC 的对象传播功能实现配置在层级命名空间中的自动同步# 在父命名空间创建配置 kubectl create configmap app-config -n prod --from-literalenvproduction # 验证子命名空间是否自动获取配置 kubectl get configmap app-config -n prod-frontend高级技巧提升 HNC 管理效率命名空间标签管理通过 Helm 配置 HNC 管理特定标签实现跨命名空间统一标识# 在 values.yaml 中添加 controller: args: - --managed-namespace-labelenv\.example\.com/.*在命名空间中设置标签apiVersion: hnc.x-k8s.io/v1alpha2 kind: HierarchyConfiguration metadata: name: hierarchy namespace: prod spec: labels: - key: env.example.com/type value: production权限控制最佳实践通过 Helm 部署时配置 RBAC 权限# 在 values.yaml 中配置 rbac: create: true clusterRole: enabled: true创建自定义角色绑定apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: hnc-admin namespace: prod subjects: - kind: User name: aliceexample.com apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: hnc-admin apiGroup: rbac.authorization.k8s.io故障排除与常见问题命名空间创建失败症状创建子命名空间时提示权限不足解决检查是否有创建subnamespaceanchor.hnc.x-k8s.io资源的权限kubectl auth can-i create subnamespaceanchor -n prod资源配额不生效症状HRQ 配置后未按预期限制资源解决确保已通过 Helm 启用 HRQ 功能并检查配置# 验证 HRQ CRD 是否安装 kubectl get crd hierarchicalresourcequotas.hnc.x-k8s.io配置同步延迟症状父命名空间配置更新后子命名空间未同步解决检查 HNC 控制器日志并验证传播规则kubectl logs -n hnc-system deployment/hnc-controller-manager总结HNC 与 Helm 集成的价值通过 Helm 部署 HNC 不仅简化了安装流程更提供了环境一致性保障配置版本化管理灵活的自定义选项简化的升级流程结合 HNC 的命名空间层级管理能力这一组合为 Kubernetes 多租户场景提供了强大的解决方案。无论是小型团队还是大型企业都能通过这一方案显著提升命名空间管理效率。更多高级配置和最佳实践请参考官方文档docs/user-guide/how-to.md【免费下载链接】hierarchical-namespacesHome of the Hierarchical Namespace Controller (HNC). Adds hierarchical policies and delegated creation to Kubernetes namespaces for improved in-cluster multitenancy.项目地址: https://gitcode.com/gh_mirrors/hi/hierarchical-namespaces创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考