このドキュメントでは、 Cluster Services for OpenShift Telemetry オペレーター をインストールし、 Compute Engine インスタンスで実行される OpenShift クラスタに接続するように構成する方法について説明します。
インストールして構成すると、このテレメトリー オペレーターは、クラスタの健全性とクラスタ構成を継続的にモニタリングするホストネットワーク テレメトリー デーモンをデプロイします。オペレーターは、収集した指標を Workload Manager に送信します。Workload Manager の評価を使用して、OpenShift クラスタのベスト プラクティスからの逸脱がないか、クラスタで実行されているワークロードをスキャンできます。
始める前に
テレメトリー オペレーターをインストールして構成する前に、次の前提条件を満たしていることを確認してください。
- Red Hat OpenShift Container Platform バージョン 4.18 以降を使用している。
- 1 つ以上のコンピューティング インスタンスに OpenShift クラスタをデプロイしている。
- 管理者が、Red Hat OpenShift Container Platform のクラスタに対する ClusterAdmin ロールを付与している。
- ターミナルに Google Cloud CLI をダウンロードしてインストール している。Cloud Shell を使用している場合は、この前提条件を スキップできます。
- クラスタに OpenShift CLI(
oc)をインストールしている。この CLI のインストール方法については、Red Hat のドキュメント OpenShift CLI のインストールをご覧ください。 - Cloud Credentials Operator(
ccoctl)ユーティリティをインストールしている。このユーティリティのインストール方法については、Red Hat のドキュメントOpenShift 4 用のccoctlツールを入手する方法をご覧ください。 - Workload Manager の評価を作成できるサポート対象リージョン を確認している。
- 管理者が、Workload Manager の評価を作成して実行するために必要な IAM ロールを付与している。
- Cloud APIs へのアクセスを有効にしている。
Cloud APIs へのアクセスを有効にする
Compute Engine では、すべての Cloud APIs にすべてのアクセス スコープを使用できるようにインスタンスを構成し、インスタンス サービス アカウントの IAM 権限のみを使用してリソースへのアクセスを制御することをおすすめします Google Cloud 。詳細については、 ユーザー管理のサービス アカウントを使用する VM を作成するをご覧ください。
Cloud APIs へのアクセスを制限する場合、Cluster Services for OpenShift Telemetry オペレーターには、ホスト コンピューティング インスタンスで次の Cloud APIs アクセス スコープが最低限必要です。
https://www.googleapis.com/auth/cloud-platform
詳細については、 スコープのベスト プラクティスをご覧ください。
外部 IP アドレスを持たないコンピューティング インスタンスで OpenShift クラスタを実行している場合は、インスタンスのサブネットで プライベート Google アクセスを有効にして、 Cluster Services for OpenShift Telemetry オペレーター が Google APIs とサービスにアクセスできるようにする必要があります。プライベート Google アクセスを有効にする方法については、 プライベート Google アクセスを構成するをご覧ください。
OpenShift クラスタに対するユーザーの認証
管理アクションを実行するには、OpenShift CLI を使用して OpenShift クラスタに対する認証を行う必要があります。OpenShift クラスタに対するユーザーの認証には、次のオプションを選択できます。
次のコマンドを実行し、プロンプトに従います。
oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadminまたは、
ocバイナリで使用するセッション認証トークンを取得します。 このトークンを取得するには、ウェブブラウザで次の URL を開きます。https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
CLUSTER_DOMAIN は、OpenShift クラスタのドメインに置き換えます。例: mycluster.google.com。
に対するオペレーターの認証 Google Cloud
テレメトリー オペレーターが自身を認証してリソースにアクセス Google Cloud できるようにするには、 プロジェクトにサービス アカウントを作成する必要があります。 Google Cloud
次のオプションを使用して、テレメトリー オペレーターをサービス アカウントとして認証できます。
Workload Identity 連携を使用してオペレーターを認証する
Workload Identity 連携を使用してテレメトリー オペレーターをサービス アカウントとして認証する手順は次のとおりです。
ターミナルで、テレメトリー オペレーター バンドルから
CredentialsRequestマニフェストをローカル ディレクトリに抽出します。mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirmVERSIONは、OperatorHub でテレメトリー オペレーターに登録したバージョン番号に置き換えます。テレメトリー オペレーターの認定バージョン番号のリストは、Red Hat Ecosystem Catalog で確認できます。ccoctlユーティリティを使用して、抽出したCredentialsRequestマニフェストを処理し、 Google Cloud Identity and Access Management(IAM)のバインディング および認証情報をプロビジョニングします。ccoctl gcp create-all \ --name=cso-telemetry \ --region=REGION \ --project=PROJECT_ID \ --credentials-requests-dir=./credrequests \ --output-dir=./ccoctl-out次のように置き換えます。
REGION: OpenShift クラスタが実行される Compute Engine リージョンPROJECT_ID: OpenShift クラスタが実行される プロジェクトの Google Cloud プロジェクト ID
生成された OpenID Connect(OIDC)プロバイダ、IAM ロール、シークレット マニフェストをクラスタに適用します。
oc apply -f ./ccoctl-out/manifests/
上記の手順では、 プロジェクトにサービス アカウントを作成し、次の IAM ロールを割り当てます。 Google Cloud
- コンピューティング インスタンスから指標を収集する:
Compute Viewer (
roles/compute.viewer) - Workload Manager データ ウェアハウスにデータを書き込む:
Workload Manager Insights ライター(
roles/workloadmanager.insightWriter) - オペレーター ログを Cloud Logging に送信する:
ログ書き込み(
roles/logging.logWriter)
サービス アカウント キーを使用してオペレーターを認証する
組織で認証に Workload Identity 連携を使用できない場合は、サービス アカウント キーを使用してテレメトリー オペレーターを認証できます。
サービス アカウント キーを使用してテレメトリー オペレーターをサービス アカウントとして認証する手順は次のとおりです。
ターミナルで、テレメトリー オペレーター バンドルから
CredentialsRequestマニフェストをローカル ディレクトリに抽出します。mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirmプロジェクトで、テレメトリー オペレーターのサービス アカウントを作成します。 Google Cloud
gcloud iam service-accounts create cso-telemetry-agent \ --description="Service account for OpenShift Telemetry Operator" \ --display-name="CSO Telemetry Agent" \ --project=PROJECT_IDPROJECT_IDは、OpenShift クラスタが実行される Google Cloud プロジェクトの ID に置き換えます。サービス アカウントが Google Cloud リソースにアクセスできるようにするには、 サービス アカウントに
CredentialsRequestマニフェストで定義されている IAM ロールを付与します。このマニフェストには、オペレーターに必要な次の最小限の IAM ロールが含まれています。- コンピューティング インスタンスから指標を収集する:
Compute Viewer (
roles/compute.viewer) - Workload Manager データ ウェアハウスにデータを書き込む:
Workload Manager Insights ライター(
roles/workloadmanager.insightWriter) - オペレーター ログを Cloud Logging に送信する:
ログ書き込み(
roles/logging.logWriter)
このマニフェストで定義されている IAM ロールごとに、次のコマンドを実行します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com" \ --role="IAM_ROLE"IAM_ROLEは、サービス アカウントに付与する IAM ロールに置き換えます。- コンピューティング インスタンスから指標を収集する:
Compute Viewer (
サービス アカウントの秘密鍵を作成してダウンロードします。
gcloud iam service-accounts keys create ./sa_key.json \ --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \ --project=PROJECT_IDopenshift-operators名前空間で、作成したサービス アカウント キーのtelemetry-agent-saという名前のシークレットを作成します。oc create secret generic telemetry-agent-sa \ --from-file=workload_agent_sa_key.json=./sa_key.json \ -n openshift-operators
Cluster Services for OpenShift Telemetry オペレーターをインストールする
Cluster Services for OpenShift Telemetry オペレーターは、Red Hat OpenShift Container Platform ウェブ コンソールまたは宣言型サブスクリプション YAML マニフェストを使用してインストールできます。これらのオプションの詳細については、Red Hat のドキュメント クラスタへのオペレーターの追加をご覧ください。
OpenShift ウェブ コンソール
OpenShift Container Platform ウェブ コンソールを使用して OpenShift クラスタにテレメトリー オペレーターをインストールする手順は次のとおりです。
- Red Hat OpenShift ウェブ コンソールにログインします。
- [管理者] パースペクティブであることを確認します。
- 左側のナビゲーションで [オペレーター] セクションを開き、[OperatorHub] をクリックします。
[すべてのアイテム] の下の検索バーに [Cluster Services for OpenShift Telemetry] と入力します。
または、「Google 」と入力して検索することもできます。これにより、Google が提供するオペレーターがフィルタされ、Cluster Services for OpenShift Telemetry オペレーターが表示されます。
[Cluster Services for OpenShift Telemetry] という名前のカードをクリックします。
[Cluster Services for OpenShift Telemetry] ペインで [インストール] をクリックします。
[オペレーターのインストール] ページで、次の手順を行います。
- [更新チャンネル] フィールドで [安定版] を選択します。
- [インストール モード] フィールドで [クラスタ上の特定の名前空間] を選択します。
- [インストールされた名前空間] フィールドで、[openshift-operators] プロジェクトを選択するか、カスタム モニタリング名前空間を作成します。
- [承認戦略] フィールドで [自動] または [手動] を選択します。
- [インストール] をクリックします。
オペレーターが正常にインストールされたことを確認する手順は次のとおりです。
- [オペレーター] > [インストール済みオペレーター] に移動します。
- オペレーターのリストで、[Cluster Services for OpenShift Telemetry] オペレーターが存在することを確認します。
- [ステータス] 列に [成功] または [最新] と表示されていることを確認します。
- 必要に応じて、オペレーターをクリックして詳細を表示します。
OpenShift CLI
OpenShift CLI と宣言型 Subscription YAML マニフェストを使用して OpenShift クラスタにテレメトリー オペレーターをインストールする手順は次のとおりです。
次の構成で
subscription.yamlという名前のSubscriptionカスタム リソース マニフェストを作成します。apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: google-cloud-cluster-services-for-openshift-telemetry namespace: openshift-operators spec: channel: stable installPlanApproval: Automatic name: google-cloud-cluster-services-for-openshift-telemetry source: certified-operators sourceNamespace: openshift-marketplaceサブスクリプションをクラスタに適用します。
oc apply -f subscription.yamlClusterServiceVersionのステータスを確認して、テレメトリー オペレーターが正常にインストールされていることを確認します。oc get csv -n openshift-operators出力で、
cluster-services-for-openshift-telemetryのPHASE列の値がSucceededであることを確認します。
指標の収集を有効にする
オペレーターが OpenShift クラスタから指標を収集できるようにするには、TelemetryConfig カスタム リソースを適用する必要があります。このリソースは、Agent for Compute Workloads のデーモン Pod をクラスタノードにデプロイします。
オペレーターが OpenShift クラスタから指標を収集できるようにする手順は次のとおりです。
telemetryconfig.yamlという名前のTelemetryConfigカスタム リソース マニフェストを作成します。Workload Identity 連携を使用してテレメトリー オペレーターの認証を設定した場合は、次の最小限のカスタム リソースを使用します。このカスタム リソースは、
google-cloud-cluster-services-telemetry-agent-wif-secretシークレットに保存されている認証情報を自動的に取得します。apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1 kind: TelemetryConfig metadata: name: telemetryconfig namespace: openshift-operators spec: enabled: trueサービス アカウント キーを使用してテレメトリー オペレーターの認証を設定した場合は、次のカスタム リソースを使用します。
apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1 kind: TelemetryConfig metadata: name: telemetryconfig namespace: openshift-operators spec: enabled: true serviceAccountCredentialsSecretName: telemetry-agent-sa serviceAccountCredentialsPath: SERVICE_ACCOUNT_KEY_PATHSERVICE_ACCOUNT_KEY_PATHは、サービス アカウント キーをマウントしたパスに置き換えます。マウント名は、サービス アカウント キーの JSON ファイルと一致する必要があります。例:/var/run/secrets/google/workload_agent_sa_key.json。
カスタム リソースをクラスタに適用します。
oc apply -f telemetryconfig.yamlテレメトリー エージェント Pod の状態が [**実行中**] であることを確認します。
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operatorPod のログを調べて、指標の収集を確認することもできます。
"openshiftmetrics/openshiftmetrics.go:126","msg":"Metric payload after collection","pid":5,"context":"OpenShiftMetricCollection","payload":"version:\"v0.1.0-pre\" agent_version:\"1.3\"
Cloud Logging でオペレーター ログを表示する
デフォルトでは、Cluster Services for OpenShift Telemetry オペレーターのログは Cloud Logging に送信されます。これらのログは Logging で確認できます。Logging でオペレーター ログを表示する手順は次のとおりです。
コンソールで、[Logs Explorer] ページに移動します。 Google Cloud
クエリペインにクエリを入力します。
プロジェクトのログをフィルタするには、次のクエリを使用します。 Google Cloud
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
PROJECT_IDは、OpenShift クラスタが実行される Google Cloud プロジェクトのプロジェクト ID に置き換えます。プロジェクトで複数のクラスタを実行していて、特定のクラスタのログをフィルタする場合は、次のクエリを使用します。 Google Cloud
resource.labels.instance_id=("COMPUTE_INSTANCE_ID_1" OR "COMPUTE_INSTANCE_ID_2" OR "COMPUTE_INSTANCE_ID_3")COMPUTE_INSTANCE_IDは、OpenShift クラスタを実行する Compute Engine インスタンスのインスタンス ID に置き換えます。コンピューティング インスタンス ID を確認する方法については、 VM の詳細を表示するをご覧ください。
[クエリを実行] をクリックします。
ログベースのアラート ポリシーを設定する
デフォルトでは、テレメトリー オペレーターのログは Cloud Logging に送信されます。ログに特定のメッセージが表示されたときに通知する、テレメトリー オペレーターのログに基づくアラート ポリシーを構成することをおすすめします。これらのアラートは、オペレーターの機能をモニタリングし、問題をトラブルシューティングするのに役立ちます。
テレメトリー オペレーターによって生成されたログに基づいてアラート ポリシーを構成する手順は次のとおりです。
ログベースのアラート ポリシーを構成するの「始める前に」セクションに記載されている前提条件を満たしていることを確認します。
コンソールで、[Logs Explorer] ページに移動します。 Google Cloud
クエリペインに必要なクエリを入力します。
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
SEVERITY_LEVELは、サポートされている重大度レベルの値(DEBUG、INFO、WARNING、ERRORなど)に置き換えます。ERRORまたはそれ以上のログレベルの値を使用することをおすすめします。[クエリを実行] をクリックしてクエリを検証します。
ログアラートを作成します。
このアラートの作成方法については、ログ エクスプローラを使用してログベースのアラート ポリシーを作成するの手順 3 をご覧ください。
省略可: 本番環境固有の評価を有効にする
Workload Manager が OpenShift クラスタでサポートするベスト プラクティスのうち、一部は本番環境にのみ適用されます。
Workload Manager は、クラスタ、デプロイ、Pod で environment ラベルを確認することで、この区別を行います。このラベルに関連付けられた値が production の場合、Workload Manager はそのリソースを本番環境リソースと見なします。
クラスタが本番環境に属していることを Workload Manager に通知する手順は次のとおりです。
workloadmanager名前空間を作成します。oc create namespace workloadmanager次の構成を使用して、
workloadmanager名前空間にConfigMapを作成します。apiVersion: v1 kind: ConfigMap metadata: name: wlm-cluster-environment namespace: workloadmanager data: # Options: "production" or "non-production" environment: "production"
デプロイまたは Pod が本番環境に属していることを Workload Manager に通知するには、次のいずれかのオプションを使用して、environment という名前のラベルをリソース定義に追加します。
次の構成を手動で適用します。
apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: # Options: "production" or "non-production" environment: "production" spec: ...次のコマンドを実行します。
oc label --overwrite deployments DEPLOYMENT_NAME environment=productionDEPLOYMENT_NAMEは、デプロイの名前に置き換えます。
OpenShift クラスタと、クラスタで実行されるデプロイまたは Pod に environment ラベルを適用すると、Workload Manager は、クラスタに設定されたラベル値よりも、デプロイまたは Pod に設定されたラベル値を優先します。
省略可: 指標の収集をトリガーする
OpenShift クラスタで Cluster Services for OpenShift Telemetry オペレーターを正常に設定すると、オペレーターはクラスタから指標を収集し、30 分ごとに Workload Manager に送信します。
必要に応じて、指標のスケジュールされた収集を 30 分間待つのではなく、オペレーターを手動でトリガーして指標を収集し、Workload Manager に送信できます。
オペレーターを手動でトリガーして指標を収集する手順は次のとおりです。
ターミナルを開きます。
実行中の Pod の名前を確認します。
POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)オペレーターをトリガーして指標を収集して送信します。
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
次のステップ
- 評価を作成して実行する
- OpenShift の Workload Manager ベスト プラクティスについて学習する