首页 > 解决方案 > 用于 google(和 facebook)识别的 Kubernetes 环境变量

问题描述

我尝试将托管在 Heroku 中的一个完整堆栈应用程序传递给托管在 kubernetes 云(确切地说是数字海洋)中的另一个应用程序:我被密钥卡住了。在原始的全栈应用程序中,我有一个文件,我在其中放置了开发环境的密钥:

module.exports={
  googleClientID: 'Client ID',
  googleClientSecret: 'secret sequence',
  mongoURI: 'mongodb+srv://data_to_connect',
  cookieKey: 'some_code',
  fbClientID: 'Client ID',
  fbClientSecret: 'secret sequence',
  stripePublishableKey: 'public key',
  stripeSecretKey: 'secret sequence'
}

在另一个带有生产密钥的文件之后。在这种情况下,秘密被放在 Heroku 环境中;所以,这个公开的文件没有显示密钥。

module.exports={
  googleClientID: 'Client ID',
  googleClientSecret: GOOGLE_CLIENT_SECRET, // Place in Heroku host
  ...
}

现在,我尝试将此应用程序转换为 Kubernetes 应用程序。在 Kubernetes 配置中。服务器的文件,我把上面的键作为环境变量:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: server-depl
    ...
    template:
        metadata:
          labels:
            app: server
        spec:
          containers:
            - name: server
              image: myimage
              env:
                - name: googleClientID
                  value: 'Client ID' // Same that above
                - name: googleClientSecret  // Secret made with kubernetes secret generic command
                  valueFrom:
                    secretKeyRef:
                      name: google-secret
                      key: googleClientSecret
              ....

在引用了那些环境之后。带有 process.env.KEY 的正确文件中的变量,这将在开发中工作。环境(带脚手架)与生产环境(数字海洋)一样。

clientID: process.env.googleClientID,
clientSecret: process.env.googleClientSecret,

那是行不通的。一些提示如何进行转移?

标签: kubernetesenvironment-variables

解决方案


推荐阅读