K8S使用helm部署vault集群_vault-unseal

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

“hashicorp” has been added to your repositories


###### 3. 测试安装 【--dry-run参数测试安装运行。查看是否可正常安装】



$ helm install vault hashicorp/vault --namespace vault --dry-run


######  4. 列出vault可用版本



$ helm search repo hashicorp/vault --versions


######  5. 在具有集成存储的 HA 模式下使用安装安装vault指定版本



$ helm install vault hashicorp/vault --namespace vault --version 0.27.0 --set=‘server.ha.enabled=true’ --set=‘server.ha.raft.enabled=true’


######  6. 查看服务状态



$ kubectl get pods -n vault
NAME READY STATUS RESTARTS AGE
vault-0 0/1 Running 0 30s
vault-1 0/1 Running 0 30s
vault-2 0/1 Running 0 30s
mysql-0 1/1 Running 0 8m35s


######   7. 检索Vault启动pod的状态



$ kubectl exec -n vault vault-0 – vault status
Key Value


Seal Type shamir
Initialized false
Sealed true
Total Shares 0
Threshold 0
Unseal Progress 0/0
Unseal Nonce n/a
Version 0.27.0
Storage Type raft
HA Enabled true
command terminated with exit code 2


###### 三、 初始化 Vault Pod


备注:为什么要进行vault初始化,如果不初始化,vault服务pod的READY会一直处于0/1状态,只有把vault的pod进行初始化生成初始token服务才会正常启动运行


###### 1. 初始化 Vault ,密钥以JSON格式被重定向到名为 `cluster-keys.json提供给后续pod使用`



$ kubectl exec -n vault vault-0 – vault operator init
-key-shares=1
-key-threshold=1
-format=json > cluster-keys.json


###### 2. 查看 `cluster-keys.json文件里的初始密钥`



$ cat cluster-keys.json | jq -r “.unseal_keys_b64[]”
rrUtT32GztRy/pVWmcH0ZQLCCXon/TxCgi40FL1Zzus=


###### 3. 创建一个名为`VAULT_UNSEAL_KEY`捕获 Vault 初始密钥变量



$ VAULT_UNSEAL_KEY=$(cat cluster-keys.json | jq -r “.unseal_keys_b64[]”)


###### 4. 解封在`vault-0` 上运行的 Vault , 就是把上面的初始化密钥倒进`vault-0`



$ kubectl exec -n vault vault-0 – vault operator unseal $VAULT_UNSEAL_KEY
Key Value


Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 0.27.0
Storage Type raft
Cluster Name vault-cluster-16efc511
Cluster ID 649c814a-a505-421d-e4bb-d9175c7e6b38
HA Enabled true
HA Cluster n/a
HA Mode standby
Active Node Address
Raft Committed Index 31
Raft Applied Index 31


###### 5. 检索 pod 上 Vault 的状态`vault-0`



$ kubectl exec -n vault vault-0 – vault status
Key Value


Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 0.27.0
Storage Type raft
Cluster Name vault-cluster-16efc511
Cluster ID 649c814a-a505-421d-e4bb-d9175c7e6b38
HA Enabled true
HA Cluster https://vault-0.vault-internal:8201
HA Mode active
Active Since 2022-05-19T17:41:07.226862254Z
Raft Committed Index 36
Raft Applied Index 36


###### 6.  查看初始化生成的root密钥



$ cat cluster-keys.json | jq -r “.root_token”
hvs.3VYhJODbhlQPeW5zspVvBCzD


###### 7.  创建一个名为`CLUSTER_ROOT_TOKEN`捕获 Vault的 root密钥/根令牌



$ CLUSTER_ROOT_TOKEN=$(cat cluster-keys.json | jq -r “.root_token”)


###### 8. 使用 pod 上的根令牌登录`vault-0`



$ kubectl exec -n vault vault-0 – vault login $CLUSTER_ROOT_TOKEN

Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run “vault login”
again. Future Vault requests will automatically use this token.

Key Value


token hvs.3VYhJODbhlQPeW5zspVvBCzD
token_accessor 5sy3tZm3qCQ1ai7wTDOS97XG
token_duration ∞
token_renewable false
token_policies [“root”]
identity_policies []
policies [“root”]


###### 9. 列出 pod 的 Vault 集群内的所有节点`vault-0`



$ kubectl exec -n vault vault-0 internal-app – vault operator raft list-peers
Node Address State Voter


09d9b35d-0336-7de7-cc94-90a1f3a0aff8 vault-0.vault-internal:8201 leader true


###### 10.  将 Vault 服务器加入`vault-1`Vault 集群



$ kubectl exec -n vault vault-1 – vault operator raft join http://vault-0.vault-internal:8200
Key Value


Joined true


###### 11.  `vault-1`使用解封密钥解封 Vault 服务器



$ kubectl exec -n vault vault-1 – vault operator unseal $VAULT_UNSEAL_KEY
Key Value


Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 0.27.0
Storage Type raft
Cluster Name vault-cluster-16efc511
Cluster ID 649c814a-a505-421d-e4bb-d9175c7e6b38
HA Enabled true
HA Cluster https://vault-0.vault-internal:8201
HA Mode standby
Active Node Address http://192.168.58.131:8200
Raft Committed Index 76
Raft Applied Index 76


