如何通过Namespace隔离开发/测试环境?使用Kustomize管理不同环境配置的基本目录结构是怎样的?

一、Kubernetes Namespace环境隔离方案

# 创建开发/测试命名空间
kubectl create namespace dev
kubectl create namespace test
  1. 资源隔离实现方式:
  • 通过独立命名空间隔离资源(Deployment/Service/ConfigMap等)
  • 使用ResourceQuota设置环境资源配额
apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-quota
  namespace: dev
spec:
  hard:
    requests.cpu: "8"
    requests.memory: 16Gi
    limits.cpu: "16"
    limits.memory: 32Gi
  1. 网络隔离策略示例:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-cross-ns
  namespace: dev
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector: {} # 仅允许本命名空间通信
  egress:
  - to:
    - podSelector: {} # 仅允许本命名空间通信

二、Kustomize多环境配置结构设计

推荐目录结构:

config/
├── base/                # 基础配置
│   ├── deployment.yaml
│   ├── service.yaml
│   └── kustomization.yaml
│
└── overlays/            # 环境差异配置
    ├── dev/
    │   ├── cpu_patch.yaml     # 开发环境CPU限制
    │   ├── replica_patch.yaml # 副本数调整
    │   └── kustomization.yaml
    │
    └── test/
        ├── memory_patch.yaml  # 测试环境内存限制
        ├── ingress_patch.yaml # 测试环境Ingress配置
        └── kustomization.yaml

overlays示例配置(dev/kustomization.yaml):

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
- ../../base

patchesStrategicMerge:
- cpu_patch.yaml
- replica_patch.yaml

images:
- name: app-image
  newTag: v1.2-dev

namespace: dev  # 自动注入命名空间

环境部署命令:

# 部署开发环境
kubectl apply -k config/overlays/dev

# 部署测试环境 
kubectl apply -k config/overlays/test

该方案特点:

  1. 基础配置统一维护,环境差异通过patch实现
  2. 镜像版本、副本数等参数通过kustomize动态替换
  3. 命名空间自动注入,避免配置污染
  4. 支持多环境配置的版本控制

你可能感兴趣的:(中间件,k8s,k8s,kubernetes,容器,云原生)