4.8.2. Operator インストールのスコープ設定


Operator の Operator Lifecycle Manager (OLM) での Operator のインストールおよびアップグレードに関するスコープ設定ルールを提供するには、サービスアカウントを Operator グループに関連付けます。

この例では、クラスター管理者は一連の Operator を指定された namespace に制限できます。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. 新規の namespace を作成します。

    例4.9 Namespace オブジェクトを作成するコマンドの例

    $ cat <<EOF | oc create -f -
    apiVersion: v1
    kind: Namespace
    metadata:
      name: scoped
    EOF
  2. Operator に必要な制限が適用されるように権限を割り当てます。これを行うには、新しく作成した指定の namespace に、新しいサービスアカウント、関連するロール、およびロールバインディングを作成する必要があります。

    1. 次のコマンドを実行してサービスアカウントを作成します。

      例4.10 ServiceAccount オブジェクトを作成するコマンドの例

      $ cat <<EOF | oc create -f -
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: scoped
        namespace: scoped
      EOF
    2. 次のコマンドを実行してシークレットを作成します。

      例4.11 有効期間の長い API トークンの Secret オブジェクトを作成するコマンドの例

      $ cat <<EOF | oc create -f -
      apiVersion: v1
      kind: Secret
      type: kubernetes.io/service-account-token 
      1
      
      metadata:
        name: scoped
        namespace: scoped
        annotations:
          kubernetes.io/service-account.name: scoped
      EOF
      1
      シークレットは、有効期間の長い API トークンである必要があります。これはサービスアカウントによって使用されます。
    3. 次のコマンドを実行してロールを作成します。

      警告

      この例では、例示目的でのみ、指定の namespace ですべての操作を実行できる権限を、ロールによってサービスアカウントに付与します。実稼働環境では、よりきめ細かい権限セットを作成する必要があります。詳細は、「粒度の細かいパーミッション」を参照してください。

      例4.12 Role および RoleBinding オブジェクトを作成するコマンドの例

      $ cat <<EOF | oc create -f -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        name: scoped
        namespace: scoped
      rules:
      - apiGroups: ["*"]
        resources: ["*"]
        verbs: ["*"]
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: scoped-bindings
        namespace: scoped
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: scoped
      subjects:
      - kind: ServiceAccount
        name: scoped
        namespace: scoped
      EOF
  3. 次のコマンドを実行して、指定の namespace に OperatorGroup オブジェクトを作成します。この Operator グループは指定された namespace をターゲットにし、そのテナンシーがこれに制限されるようにします。さらに、Operator グループはユーザーがサービスアカウントを指定できるようにします。

    例4.13 OperatorGroup オブジェクトを作成するコマンドの例

    $ cat <<EOF | oc create -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: scoped
      namespace: scoped
    spec:
      serviceAccountName: scoped 
    1
    
      targetNamespaces:
      - scoped
    EOF
    1
    直前のステップで作成したサービスアカウントを指定します。指定された namespace にインストールされる Operator はこの Operator グループに関連付けられ、指定されるサービスアカウントに関連付けられます。
  4. 指定された namespace で Subscription オブジェクトを作成し、Operator をインストールします。

    例4.14 Subscription オブジェクトを作成するコマンドの例

    $ cat <<EOF | oc create -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: openshift-cert-manager-operator
      namespace: scoped
    spec:
      channel: stable-v1
      name: openshift-cert-manager-operator
      source: <catalog_source_name> 
    1
    
      sourceNamespace: <catalog_source_namespace> 
    2
    
    EOF
    1
    指定の namespace にすでに存在するカタログソース、またはグローバルカタログ namespace にあるカタログソース (例: redhat-operators) を指定します。
    2
    カタログソースが作成された namespace を指定します (たとえば、redhat-operators カタログの場合は openshift-marketplace)。

    この Operator グループに関連付けられる Operator は、指定されたサービスアカウントに付与されるパーミッションに制限されます。Operator がサービスアカウントの範囲外のパーミッションを要求する場合、インストールは関連するエラーを出して失敗します。

4.8.2.1. 粒度の細かいパーミッション

Operator Lifecycle Manager (OLM) は Operator グループで指定されたサービスアカウントを使用して、インストールされる Operator に関連する以下のリソースを作成または更新します。

  • ClusterServiceVersion
  • Subscription
  • Secret
  • ServiceAccount
  • Service
  • ClusterRole および ClusterRoleBinding
  • Role および RoleBinding

Operator を指定された namespace に制限するため、クラスター管理者は以下のパーミッションをサービスアカウントに付与して起動できます。

注記

以下のロールは一般的なサンプルであり、特定の Operator に基づいて追加のルールが必要になる可能性があります。

kind: Role
rules:
- apiGroups: ["operators.coreos.com"]
  resources: ["subscriptions", "clusterserviceversions"]
  verbs: ["get", "create", "update", "patch"]
- apiGroups: [""]
  resources: ["services", "serviceaccounts"]
  verbs: ["get", "create", "update", "patch"]
- apiGroups: ["rbac.authorization.k8s.io"]
  resources: ["roles", "rolebindings"]
  verbs: ["get", "create", "update", "patch"]
- apiGroups: ["apps"] 
1

  resources: ["deployments"]
  verbs: ["list", "watch", "get", "create", "update", "patch", "delete"]
- apiGroups: [""] 
2

  resources: ["pods"]
  verbs: ["list", "watch", "get", "create", "update", "patch", "delete"]
1 2
ここで、デプロイメントおよび Pod などの他のリソースを作成するためのパーミッションを追加します。

さらに、Operator がプルシークレットを指定する場合、以下のパーミッションも追加する必要があります。

kind: ClusterRole 
1

rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get"]
---
kind: Role
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["create", "update", "patch"]
1
シークレットを OLM namespace から取得するために必要です。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る