Files
kuboard-press/learning/k8s-intermediate/config/secrets/create-generator.md
2019-09-24 23:28:33 +08:00

2.4 KiB
Raw Blame History

vssueId, layout, description
vssueId layout description
83 LearningLayout Kubernetes教程_在Kubernetes中_使用kubectl创建Secret

创建Secrets使用Generator

从 kubernetes v1.14 开始kubectl 集成了 Kustomize。通过 Kustomize您可以使用 generatorKustomize 的概念)创建 Secret并保存到 API Server。Generator 必须在 kustomization.yaml 文件中指定。

::: tip 需要结合 Kustomize 一起使用,在您决定采纳 Kustomize 之前,可以暂时不看这篇文章的内容 :::

从文件生成 Secret

例如,如果想从 ./username.txt./password.txt 文件生成generate一个 Secret则可以

  • 执行如下指令创建 kustomization.yaml 文件
# Create a kustomization.yaml file with SecretGenerator
cat <<EOF >./kustomization.yaml
secretGenerator:
- name: db-user-pass
  files:
  - username.txt
  - password.txt
EOF
  • 执行指令 kubectl apply -k . 以创建 Secret 对象,输出结果如下所示:

    secret/db-user-pass-96mffmfh4k created
    
  • 执行指令 kubectl get secrets 以检查创建结果,输出结果如下所示:

    NAME                             TYPE                                  DATA      AGE
    db-user-pass-96mffmfh4k          Opaque                                2         51s
    
  • 执行指令 kubectl describe secrets/db-user-pass-96mffmfh4k 以查看 Secret 详情(请使用您自己的 Secret 名字),输出结果如下所示:

    Name:            db-user-pass
    Namespace:       default
    Labels:          <none>
    Annotations:     <none>
    
    Type:            Opaque
    
    Data
    ====
    password.txt:    12 bytes
    username.txt:    5 bytes
    

    ::: tip 生成的 Secret 的名字包含一个 hash 值Secret 内容的 hash做为后缀这种做法可以确保每次修改 Secret 的内容时,都将产生新的 Secret 对象 :::

从明文生成 Secret

例如,如果要从明文 username=adminpassword=secret,您可以:

  • 通过如下指令创建 secret generator 的 kustomization.yaml 文件:

    # Create a kustomization.yaml file with SecretGenerator
    cat <<EOF >./kustomization.yaml
    secretGenerator:
    - name: db-user-pass
      literals:
      - username=admin
      - password=secret
    EOF
    
  • 然后执行指令 kubectl apply -k . 创建 Secret 对象,输出结果如下所示:

    secret/db-user-pass-dddghtt9b5 created