2.2. Loki オブジェクトストレージ
Loki Operator は、AWS S3 だけでなく、Minio や OpenShift Data Foundation などの他の S3 互換オブジェクトストアもサポートしています。Azure、GCS、および Swift もサポートされています。
Loki ストレージの推奨命名法は、logging-loki-<your_storage_provider>
です。
次の表は、各ストレージプロバイダーの LokiStack
カスタムリソース (CR) 内の type
値を示しています。詳細は、ストレージプロバイダーに関するセクションを参照してください。
ストレージプロバイダー | シークレットの type 値 |
---|---|
AWS | s3 |
Azure | azure |
Google Cloud | gcs |
Minio | s3 |
OpenShift Data Foundation | s3 |
Swift | swift |
2.2.1. AWS ストレージ リンクのコピーリンクがクリップボードにコピーされました!
ログを保存するために、Amazon Web Services (AWS) でオブジェクトストレージを作成できます。
前提条件
- Loki Operator がインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 - AWS 上に バケット を作成している。
- AWS IAM ポリシーと IAM ユーザー を作成している。
手順
次のコマンドを実行して、
logging-loki-aws
という名前のオブジェクトストレージシークレットを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.1.1. STS 対応クラスターの AWS ストレージ リンクのコピーリンクがクリップボードにコピーされました!
クラスターで STS が有効になっている場合、Cloud Credential Operator (CCO) によって AWS トークンを使用した短期認証がサポートされます。
次のコマンドを実行すると、Loki オブジェクトストレージシークレットを手動で作成できます。
oc -n openshift-logging create secret generic "logging-loki-aws" \ --from-literal=bucketnames="<s3_bucket_name>" \ --from-literal=region="<bucket_region>" \ --from-literal=audience="<oidc_audience>"
$ oc -n openshift-logging create secret generic "logging-loki-aws" \
--from-literal=bucketnames="<s3_bucket_name>" \
--from-literal=region="<bucket_region>" \
--from-literal=audience="<oidc_audience>"
- 1
- 任意のアノテーション。デフォルト値は
openshift
です。
2.2.2. Azure ストレージ リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Loki Operator がインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 - Azure 上に バケット を作成している。
手順
次のコマンドを実行して、
logging-loki-azure
という名前のオブジェクトストレージシークレットを作成します。oc create secret generic logging-loki-azure \ --from-literal=container="<azure_container_name>" \ --from-literal=environment="<azure_environment>" \ --from-literal=account_name="<azure_account_name>" \ --from-literal=account_key="<azure_account_key>"
$ oc create secret generic logging-loki-azure \ --from-literal=container="<azure_container_name>" \ --from-literal=environment="<azure_environment>" \
1 --from-literal=account_name="<azure_account_name>" \ --from-literal=account_key="<azure_account_key>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- サポートされている環境値は、
AzureGlobal
、AzureChinaCloud
、AzureGermanCloud
、AzureUSGovernment
です。
2.2.2.1. Microsoft Entra Workload ID 対応クラスター用の Azure ストレージ リンクのコピーリンクがクリップボードにコピーされました!
クラスターで Microsoft Entra Workload ID が有効になっている場合、Cloud Credential Operator (CCO) は Workload ID を使用した短期認証をサポートします。
次のコマンドを実行すると、Loki オブジェクトストレージシークレットを手動で作成できます。
oc -n openshift-logging create secret generic logging-loki-azure \ --from-literal=environment="<azure_environment>" \ --from-literal=account_name="<storage_account_name>" \ --from-literal=container="<container_name>"
$ oc -n openshift-logging create secret generic logging-loki-azure \
--from-literal=environment="<azure_environment>" \
--from-literal=account_name="<storage_account_name>" \
--from-literal=container="<container_name>"
2.2.3. Google Cloud Platform ストレージ リンクのコピーリンクがクリップボードにコピーされました!
前提条件
手順
-
GCP から受け取ったサービスアカウントの認証情報を
key.json
という名前のファイルにコピーします。 次のコマンドを実行して、
logging-loki-gcs
という名前のオブジェクトストレージシークレットを作成します。oc create secret generic logging-loki-gcs \ --from-literal=bucketname="<bucket_name>" \ --from-file=key.json="<path/to/key.json>"
$ oc create secret generic logging-loki-gcs \ --from-literal=bucketname="<bucket_name>" \ --from-file=key.json="<path/to/key.json>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.4. Minio ストレージ リンクのコピーリンクがクリップボードにコピーされました!
Minio でオブジェクトストレージを作成してログを保存できます。
前提条件
手順
次のコマンドを実行して、
logging-loki-minio
という名前のオブジェクトストレージシークレットを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.5. OpenShift Data Foundation ストレージ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Data Foundation ストレージにオブジェクトストレージを作成して、ログを保存できます。
前提条件
- Loki Operator がインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 - OpenShift Data Foundation がデプロイされている。
- OpenShift Data Foundation クラスターが オブジェクトストレージ用 に設定されている。
手順
openshift-logging
namespace にObjectBucketClaim
カスタムリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、関連付けられた
ConfigMap
オブジェクトからバケットのプロパティーを取得します。BUCKET_HOST=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_HOST}') BUCKET_NAME=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_NAME}') BUCKET_PORT=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_PORT}')
BUCKET_HOST=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_HOST}') BUCKET_NAME=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_NAME}') BUCKET_PORT=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_PORT}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、関連付けられたシークレットからバケットアクセスキーを取得します。
ACCESS_KEY_ID=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 -d) SECRET_ACCESS_KEY=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 -d)
ACCESS_KEY_ID=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 -d) SECRET_ACCESS_KEY=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
logging-loki-odf
という名前のオブジェクトストレージシークレットを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.6. Swift ストレージ: リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Loki Operator がインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。 - Swift 上で バケット を作成している。
手順
次のコマンドを実行して、
logging-loki-swift
という名前のオブジェクトストレージシークレットを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、次のコマンドを実行して、プロジェクト固有のデータ、リージョン、またはその両方を指定できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.7. 短期認証情報を使用するクラスターに Loki ログストアのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
一部のストレージプロバイダーでは、インストール時に Cloud Credential Operator ユーティリティー (ccoctl
) を使用して、短期認証情報を実装できます。これらの認証情報は、OpenShift Container Platform クラスターの外部で作成および管理されます。詳細は、コンポーネントの短期認証情報を使用した手動モード を参照してください。
この認証情報ストラテジーを使用するクラスターでは、Loki Operator の新規インストール中に短期認証情報の認証を設定する必要があります。この機能を使用するために、既存のクラスターが別のクレデンシャルストラテジーを使用するように設定することはできません。
2.2.7.1. クラウドベースのログストアにアクセスするために Workload Identity Federation で認証する リンクのコピーリンクがクリップボードにコピーされました!
有効期間の短いトークンを使用した Workload Identity Federation を使用して、クラウドベースのログストアに対して認証を行うことができます。Workload Identity Federation を使用すると、長期間有効な認証情報をクラスターに保存する必要がなくなり、認証情報の漏洩のリスクが軽減され、シークレットの管理が簡素化されます。
前提条件
- 管理者権限がある。
手順
認証を有効にするには、次のいずれかのオプションを使用します。
-
OpenShift Container Platform Web コンソールを使用して Loki Operator をインストールした場合、システムは有効期間の短いトークンを使用するクラスターを自動的に検出します。プロンプトが表示され、ロールを作成するように求められます。また、Loki Operator が
CredentialsRequest
オブジェクトを作成するのに必要なデータを提供するように求められます。このオブジェクトにより、シークレットが設定されます。 OpenShift CLI (
oc
) を使用して Loki Operator をインストールした場合は、Subscription
オブジェクトを手動で作成する必要があります。次のサンプルに示すように、ストレージプロバイダーに適したテンプレートを使用します。この認証ストラテジーは、サンプル内に示されているストレージプロバイダーのみをサポートします。Microsoft Azure サンプルサブスクリプション
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Amazon Web Services (AWS) サンプルサブスクリプション
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Google Cloud Platform (GCP) サンプルサブスクリプション
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
OpenShift Container Platform Web コンソールを使用して Loki Operator をインストールした場合、システムは有効期間の短いトークンを使用するクラスターを自動的に検出します。プロンプトが表示され、ロールを作成するように求められます。また、Loki Operator が
2.2.7.2. Web コンソールを使用して LokiStack カスタムリソースを作成する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、LokiStack
カスタムリソース (CR) を作成できます。
前提条件
- 管理者権限がある。
- OpenShift Container Platform Web コンソールにアクセスできる。
- Loki Operator がインストールされている。
手順
-
Operators
Installed Operators ページに移動します。All instances タブをクリックします。 - Create new ドロップダウンリストから、LokiStack を選択します。
YAML view を選択し、次のテンプレートを使用して
LokiStack
CR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
logging-loki
という名前を使用します。- 2
- デプロイメントサイズを指定します。ロギング 5.8 以降のバージョンでは、Loki の実稼働インスタンスでサポートされているサイズオプションは
1x.extra-small
、1x.small
、または1x.medium
です。 - 3
- ログストレージに使用するシークレットを指定します。
- 4
- 対応するストレージタイプを指定します。
- 5
- 任意のフィールド、Logging 5.9 以降。サポートされているユーザー設定値は、次のとおりです。
static
は、シークレットに保存された認証情報を使用する、サポートされているすべてのオブジェクトストレージタイプで使用できるデフォルトの認証モードです。token
は、認証情報ソースから取得される有効期間が短いトークンです。このモードでは、オブジェクトストレージに必要な認証情報が静的設定に格納されません。代わりに、実行時にサービスを使用して認証情報が生成されるため、有効期間が短い認証情報の使用と、よりきめ細かい制御が可能になります。この認証モードは、すべてのオブジェクトストレージタイプでサポートされているわけではありません。Loki がマネージド STS モードで実行されていて、STS/WIF クラスターで CCO を使用している場合、token-cco
がデフォルト値です。 - 6
- 一時ストレージのストレージクラスの名前を入力します。最適なパフォーマンスを得るには、ブロックストレージを割り当てるストレージクラスを指定します。クラスターで使用可能なストレージクラスは、
oc get storageclasses
コマンドを使用してリスト表示できます。
2.2.7.3. CLI を使用して Loki オブジェクトストレージのシークレットを作成する リンクのコピーリンクがクリップボードにコピーされました!
Loki オブジェクトストレージを設定するには、シークレットを作成する必要があります。これは、OpenShift CLI (oc
) を使用して実行できます。
前提条件
- 管理者権限がある。
- Loki Operator がインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。
手順
次のコマンドを使用して、証明書とキーファイルが含まれるディレクトリーにシークレットを作成できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
最良の結果を得るには、generic または opaque シークレットを使用してください。
検証
次のコマンドを実行して、シークレットが作成されたことを確認します。
oc get secrets
$ oc get secrets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.8. Loki ログへのアクセスの詳細設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Logging Operator は、デフォルトではすべてのユーザーにログへのアクセスを付与しません。Operator のアップグレード後に以前の設定を適用していない限り、管理者はユーザーのアクセスを設定する必要があります。設定とニーズに応じて、以下を使用してログへのアクセスを細かく設定できます。
- クラスター全体のポリシー
- スコープ指定が namespace のポリシー
- カスタム管理者グループの作成
管理者は、デプロイメントに適したロールバインディングとクラスターのロールバインディングを作成する必要があります。Red Hat OpenShift Logging Operator には、次のクラスターロールがあります。
-
cluster-logging-application-view
は、アプリケーションログの読み取り権限を付与します。 -
cluster-logging-infrastructure-view
は、インフラストラクチャーログの読み取り権限を付与します。 -
cluster-logging-audit-view
は、監査ログの読み取り権限を付与します。
以前のバージョンからアップグレードした場合、追加のクラスターロール logging-application-logs-reader
と関連するクラスターロールバインディング logging-all-authenticated-application-logs-reader
により下位互換性が提供され、認証されたユーザーに namespace の読み取り権限が許可されます。
namespace ごとのアクセス権を持つユーザーは、アプリケーションログをクエリーする際に namespace を提供する必要があります。
2.2.8.1. クラスター全体のアクセス リンクのコピーリンクがクリップボードにコピーされました!
クラスターロールバインディングリソースはクラスターロールを参照し、クラスター全体に権限を設定します。
ClusterRoleBinding の例
2.2.8.2. namespace アクセス リンクのコピーリンクがクリップボードにコピーされました!
RoleBinding
リソースを ClusterRole
オブジェクトと使用して、ユーザーまたはグループがログにアクセスできる namespace を定義できます。
RoleBinding の例
- 1
- この
RoleBinding
が適用される namespace を指定します。
2.2.8.3. カスタム管理者グループのアクセス権 リンクのコピーリンクがクリップボードにコピーされました!
多数のユーザーが広範な権限を必要とする大規模デプロイメントの場合は、adminGroup
フィールドを使用してカスタムグループを作成できます。LokiStack
CR の adminGroups
フィールドで指定されたグループのメンバーであるユーザーは、管理者とみなされます。
cluster-logging-application-view
ロールも割り当てられている管理者ユーザーは、すべての namespace のすべてのアプリケーションログにアクセスできます。
LokiStack CR の例
2.2.9. cluster-admin ユーザーロールの新規グループの作成 リンクのコピーリンクがクリップボードにコピーされました!
cluster-admin
ユーザーとして複数の namespace のアプリケーションログをクエリーすると、クラスター内のすべての namespace の文字数の合計が 5120 を超え、Parse error: input size too long (XXXX > 5120)
エラーが発生します。LokiStack のログへのアクセスをより適切に制御するには、cluster-admin
ユーザーを cluster-admin
グループのメンバーにします。cluster-admin
グループが存在しない場合は、作成して必要なユーザーを追加します。
次の手順を使用して、cluster-admin
権限のあるユーザー用に、新しいグループを作成します。
手順
以下のコマンドを入力して新規グループを作成します。
oc adm groups new cluster-admin
$ oc adm groups new cluster-admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、必要なユーザーを
cluster-admin
グループに追加します。oc adm groups add-users cluster-admin <username>
$ oc adm groups add-users cluster-admin <username>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して
cluster-admin
ユーザーロールをグループに追加します。oc adm policy add-cluster-role-to-group cluster-admin cluster-admin
$ oc adm policy add-cluster-role-to-group cluster-admin cluster-admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow