ポリシー

Updated 2 years ago by Admin

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で定義されている既存のラベルに追加され、競合が優先されます。
  • resources
    resource属性は、パイプラインステップのリソース要件と制限を定義します。
    • request
      requestセクションは、スケジューラがパイプラインポッドを配置するノードを定義するときに使用されるリソース要件を定義します。
    • cpu
      cpu属性は、cpu要件を定義します。
    • memory
      memory属性は、メモリ要件を定義します。
  • limit
    limitセクションは、各パイプラインステップに適用されるコンテナリソース制限を定義します。
    • cpu
      cpu属性は、cpu制限を定義します。
    • memory
      memory属性は、メモリ制限を定義します。
  • 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属性は、許容値を定義します。


  • ポリシーの例では、デフォルトのサービスアカウントを設定します。
    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


How did we do?