【问题标题】:Any other options for fetching the passwords without decoding from teamcity无需从 teamcity 解码即可获取密码的任何其他选项
【发布时间】:2020-01-31 00:10:16
【问题描述】:

我需要提取 TeamCity 中定义的密码值。目前我使用 secrets.yaml 来存储密码。为了实现它,我已将密码转换为 64 位代码值。并保存它。似乎我每次都很难更新它。我们有任何动态更新它的选项吗?

我尝试过的第一件事是这样的:

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
data:
  CassandraSettings__CassandraPassword: [[ .Environment ]]-abc-cassandra-password

但它在部署过程中失败。后来我试过这样,这里我把密码转换成64位编码的值。

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
data:
  CassandraSettings__CassandraPassword: S2V5czJUaGVLMW5nZDBt

到目前为止,我得到了结果。

我的问题是,我们是否有任何其他选项可以在部署期间从 TeamCity 获取值而不转换值。我需要动态更新 secrets.yaml。 这是我目前得到的输出。

是否可以这样定义数据

CassandraSettings__CassandraPassword: [[ .Environment ]]-abc-cassandra-password

【问题讨论】:

    标签: kubernetes deployment teamcity devops kubernetes-secrets


    【解决方案1】:

    据我了解,您需要使用 stringData 而不是 data,这将允许您以未编码字符串的形式提供秘密数据。

    stringData 是只写便利字段,检索 Secret 时不输出

    示例

    secret.yaml

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret-test
    stringData:
      CassandraSettings__CassandraPassword: Passw0rd
    

    创建秘密

    $ kubectl create -f secret.yaml
    secret/mysecret-test created
    
    $ kubectl describe secrets mysecret-test
    Name:         mysecret-test
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    
    Type:  Opaque
    
    Data
    ====
    CassandraSettings__CassandraPassword:  8 bytes
    

    获取 Secret yaml 并注意数据字段为您使用 base64 编码

    $ kubectl get secrets mysecret-test -o yaml
    
    apiVersion: v1
    data:
      CassandraSettings__CassandraPassword: UGFzc3cwcmQ=
    kind: Secret
    metadata:
      creationTimestamp: "2020-01-30T13:24:11Z"
      name: mysecret-test
      namespace: default
      resourceVersion: "3733024"
      selfLink: /api/v1/namespaces/default/secrets/mysecret-test
      uid: 718278c5-0e8e-4861-ae23-7e107209c338
    type: Opaque
    

    编码数据字段值与stringData字段相同,通过快速检查如下

    $ echo UGFzc3cwcmQ= | base64 -d
    Passw0rd
    

    或者像这样使用命令式命令来生成一个secret.yaml,其中传递了文字的编码值。下面我将其中一个文字定义为用于测试的导出变量。

    $ export PASS=Passw0rd
    
    $ echo $PASS
      Passw0rd
    
    $ kubectl create secret generic mysecret --from-literal=CassandraSettings__CassandraPassword=$PASS--dry-run -o yaml > secret.yaml
    
    $ cat secret.yaml
    apiVersion: v1
    data:
      CassandraSettings__CassandraPassword: UGFzc3cwcmQ=
    kind: Secret
    metadata:
      creationTimestamp: null
      name: mysecret
    

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      相关资源
      最近更新 更多