###### 12.  将 Vault 服务器加入`vault-2`Vault 集群



$ kubectl exec -n vault vault-2 – vault operator raft join http://vault-0.vault-internal:8200
Key Value


Joined true


###### 13. `vault-2`使用解封密钥解封 Vault 服务器



$ kubectl exec -n vault vault-2 – vault operator unseal $VAULT_UNSEAL_KEY
Key Value


Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 0.27.0
Storage Type raft
Cluster Name vault-cluster-16efc511
Cluster ID 649c814a-a505-421d-e4bb-d9175c7e6b38
HA Enabled true
HA Cluster https://vault-0.vault-internal:8201
HA Mode standby
Active Node Address http://192.168.58.131:8200
Raft Committed Index 76
Raft Applied Index 76


###### 14. 列出 Vault 集群内的所有节点



$ kubectl exec -n vault vault-0 – vault operator raft list-peers
Node Address State Voter


09d9b35d-0336-7de7-cc94-90a1f3a0aff8 vault-0.vault-internal:8201 leader true
7078a8b7-7948-c224-a97f-af64771ad999 vault-1.vault-internal:8201 follower true
aaf46893-0a93-17ce-115e-f57033d7f41d vault-2.vault-internal:8201 follower true


###### 15. 获取vault命名空间内的所有 Pod



$ kubectl get pods
NAME READY STATUS RESTARTS AGE
vault-0 1/1 Running 0 5m49s
vault-1 1/1 Running 0 5m48s
vault-2 1/1 Running 0 5m47s
vault-agent-injector-5945fb98b5-vzbqv 1/1 Running 0 5m50s
mysql-0 1/1 Running 0 13m54s


###### 四、 创建 Vault 数据库角色


###### 1. vault 启用数据库机密`database`



$ kubectl exec -n vault vault-0 – vault secrets enable database
Success! Enabled the database secrets engine at: database/


###### 2. 使用 MySQL 数据库凭据配置数据库机密引擎【$ROOT\_PASSWORD是使用上面生成的变量】



$ kubectl exec -n vault vault-0 – vault write database/config/mysql
plugin_name=mysql-database-plugin
connection_url=“{{username}}:{{password}}@tcp(mysql.vault.svc.cluster.local:3306)/”
allowed_roles=“readonly”
username=“root”
password=“$ROOT_PASSWORD”

Success! Data written to: database/config/mysql


###### 3.  创建数据库授权角色`readonly 【max_ttl令牌最长过期时间】`



$ kubectl exec -n vault vault-0 – vault write database/roles/readonly
db_name=mysql
creation_statements=“CREATE USER ‘{{name}}’@‘%’ IDENTIFIED BY ‘{{password}}’;GRANT SELECT ON . TO ‘{{name}}’@‘%’;”
default_ttl=“1h”
max_ttl=“24h”

Success! Data written to: database/roles/readonly


######  4. 从数据库角色读取凭据`readonly`



$ kubectl exec -n vault vault-0 – vault read database/creds/readonly
Key Value


lease_id database/creds/readonly/qtWlgBT1YTQEPKiXe7CrotsT
lease_duration 1h
lease_renewable true
password WLESe5T-RLkTj-h-lDbT
username v-root-readonly-pk168KvLS8sc80Of


###### 五、 配置 Kubernetes 身份验证


###### 1. 进入到vault服务pod内部



$ kubectl exec -n vault --stdin=true --tty=true vault-0 – /bin/sh
/ $


###### 2.  vault 启用 Kubernetes 身份验证



$ vault auth enable kubernetes
Success! Enabled kubernetes auth method at: kubernetes/


###### 3.  配置 Kubernetes 身份认证 【变量会自动获取相应的k8s认证值】



$ vault write auth/kubernetes/config
kubernetes_host=“https://$KUBERNETES_PORT_443_TCP_ADDR:443”

Success! Data written to: auth/kubernetes/config


###### 4. 含义是新建一个策略名称devwebapp,授权database/creds/readonly路径文件的只读权限



$ vault policy write devwebapp - <<EOF
path “database/creds/readonly” {
capabilities = [“read”]
}
EOF


###### 5.  创建 Kubernetes 身份验证角色名称为 `devweb-app【bound_service_account_names 表示RBAC用户名称,bound_service_account_namespaces表示RBAC用户所在的名称空间,policies表示使用的策略名称,ttl表示` Kubernetes 身份验证角色`超时时间】`



$ vault write auth/kubernetes/role/devweb-app
bound_service_account_names=internal-app
bound_service_account_namespaces=vault
policies=devwebapp
ttl=24h

Success! Data written to: auth/kubernetes/role/devweb-app


###### 六、 启动应用程序验证


###### 1. 创建要使用的`RBAC用户`



$ cat > internal-app.yaml <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: internal-app

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值