3.4.6 デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成
次に示す要件を満たすように、デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストを作成してください。この作業は、次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に実施します。
-
ユーザ責務のKubernetesアプリケーション
-
HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション
このロールおよびロールバインディングを使用することで、各KubernetesアプリケーションのDependency-Checkerコンテナがデプロイ依存関係チェック機能に必要なKubernetesオブジェクトにアクセスできるようにします。
デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成要領を次に示します。
<ロールの作成要領>
-
リソースの種類(.kindフィールド)は、次のとおり指定してください。
-
Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※のNamespaceがすべて同一の場合:
Roleリソースを指定
-
Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※のNamespaceが1つでも異なる場合:
ClusterRoleリソースを指定
- 注※
-
Dependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「5.4 各Kubernetesアプリケーションの作成要件」を参照してください。
-
-
ロールの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。
-
Roleリソースの場合、ロールのNamespace(.metadata.namespaceフィールド)に、Dependency-Checkerコンテナを含むKubernetesアプリケーションと同一のNamespaceを指定してください。
ClusterRoleリソースの場合、Namespaceは指定しません。
-
ロールのルール(.rulesフィールド)に、次のとおり指定してください。
-
APIグループ(apiGroups)
空(コアグループ)、apps
-
リソース(resources)
pods、replicasets、deployments、statefulsets、daemonsets
-
アクセス許可(verbs)
get、list
-
<ロールバインディングの作成要領>
-
リソースの種類(.kindフィールド)は、次のとおり指定してください。
-
Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※のNamespaceがすべて同一の場合:
RoleBindingリソースを指定
-
Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※のNamespaceが1つでも異なる場合:
ClusterRoleBindingリソースを指定
- 注※
-
Dependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「5.4 各Kubernetesアプリケーションの作成要件」を参照してください。
-
-
ロールバインディングの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。
-
RoleBindingリソースの場合、ロールバインディングのNamespace(.metadata.namespaceフィールド)に、Dependency-Checkerコンテナを含むKubernetesアプリケーションと同一のNamespaceを指定してください。
ClusterRoleBindingリソースの場合、Namespaceは指定しません。
-
バインドするロール(.roleRefフィールド)は、次のとおり指定してください。
-
.roleRef.apiGroupフィールドに、「rbac.authorization.k8s.io」を指定してください。
-
.roleRef.kindフィールドに、「Role」を指定してください。
-
.roleRef.nameフィールドに、ロールで指定したロールの名称を指定してください。
-
-
バインドする対象物(.subjectsフィールド)は、次のとおり指定してください。
-
リストの要素数はDependency-Checkerコンテナを含むKubernetesアプリケーションと同じ数にします。
-
.subjects[].kindフィールドに、「ServiceAccount」を指定してください。
-
.subjects[].nameフィールドは、Dependency-Checkerコンテナを含むKubernetesアプリケーションのServiceAccountリソースの.metadata.nameフィールドに指定した名称を指定してください。HMP-PCTO責務のKubernetesアプリケーションおよびユーザとHMP-PCTO責務のKubernetesアプリケーションのServiceAccountの名称は次のとおりです。
Kubernetesアプリケーション
ServiceAccountの名称
Mediator
mediator-service-account
Ext-Cons
ext-cons-service-account
Filebeat
filebeat-service-account
Jaeger-query
jaeger-query-service-account
Jaeger-collector
jaeger-collector-service-account
Prometheus
prometheus-service-account
Metricbeat
metricbeat-service-account
Logstash
logstash-service-account
-
-
.subjects[].namespaceフィールドに、Dependency-Checkerコンテナを含むKubernetesアプリケーションのServiceAccountリソースの.metadata.namespaceフィールドに指定した名称を指定してください。
デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの記述例を次に示します。
■Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※1のNamespaceがすべて同一の場合
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: dependency-checker-role namespace: my-namespace rules: - apiGroups: - "" - apps resources: - pods - replicasets - deployments - statefulsets - daemonsets verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: dependency-checker-role-binding namespace: my-namespace roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: dependency-checker-role subjects: - kind: ServiceAccount name: orchestrator-service-account namespace: my-namespace - kind: ServiceAccount name: entity-service-service-account namespace: my-namespace - kind: ServiceAccount name: sql-participant-service-account※2 namespace: my-namespace - kind: ServiceAccount name: mediator-service-account namespace: my-namespace - kind: ServiceAccount name: filebeat-service-account namespace: my-namespace - kind: ServiceAccount name: jaeger-query-service-account namespace: my-namespace - kind: ServiceAccount name: jaeger-collector-service-account namespace: my-namespace - kind: ServiceAccount name: prometheus-service-account namespace: my-namespace - kind: ServiceAccount name: metricbeat-service-account namespace: my-namespace - kind: ServiceAccount name: logstash-service-account namespace: my-namespace
- 注※1
-
Dependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「5.4 各Kubernetesアプリケーションの作成要件」を参照してください。
- 注※2
-
SQL-Participantを使用する場合の例を記述しています。TCC-Participantを使用する場合は次の記述に置き換えてください。
name: tcc-participant-service-account
■Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※1のNamespaceが1つでも異なる場合
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: dependency-checker-role rules: - apiGroups: - "" - apps resources: - pods - replicasets - deployments - statefulsets - daemonsets verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dependency-checker-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: dependency-checker-role subjects: - kind: ServiceAccount name: orchestrator-service-account namespace: my-namespace - kind: ServiceAccount name: entity-service-service-account namespace: my-namespace - kind: ServiceAccount name: sql-participant-service-account※2 namespace: my-namespace - kind: ServiceAccount name: mediator-service-account namespace: my-namespace - kind: ServiceAccount name: filebeat-service-account namespace: my-namespace - kind: ServiceAccount name: jaeger-query-service-account namespace: my-namespace - kind: ServiceAccount name: jaeger-collector-service-account namespace: my-namespace - kind: ServiceAccount name: prometheus-service-account namespace: my-namespace - kind: ServiceAccount name: metricbeat-service-account namespace: my-namespace - kind: ServiceAccount name: logstash-service-account namespace: my-namespace
- 注※1
-
Dependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「5.4 各Kubernetesアプリケーションの作成要件」を参照してください。
- 注※2
-
SQL-Participantを使用する場合の例を記述しています。TCC-Participantを使用する場合は次の記述に置き換えてください。
name: tcc-participant-service-account