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

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

コンポーネント Namespace サービス アカウント
activator knative-serving controller
autoscaler knative-serving controller
controller knative-serving controller
webhook knative-serving controller
storage-version-migration-serving knative-serving controller
webhook knative-serving controller
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 Namespace から Secret を読み取る必要があります。ドメイン マッピング コントローラは、自動 TLS 機能によって生成された証明書の Secret を読み取り、gke-system Namespace にコピーする必要があります。
pods を変更できる ドメイン マッピング コントローラは、HTTP01 チャレンジを処理するリクエストに対応する Pod を作成する必要があります。
secrets を変更できる ドメイン マッピング コントローラは証明書の Secret を作成または更新する必要があります。Webhook は knative-serving Namespace から Secret を読み取る必要があります。
configmaps を変更できる デフォルトの URL 機能で使用されます。コントローラは、Knative serving Namespace 内の config-domain configmap を更新して、nip.io URL を追加する必要があります。
endpoints を変更できる サーバーレス サービス コントローラは、エンドポイントを作成、更新、または削除する必要があります。ルート コントローラは、エンドポイントを作成、更新、または削除する必要があります。
services を変更できる ルート コントローラは、サービスを作成、更新、または削除する必要があります。サーバーレス コントローラは、サービスを作成、更新、または削除する必要があります。ドメイン マッピング コントローラは、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 が所有する validatingwebhookconfigurations に caBundle を追加します。
customresourcedifinitions customresourcedefinitions/status を変更できる Knative のインストール後のジョブでは、Knative 関連の CRD を v1 バージョンにアップグレードする必要があります。
horizontalpodautoscalers を変更できる Knative は、HPA に基づく自動スケーリングをサポートしています。
namespace/finalizer を変更できる Knative serving では、Knative serving の Namespace に ownerreference を設定する必要があります。