0%

Kubernetes-Secrets

Kubernetes保密字典

背景信息

若您需要在 Kubernetes 集群中使用一些敏感的配置,比如密码、证书等信息时,建议使用密钥(secret),即保密字典。

密钥有多种类型,例如:

  • Service Account:用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount目录中。
  • Opaque:base64 编码格式的 Secret,用来存储密码、证书等敏感信息。

Opaque 类型的数据是一个 map 类型,要求value 是 base64 编码格式

您也可通过命令行手动创建密钥,请参见 kubernetes secret 了解更多信息。

命令

创建
1
2
3
4
5
6
7
8
9
10
11
kubectl create secret

Create a secret using specified subcommand.

Available Commands:
docker-registry Create a secret for use with a Docker registry
generic Create a secret from a local file, directory or literal value
tls Create a TLS secret

Usage:
kubectl create secret [flags] [options]
查看证书
1
2
3
4
5
[cicd-jd@ops-jenkins-master ssl]$ kubectl get secrets
NAME TYPE DATA AGE
default-token-msfm9 kubernetes.io/service-account-token 3 24d
registry.cn-beijing.aliyuncs.com kubernetes.io/dockerconfigjson 1 24d
veer-https kubernetes.io/tls 2 3h25m
1
2
3
4
5
6
7
8
9
10
11
12
[cicd-jd@ops-jenkins-master ssl]$ kubectl describe secrets veer-https
Name: veer-https
Namespace: default
Labels: <none>
Annotations: <none>

Type: kubernetes.io/tls

Data
====
tls.crt: 3941 bytes
tls.key: 1676 bytes
删除
1
kubectl delete secret $NAME

示例

创建SSL证书
  1. 准备公钥、私钥文件
    1
    2
    [cicd-jd@ops-jenkins-master ssl]$ ls
    veer.key veer.pem
  2. 创建secret
    1
    kubectl create secret tls veer-https --cert=./veer.pem --key=./veer.key
  3. 验证
    1
    2
    3
    [cicd-jd@ops-jenkins-master ssl]$ kubectl get secrets veer-https
    NAME TYPE DATA AGE
    veer-https kubernetes.io/tls 2 3h22m
创建仓库秘钥
1
kubectl create secret docker-registry registry-secret --docker-server='harbor.zhaohongye.com' --docker-username='admin' --docker-password='Harbor12345'