ポリシー
Droneポリシーファイルを使用すると、パイプライン値を設定および適用するポリシーを定義できます。たとえば、これにより、組織、リポジトリ、およびその他の一致基準に基づいて、ネームスペース、許容値などを設定できます。
ポリシーファイルの例:
1 ---
2 kind: policy
3 name: octocat
4
5 match:
6 repos:
7 - "octocat/*"
8 - "octocat/hello-world"
9
10 metadata:
11 namespace: octocat
12
13 resources:
14 request:
15 cpu: 1
16 memory: 512MiB
17 limit:
18 cpu: 4
19 memory: 1GiB
20
21 node_selector:
22 disktype: ssd
23
24 ---
25 kind: policy
26 name: default
27
28 metadata:
29 namespace: default
ポリシーファイルはランナーコンテナにマウントする必要があり、ポリシーファイルの場所をランナーに提供する必要があります。設定手順については、 ポリシー設定パラメータを参照してください。
複数のポリシー
ポリシーファイルで複数のポリシーを定義できます。 match
セクションは、パイプラインのポリシーを一致させるために使用されます。最初の一致ポリシーがパイプラインに適用されます。
1 ---
2 kind: policy
3 name: octocat
4
5 match:
6 repos:
7 - "octocat/*"
8 - "octocat/hello-world"
9
10 metadata:
11 namespace: octocat
12
13 ---
14 kind: policy
15 name: default
16
17 metadata:
18 namespace: default
デフォルトのポリシー
オプションで、ポリシーファイルにデフォルトのポリシーを定義し、それに応じて名前を付けることができます。パイプラインに一致する他のポリシーがない場合は、デフォルトのポリシーが適用されます。
1 ---
2 kind: policy
3 name: octocat
4
5 match:
6 repos:
7 - "octocat/*"
8 - "octocat/hello-world"
9
10 metadata:
11 namespace: octocat
12
13 ---
14 kind: policy
15 name: default
16
17 metadata:
18 namespace: default
ファイル形式
- kind
kind属性は、オブジェクトの種類を定義します。 - name
name属性は、ポリシーの名前を定義します。 - metadata
metadataセクションは、パイプラインポッドにアタッチされたメタデータを定義します。- namespace
namespace属性は、パイプラインポッドが作成されるネームスペースを定義します。これは、yamlで定義された値よりも優先されます。 - annotations
annotations属性は、パイプラインポッドにアタッチされる任意のキー/値のペアのセットを定義します。これらは、yamlで定義されている既存のアノテーションに追加され、競合が優先されます。 - labels
annotations属性は、パイプラインポッドにアタッチされる任意のキー/値のペアのセットを定義します。これらは、yamlで定義されている既存のラベルに追加され、競合が優先されます。
- namespace
- resources
resource属性は、パイプラインステップのリソース要件と制限を定義します。- request
requestセクションは、スケジューラがパイプラインポッドを配置するノードを定義するときに使用されるリソース要件を定義します。 - cpu
cpu属性は、cpu要件を定義します。 - memory
memory属性は、メモリ要件を定義します。
- request
- limit
limitセクションは、各パイプラインステップに適用されるコンテナリソース制限を定義します。- cpu
cpu属性は、cpu制限を定義します。 - memory
memory属性は、メモリ制限を定義します。
- cpu
- service_account
service_account属性は、パイプラインポッドの作成に使用されるkubernetesサービスアカウントを定義します。これは、yamlで定義された値よりも優先されます。 - node_selector
node_selector属性は、パイプラインポッドを一致するノードにルーティングするために使用されるキーと値のペアのセットを定義します。これは、yamlで定義されている値よりも優先されます。 - tolerations
tolerationsセクションでは、許容範囲を定義してパイプラインポッドに適用し、taintが一致するノードにスケジュールを設定します。- effect
effect属性は、taint効果を定義します。 - key
key属性は、許容キーを定義します。 - operator
key属性は、許容演算子を定義します。 - toleration_seconds
key属性は、許容秒数を定義します。 - value
key属性は、許容値を定義します。
- effect
例
- ポリシーの例では、デフォルトのサービスアカウントを設定します。
1 kind: policy
2 name: default
3
4 service_account: drone - ポリシーの例では、一致するパイプラインのデフォルトのサービスアカウントを設定します。
1 kind: policy
2 name: default
3
4 service_account: drone
5
6 match:
7 repos:
8 - "octocat/*"
9 - "octocat/hello-world" - ポリシーの例は、デフォルトのネームスペースを設定します。
1 kind: policy
2 name: default
3
4 metadata:
5 namespace: default
6
7 match:
8 repos:
9 - "octocat/*"
10 - "octocat/hello-world" - ポリシーの例は、デフォルトのリソース制限を設定します。
1 kind: policy
2 name: default
3
4 metadata:
5 namespace: default
6
7 resources:
8 request:
9 cpu: 1
10 memory: 512MiB
11 limit:
12 cpu: 4
13 memory: 1GiB - ポリシーの例は、デフォルトのノード選択を設定します。
1 kind: policy
2 name: default
3
4 metadata:
5 namespace: default
6
7 node_selector:
8 disktype: ssd - ポリシーの例は、デフォルトのメタデータを設定します。
1 kind: policy
2 name: default
3
4 metadata:
5 namespace: default
6 labels:
7 keyA: valueA
8 keyB: valueB
9 annotations:
10 keyA: valueA
11 keyB: valueB