一、需求
目前公司内部网站、项目比较多,运维的密钥管理主要都是靠个人保存,其中包含数据库密钥信息、申请的TLS证书、AWS密钥信息、各管理平台的密钥等,管理混乱,容易丢失,希望有一个平台能统一收集管理、签发、授权、审计。
二、HashiCorp Vault介绍
HashiCorp Vault作为集中化的私密信息管理工具,具有以下特点:
另外,HaishiCorp Vault提供了多种方式来管理私密信息。用户可以通过命令行、HTTP API等集成到应用中来获取私密信息。HashiCorp Vault也能与Ansible、Chef、Consul等DevOps工具链无缝结合使用。
三、环境介绍
kubernetes集群环境
四、部署HashiCorp Vault
kubectl create namespace vault
helm repo add hashicorp https://helm.releases.hashicorp.com
helm install vault hashicorp/vault -n vault
kubectl exec -ti vault-0 -c vault -n vault -- vault operator init
Unseal Key 1: O67V+PZGr3OyQd2IjQgH2+7pXZLuIJss5ko+MXb8LcSm
Unseal Key 2: oEdjXv11XrgJqPMuOduda5ygIUdtvaCMoufKF3Fllh9i
Unseal Key 3: /doVpsSdTCnjvfTQL+wfrOgVWI/cMaOR/D0YasL8fV/c
Unseal Key 4: tp8VLTbnwD0p34dn0DBaHEKM/jmtJ0WU1Kp4WG9MvbCC
Unseal Key 5: d6j1CR6jVWEoKShjZ6wT9S5ZFyHo2XldBjb+NzJJRVUd
Initial Root Token: s.8AQ0XD8Yp5Q6IfdXtjsFPCSF
特别注意,这一步会输出5个Unseal Key和一个root token,Unseal Key在后面会用到,一定要记录下来,因为该值只会在初始化时出现。
kubectl exec -ti vault-0 -n vault -- vault operator unseal # ... Unseal Key 1
kubectl exec -ti vault-0 -n vault -- vault operator unseal # ... Unseal Key 2
kubectl exec -ti vault-0 -n vault -- vault operator unseal # ... Unseal Key 3
kubectl get pods -l app.kubernetes.io/name=vault -n vault
apiVersion: v1
kind: Service
metadata:
name: vault-portal
namespace: vault
spec:
ports:
- name: "8200"
port: 8200
protocol: TCP
targetPort: 8200
type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
name: dev.vault.arfront.cn
namespace: vault
spec:
rules:
- host: dev.vault.arfront.cn
http:
paths:
- backend:
serviceName: vault
servicePort: 8200
tls:
- hosts:
- dev.vault.arfront.cn
secretName: dev.vault.arfront.cn
打开网站 dev.vault.arfront.cn,输入上面初始化得到的Initial Root Token: s.8AQ0XD8Yp5Q6IfdXtjsFPCSF,即部署完成。
五、集成管理kubernetes密钥
待补充
六、集成管理AWS密钥
待补充
七、Vault的使用
待补充