微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不在 k8s 中加载秘密

如何解决不在 k8s 中加载秘密

我正在学习使用 k8s,但遇到了问题。我已经能够使用相同的 yml 执行多次部署而没有问题。我的问题是,当我挂载秘密卷时,它会向我加载包含变量的目录,但它不会将它们检测为环境变量

我的秘密

apiVersion: v1
kind: Secret
Metadata:
  namespace: insertmendoza
  name: authentications-sercret
type: Opaque
data:
  DB_USERNAME: aW5zZXJ0bWVuZG96YQ==
  DB_PASSWORD: aktOUDlaZHrftE1tNks1

  TOKEN_EXPIRES_IN: ODQ2MDA=
  SECRET_KEY: aXRzaXNzZWd1cmU=

apiVersion: apps/v1
kind: Deployment
Metadata:
  namespace: insertmendoza
  name: sarys-authentications
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sarys-authentications
  template:
    Metadata:
      labels:
        app: sarys-authentications
    spec:
      containers:
        - name: sarys-authentications
          image: 192.168.88.246:32000/custom:image
          imagePullPolicy: Always
          resources:
            limits:
              memory: "500Mi"
              cpu: "50m"
          ports:
            - containerPort: 8000

          envFrom:
            - configMapRef:
                name: authentications-config

          volumeMounts:
            - name: config-volumen
              mountPath: /etc/config/
              readOnly: true

            - name: secret-volumen
              mountPath: /etc/secret/
              readOnly: true

      volumes:
        - name: config-volumen
          configMap:
            name: authentications-config

        - name: secret-volumen
          secret:
            secretName: authentications-sercret

> microservice@1.0.0 start
> node dist/index.js
{
  ENGINE: 'postgres',NAME: 'insertmendoza',USER: undefined,<-- not load 
  PASSWORD: undefined,<-- not load 
  HOST: 'db-service',PORT: '5432'
}

如果我手动添加它们,如果它识别它们

 env:
            - name: DB_USERNAME
              valueFrom:
                secretKeyRef:
                  name: authentications-sercret
                  key: DB_USERNAME

            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: authentications-sercret
                  key: DB_PASSWORD

> microservice@1.0.0 start
> node dist/index.js
{
  ENGINE: 'postgres',USER: 'insertmendoza',<-- work 
  PASSWORD: 'jKNP9ZdtELMm6K5',<-- work
  HOST: 'db-service',PORT: '5432'
}
listening queue
listening on *:8000

在我挂载秘密所在的目录中!

/etc/secret # ls
DB_PASSWORD       DB_USERNAME       SECRET_KEY        TOKEN_EXPIRES_IN
/etc/secret # cat DB_PASSWORD 
jKNP9ZdtELMm6K5/etc/secret # 
编辑

我的求解速度是

envFrom:
        - configMapRef:
            name: authentications-config

        - secretRef: <<--
            name: authentications-sercret <<--

我希望它为您服务,来自阿根廷的问候插入门多萨

解决方法

如果我正确理解了问题,那么您就没有将机密加载到环境中。看起来您加载错误,请使用 here 中记录的 envFrom 表单。

以您的示例为例:

apiVersion: v1
kind: Secret
metadata:
  namespace: insertmendoza
  name: authentications-sercret
type: Opaque
data:
  DB_USERNAME: aW5zZXJ0bWVuZG96YQ==
  DB_PASSWORD: aktOUDlaZHRFTE1tNks1

  TOKEN_EXPIRES_IN: ODQ2MDA=
  SECRET_KEY: aXRzaXNzZWd1cmU=

---

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: insertmendoza
  name: sarys-authentications
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sarys-authentications
  template:
    metadata:
      labels:
        app: sarys-authentications
    spec:
      containers:
        - name: sarys-authentications
          image: 192.168.88.246:32000/custom:image
          imagePullPolicy: Always
          resources:
            limits:
              memory: "500Mi"
              cpu: "50m"
          ports:
            - containerPort: 8000

          envFrom:
            - configMapRef:
                name: authentications-config

            - secretRef:
                name: authentications-sercret

          volumeMounts:
            - name: config-volumen
              mountPath: /etc/config/
              readOnly: true
      volumes:
        - name: config-volumen
          configMap:
            name: authentications-config

请注意卷和安装已被删除,只需添加 secretRef 部分。这些现在应该作为环境变量导出到您的 pod 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。