3.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 |
3.2.1. AWS ストレージ リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Loki Operator がインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 - AWS 上に バケット を作成している。
- AWS IAM ポリシーと IAM ユーザー を作成している。
手順
次のコマンドを実行して、
logging-loki-awsという名前のオブジェクトストレージシークレットを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.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です。
3.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です。
3.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>"
3.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
3.2.4. Minio ストレージ リンクのコピーリンクがクリップボードにコピーされました!
前提条件
手順
次のコマンドを実行して、
logging-loki-minioという名前のオブジェクトストレージシークレットを作成します。oc create secret generic logging-loki-minio \ --from-literal=bucketnames="<bucket_name>" \ --from-literal=endpoint="<minio_bucket_endpoint>" \ --from-literal=access_key_id="<minio_access_key_id>" \ --from-literal=access_key_secret="<minio_access_key_secret>"
$ oc create secret generic logging-loki-minio \ --from-literal=bucketnames="<bucket_name>" \ --from-literal=endpoint="<minio_bucket_endpoint>" \ --from-literal=access_key_id="<minio_access_key_id>" \ --from-literal=access_key_secret="<minio_access_key_secret>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.5. OpenShift Data Foundation ストレージ リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Loki Operator がインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 - OpenShift Data Foundation がデプロイされている。
- OpenShift Data Foundation クラスターが オブジェクトストレージ用 に設定されている。
手順
openshift-loggingnamespace に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という名前のオブジェクトストレージシークレットを作成します。oc create -n openshift-logging secret generic logging-loki-odf \ --from-literal=access_key_id="<access_key_id>" \ --from-literal=access_key_secret="<secret_access_key>" \ --from-literal=bucketnames="<bucket_name>" \ --from-literal=endpoint="https://<bucket_host>:<bucket_port>"
$ oc create -n openshift-logging secret generic logging-loki-odf \ --from-literal=access_key_id="<access_key_id>" \ --from-literal=access_key_secret="<secret_access_key>" \ --from-literal=bucketnames="<bucket_name>" \ --from-literal=endpoint="https://<bucket_host>:<bucket_port>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.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
3.2.7. 短期認証情報を使用するクラスターに Loki ログストアのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
一部のストレージプロバイダーでは、インストール時に Cloud Credential Operator ユーティリティー (ccoctl) を使用して、短期認証情報を実装できます。これらの認証情報は、OpenShift Container Platform クラスターの外部で作成および管理されます。詳細は、コンポーネントの短期認証情報を使用した手動モード を参照してください。
短期間の認証情報認証は、このクレデンシャルストラテジーを使用するクラスターに Loki Operator を新規インストールする際に設定する必要があります。この機能を使用するために、既存のクラスターが別のクレデンシャルストラテジーを使用するように設定することはできません。
3.2.7.1. クラウドベースのログストアにアクセスするために Workload Identity Federation で認証する リンクのコピーリンクがクリップボードにコピーされました!
有効期間の短いトークンを使用した Workload Identity Federation を使用して、クラウドベースのログストアに対して認証を行うことができます。ワークロード ID フェデレーションを使用すると、クラスターに有効期間の長い認証情報を保存する必要はなく、認証情報のリークのリスクが軽減され、シークレット管理が簡素化されます。
前提条件
- 管理者権限がある。
手順
認証を有効にするには、次のいずれかのオプションを使用します。
-
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
-
OpenShift Container Platform Web コンソールを使用して Loki Operator をインストールした場合、システムは有効期間の短いトークンを使用するクラスターを自動的に検出します。プロンプトが表示され、ロールを作成するように求められます。また、Loki Operator が
3.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 を選択し、次のテンプレートを使用して
LokiStackCR を作成します。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コマンドを使用してリスト表示できます。
3.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 secretsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.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 を提供する必要があります。
3.2.8.1. クラスター全体のアクセス リンクのコピーリンクがクリップボードにコピーされました!
クラスターのロールバインディングリソースはクラスターロールを参照し、クラスター全体でパーミッションを設定します。
ClusterRoleBinding の例
3.2.8.2. namespace アクセス リンクのコピーリンクがクリップボードにコピーされました!
RoleBinding リソースを ClusterRole オブジェクトと使用して、ユーザーまたはグループがログにアクセスできる namespace を定義できます。
RoleBinding の例
- 1
- この
RoleBindingが適用される namespace を指定します。
3.2.8.3. カスタム管理者グループのアクセス権 リンクのコピーリンクがクリップボードにコピーされました!
多数のユーザーが広範な権限を必要とする大規模デプロイメントの場合は、adminGroup フィールドを使用してカスタムグループを作成できます。LokiStack CR の adminGroups フィールドで指定されたグループのメンバーであるユーザーは、管理者とみなされます。
cluster-logging-application-view ロールも割り当てられている管理者ユーザーは、すべての namespace のすべてのアプリケーションログにアクセスできます。
LokiStack CR の例
3.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-adminCopy 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-adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow