代码之家  ›  专栏  ›  技术社区  ›  pramodtech

如何在rails配置初始化器中访问kubernetes注入的env变量?

  •  0
  • pramodtech  · 技术社区  · 5 年前

    我们正在用新的身份验证机制替换AWS访问密钥和机密 https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/

    我们有一个带有配置初始值设定项的rails应用程序,在这里我们使用这些变量,但是部署失败,错误是“找不到密钥”。

    Missing :web_identity_token_file parameter or invalid file path provided for Aws::AssumeRoleWebIdentityCredentials provider

    我的理解是app在container中初始化,然后部署到pod中,但是变量只有在container被添加到pod中时才可用。 在kubernetes中有没有办法解决这个问题,或者我需要将我的应用程序代码从初始化器中移走,并且只在向aws发出实际请求时才使用它?

    注:

    编辑

    Client.configure do |config|
      config.credentials = Aws::AssumeRoleWebIdentityCredentials.new(
        client: Aws::STS::Client.new(region: 'us-west-2'),
        role_arn: ENV.fetch('AWS_ROLE_ARN'),
        web_identity_token_file: ENV.fetch('AWS_WEB_IDENTITY_TOKEN_FILE')
      )
    

    秘密.yml

    apiVersion: v1
    kind: Secret
    metadata:
      name: "${NAME}-secrets"
      namespace: "${NAMESPACE}"
    data:
      AWS_ROLE_ARN: "${AWS_ROLE_ARN}"
      AWS_WEB_IDENTITY_TOKEN_FILE: "${AWS_WEB_IDENTITY_TOKEN_FILE}"
    
    0 回复  |  直到 5 年前