在 Kubernetes 中,如果你想将一个 namespace 中的 secret 应用于多个 namespace,可以使用以下步骤:

  1. 创建一个原始的 secret 对象:
apiVersion: v1
kind: Secret
metadata:
  name: 'my-secret'
  namespace: 'source-namespace'
data:
  username: '<base64-encoded-username>'
  password: '<base64-encoded-password>'

将上述 YAML 文件保存为 secret.yaml

  1. 创建一个 ConfigMap 对象来存储需要共享的 secret 的名称:
apiVersion: v1
kind: ConfigMap
metadata:
  name: 'shared-secret-names'
  namespace: 'target-namespace'
data:
  secret-names: 'my-secret'

将上述 YAML 文件保存为 configmap.yaml

  1. 创建一个 role 和 rolebinding,用于授予目标 namespace 访问源 namespace 中 secret 的权限:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: 'secret-reader'
  namespace: 'source-namespace'
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]

---

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: 'secret-reader-binding'
  namespace: 'source-namespace'
subjects:
- kind: ServiceAccount
  name: 'default'
  namespace: 'target-namespace'
roleRef:
  kind: Role
  name: 'secret-reader'
  apiGroup: rbac.authorization.k8s.io

将上述 YAML 文件保存为 role.yaml

  1. 创建一个 Deployment,用于在目标 namespace 中使用 secret:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: 'my-app'
  namespace: 'target-namespace'
spec:
  replicas: 1
  selector:
    matchLabels:
      app: 'my-app'
  template:
    metadata:
      labels:
        app: 'my-app'
    spec:
      containers:
      - name: 'my-app'
        image: 'my-app-image'
        env:
        - name: 'USERNAME'
          valueFrom:
            secretKeyRef:
              name: 'my-secret'
              key: 'username'
        - name: 'PASSWORD'
          valueFrom:
            secretKeyRef:
              name: 'my-secret'
              key: 'password'

将上述 YAML 文件保存为 deployment.yaml

  1. 应用这些配置文件到 Kubernetes 集群中:
kubectl apply -f secret.yaml
kubectl apply -f configmap.yaml
kubectl apply -f role.yaml
kubectl apply -f deployment.yaml

现在,my-app Deployment 中的容器可以使用 my-secret secret 中的数据,即 username 和 password。

Kubernetes 中如何将一个 namespace 的 secret 应用于多个 namespace

原文地址: https://www.cveoy.top/t/topic/ptEf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录