156 lines
2.9 KiB
Markdown
156 lines
2.9 KiB
Markdown
> 本文作者:丁辉
|
||
|
||
# Helm部署Drone-Kubernetes-Secrets
|
||
|
||
[使用文档](https://docs.drone.io/secret/external/kubernetes/)
|
||
|
||
## 介绍
|
||
|
||
**Drone-Kubernetes-Secrets 是一个用于管理 Drone 与 Kubernetes 之间 Secrets 交互的组件**。它允许用户在 Drone CI/CD 流程中使用 Kubernetes 集群中的 Secrets,以便更安全地访问敏感数据,例如密码、令牌或 SSH 密钥。
|
||
|
||
## 开始部署
|
||
|
||
1. 添加 Drone Helm Chart 存储库
|
||
|
||
```bash
|
||
helm repo add drone https://charts.drone.io
|
||
helm repo update
|
||
```
|
||
|
||
2. 创建命名空间
|
||
|
||
```bash
|
||
kubectl create namespace drone
|
||
```
|
||
|
||
3. 生成密钥
|
||
|
||
```bash
|
||
openssl rand -hex 16
|
||
```
|
||
|
||
4. 编写模版文件
|
||
|
||
```bash
|
||
vi drone-kubernetes-secrets-values.yaml
|
||
```
|
||
|
||
内容如下
|
||
|
||
```yaml
|
||
rbac:
|
||
secretNamespace: drone
|
||
env:
|
||
SECRET_KEY: 填入密钥
|
||
KUBERNETES_NAMESPACE: drone
|
||
```
|
||
|
||
5. 启动
|
||
|
||
```bash
|
||
helm install drone-kubernetes-secrets drone/drone-kubernetes-secrets -f drone-runner-kube-values.yaml -n drone
|
||
```
|
||
|
||
## 修改Runner-Kube配置
|
||
|
||
1. 编辑 `drone-runner-kube-values.yaml` 文件
|
||
|
||
```bash
|
||
vi drone-runner-kube-values.yaml
|
||
```
|
||
|
||
env 下添加
|
||
|
||
```yaml
|
||
env:
|
||
DRONE_SECRET_PLUGIN_ENDPOINT: http://drone-kubernetes-secrets:3000
|
||
DRONE_SECRET_PLUGIN_TOKEN: 此处跟SECRET_KEY一致
|
||
# 如有需要开启 DEBUG 调试
|
||
# DRONE_DEBUG: true
|
||
```
|
||
|
||
2. 更新 drone-runner-kube
|
||
|
||
```bash
|
||
helm upgrade drone-runner-kube drone/drone-runner-kube -f drone-runner-kube -n drone
|
||
```
|
||
|
||
## 卸载
|
||
|
||
1. 卸载 drone-kubernetes-secrets
|
||
|
||
```bash
|
||
helm uninstall drone-kubernetes-secrets -n drone
|
||
```
|
||
|
||
2. 删除命名空间
|
||
|
||
```bash
|
||
kubectl delete namespace drone
|
||
```
|
||
|
||
# 使用方法
|
||
|
||
1. 创建 Secret
|
||
|
||
```bash
|
||
vi drone-secret.yaml
|
||
```
|
||
|
||
内容如下
|
||
|
||
```yaml
|
||
apiVersion: v1
|
||
kind: Secret
|
||
type: Opaque
|
||
data:
|
||
username: YWRtaW4K
|
||
password: YWRtaW4K
|
||
metadata:
|
||
name: build-secret
|
||
namespace: drone
|
||
```
|
||
|
||
部署
|
||
|
||
```bash
|
||
kubectl apply -f drone-secret.yaml
|
||
```
|
||
|
||
2. 编写 `.drone.yml`
|
||
|
||
```yaml
|
||
kind: pipeline
|
||
type: kubernetes
|
||
name: secret-demo
|
||
|
||
steps:
|
||
- name: hello
|
||
image: busybox
|
||
# 环境变量
|
||
environment:
|
||
USERNAME:
|
||
from_secret: USERNAME
|
||
PASSWORD:
|
||
from_secret: PASSWORD
|
||
# 执行命令
|
||
commands:
|
||
# 判断是否存在环境变量,存在则输出成功,不存在则输出失败
|
||
- if [ -n "$USERNAME" ]; then echo "USERNAME exists"; else echo "USERNAME does not exist"; fi
|
||
- if [ -n "$PASSWORD" ]; then echo "PASSWORD exists"; else echo "PASSWORD does not exist"; fi
|
||
---
|
||
kind: secret
|
||
name: USERNAME
|
||
get:
|
||
path: build-secret
|
||
name: username
|
||
---
|
||
kind: secret
|
||
name: PASSWORD
|
||
get:
|
||
path: build-secret
|
||
name: password
|
||
```
|
||
|
||
3. 构建后查看结果
|