Drone基于K8S的Secrets管理

如果Drone部署在K8S中,那么可以通过k8s secret来为drone runner提供secret。

注:必须安装drone-kubernetes-secrets组件,且runner配置evn参数DRONE_SECRET_PLUGIN_TOKEN、DRONE_SECRET_PLUGIN_ENDPOINT指向访问drone-kubernetes-secrets服务。而drone-kubernetes-secrets需配置evn参数SECRET_KEY与DRONE_SECRET_PLUGIN_TOKEN一致。

一、创建k8s secret

apiVersion: v1
kind: Secret
type: Opaque
data:
  username: ZHJvbmUtcm9vdA==
  password: MTIzNA==
metadata:
  name: drone-docker-register-secret
  namespace: shendu-ops

二、使用Secret

1、在pipeline中定义外部drone secret资源关联k8s secret,以供调用

kind: pipeline
type: kubernetes
name: drone-build-demo
metadata:
  namespace: shendu-ops

---
kind: secret
name: username
get:
  path: drone-docker-register-secret
  name: username

---
kind: secret
name: password
get:
  path: drone-docker-register-secret
  name: password

2、通过from_seecret参数使用secret变量

kind: pipeline
type: kubernetes
name: sd.services.modules.demo
metadata:
  namespace: shendu-ops
steps:
- name: test
  image: busybox
  environment:
    USERNAME:
      from_secret: username
    PASSWORD:
      from_secret: password
  commands:
  - echo $USERNAME
  - echo $PASSWORD

三、限制使用

       默认情况下创建的k8s secret是对所有git repositories和build events有效的。我们可以通过metadata.annotations添加对secret的使用范围限制。

1、使用X-Drone-Repos限制那些git repositories可以访问secret。该值采用shell glob模式匹配,多个值用”,“隔开。

metadata:
  name: drone-docker-register-secret
  annotations:
    X-Drone-Repos: dev/demo,release/*

2、使用X-Drone-Events按事件限制访问secret

metadata:
  name: drone-docker-register-secret
  annotations:
    X-Drone-Events: push,tag
原文地址:https://www.cnblogs.com/lswweb/p/14246646.html