Knative serving コンポーネントの権限

このページは、Knative serving のコンポーネントがクラスタへのアクセスを維持するために保持する RBAC 権限を理解するのに役立ちます。これらの権限は必須で、Knative serving ではデフォルトで有効になっています。これらは無効にしないでください。

コンポーネント Namespace サービス アカウント
activator knative-serving コントローラ
autoscaler knative-serving コントローラ
controller knative-serving コントローラ
webhook knative-serving コントローラ
storage-version-migration-serving knative-serving コントローラ
webhook knative-serving コントローラ
cloud-run-operator cloud-run-system cloud-run-operator

cloud-run-operator サービス アカウントには、controller と同じ権限セットがあります。このオペレータは、カスタム リソース定義とコントローラを含むすべての Knative serving コンポーネントをデプロイします。

Knative serving サービス アカウントの RBAC

次の apiGroup 定義を使用して、controllercloud-run-operator サービス アカウントの両方に対する Knative serving のそれぞれのリソースのアクセス制御の権限を確認してください。

- apiGroups:
  - ""
  resources:
  - pods
  - secrets
  verbs:
  - deletecollection
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
  - watch
  - list
- apiGroups:
  - ""
  resources:
  - pods
  - namespaces
  - secrets
  - configmaps
  - endpoints
  - services
  - events
  - serviceaccounts
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - ""
  resources:
  - endpoints/restricted
  verbs:
  - create
- apiGroups:
  - ""
  resources:
  - namespaces/finalizers
  verbs:
  - update
- apiGroups:
  - apps
  resources:
  - deployments
  - deployments/finalizers
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - mutatingwebhookconfigurations
  - validatingwebhookconfigurations
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  - customresourcedefinitions/status
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - autoscaling
  resources:
  - horizontalpodautoscalers
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - validatingwebhookconfigurations
  verbs:
  - get
  - list
  - create
  - update
  - delete
  - patch
  - watch

次の表は、Knative serving で RBAC 権限がどのように使用されるかを示しています。ここで、

  • 表示には、取得、一覧表示、監視が含まれます。
  • 変更には、作成、更新、削除、パッチ適用が含まれます。
権限 理由
すべての secrets を表示できる Webhook は knative-serving 名前空間から Secret を読み取る必要があります。DomainMapping コントローラは、自動 TLS 機能によって生成された証明書の Secret を読み取り、gke-system 名前空間にコピーする必要があります。
pods を変更できる DomainMapping コントローラは、HTTP01 チャレンジを処理するリクエストに対応するための Pod を作成する必要があります。
secrets を変更できる Domainmapping コントローラは証明書の Secret を作成または更新する必要があります。Webhook は knative-serving Namespace から Secret を読み取る必要があります。
configmaps を変更できる デフォルトの URL 機能で使用されます。コントローラは、「Knative serving」名前空間内の「config-domain」configmap を更新して、「nip.io」URL を追加する必要があります。
endpoints を変更できる Serverlessservice コントローラは、エンドポイントを作成、更新、または削除する必要があります。ルート コントローラは、エンドポイントを作成、更新、または削除する必要があります。
services を変更できる ルート コントローラは、サービスを作成、更新、または削除する必要があります。サーバーレス コントローラは、サービスを作成、更新、または削除する必要があります。Domainmapping コントローラは、HTTP01 チャレンジ リクエストを処理するサービスを作成する必要があります。
events を変更できる Knative serving コントローラは、Knative によって管理されるリソースのイベントを作成して出力します。
serviceaccounts を変更できる Knative serving はサービス アカウントを間接的に読み取る必要があります。
endpoints/restricted を変更できる RestrictedEndpointsAdmission が有効な場合、Knative serving はエンドポイントを作成する必要があります。
deployments を変更できる リビジョン コントローラは、Knative サービスのデプロイメントを作成または更新する必要があります。
mutatingwebhookconfiguration を変更できる Knative Webhook は、Knative が所有する mutatingwebhookconfigurations に caBundle を追加します。
validatingwebhookconfiguration を変更できる Knative Webhook は、Knative が所有する validationwebhookconfigurations に caBundle を追加します。
customresourcedifinitions customresourcedefinitions/status を変更できる Knative のインストール後のジョブでは、Knative 関連の CRD を v1 バージョンにアップグレードする必要があります。
horizontalpodautoscalers を変更できる Knative は、HPA に基づく自動スケーリングをサポートしています。
namespace/finalizer を変更できる Knative serving では、Knative serving の Namespace に ownerreference を設定する必要があります。