Kubernetes
Kubernetesシークレットリソースは、トークン、パスワード、証明書、および最新のコンピューティングにおけるその他のシークレットへのアクセスを保護、保存、および制御します。 Kubernetes Secrets拡張機能は、パイプラインにKubernetesシークレットへのアクセスを提供します。
Kubernetesシークレットのインテグレーションは拡張機能によって提供され、システム管理者が拡張機能をインストールした場合にのみ利用できます。
シークレットの作成
Kubernetes YAML設定言語を使用してシークレットのリソースを作成し、kubectl
を使用してクラスタに保持します。以下の例では、Dockerのユーザー名とパスワードを保存しています。
1 apiVersion: v1
2 kind: Secret
3 type: Opaque
4 data:
5 username: YWRtaW4=
6 password: MWYyZDFlMmU2N2Rm
7 metadata:
8 name: docker
シークレットへのアクセス
シークレットがKubernetesに保存されたら、yaml構成ファイルを更新してシークレットへのアクセスをリクエストできます。まず、外部シークレットごとにyamlでシークレットリソースを定義します。シークレットへのパスと、取得する値の名前またはキーを含めます。
1 ---
2 kind: pipeline
3 name: default
4
5 steps:
6 - name: build
7 image: alpine
8
9 ---
10 kind: secret
11 name: username
12 get:
13 path: docker
14 name: username
15
16 ---
17 kind: secret
18 name: password
19 get:
20 path: docker
21 name: password
22 ...
次に、パイプラインで名前付きシークレットを参照できます。
1 kind: pipeline
2 name: default
3
4 steps:
5 - name: build
6 image: alpine
7 environment:
8 USERNAME:
9 from_secret: username
10 PASSWORD:
11 from_secret: password
12
13 ---
14 kind: secret
15 name: username
16 get:
17 path: docker
18 name: username
19
20 ---
21 kind: secret
22 name: password
23 get:
24 path: docker
25 name: password
26
27 ...
アクセスの制限
シークレットは、デフォルトですべてのリポジトリとすべてのビルドイベントで使用できます。リポジトリとビルドイベントによってシークレットへのアクセスを制限することを強くお勧めします。これは、特別なアノテーションを追加することで実行できます。
1 apiVersion: v1
2 kind: Secret
3 type: Opaque
4 data:
5 username: YWRtaW4=
6 password: MWYyZDFlMmU2N2Rm
7 metadata:
8 name: docker
9 annotations:
10 X-Drone-Repos: octocat/*
11 X-Drone-Events: push,tag
リポジトリによる制限
X-Drone-Repos
キーを使用して、シークレットにアクセスできるリポジトリを制限します。値は、globパターンのコンマ区切りのリストです。リポジトリ名がパターンの少なくとも1つと一致する場合、シークレットへのアクセスが許可されます。
単一のリポジトリへのアクセスを制限します。
7 metadata:
8 name: docker
9 annotations:
10 X-Drone-Repos: octocat/hello-world
組織内のすべてのリポジトリへのアクセスを制限します。
7 metadata:
8 name: docker
9 annotations:
10 X-Drone-Repos: octocat/*
複数のリポジトリまたは組織へのアクセスを制限します。
7 metadata:
8 name: docker
9 annotations:
10 X-Drone-Repos: octocat/*,spaceghost/*
イベントによる制限
X-Drone-Events
キーを使用して、シークレットにアクセスできるビルドイベントを制限します。値は、イベントのコンマ区切りのリストです。ビルドが少なくとも1つのイベントに一致する場合、シークレットへのアクセスが許可されます。
プッシュイベントとタグイベントへのアクセスを制限します。
7 metadata:
8 name: docker
9 annotations:
10 X-Drone-Events: push,tag
アノテーションを組み合わせて、リポジトリとイベントごとに制限できます。
7 metadata:
8 name: docker
9 annotations:
10 X-Drone-Repos: octocat/*
11 X-Drone-Events: push,tag