3.2. Loki Operator のインストール
Network Observability でサポートされている Loki Operator のバージョンは、Loki Operator バージョン 5.7 以降 です。これらのバージョンでは、openshift-network
テナント設定モードを使用して LokiStack
インスタンスを作成する機能が提供されており、Network Observability に対する完全に自動化されたクラスター内認証および認可がサポートされています。Loki をインストールするにはいくつかの方法があります。そのうちの 1 つが、OpenShift Container Platform Web コンソールの Operator Hub を使用する方法です。
前提条件
- 対応ログストア (AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation)
- OpenShift Container Platform 4.10 以上
- Linux カーネル 4.18 以降
手順
-
OpenShift Container Platform Web コンソールで、Operators
OperatorHub をクリックします。 - 使用可能な Operator のリストから Loki Operator を選択し、Install をクリックします。
- Installation Mode で、All namespaces on the cluster を選択します。
検証
- Loki Operator がインストールされていることを確認します。Operators→ Installed Operators ページにアクセスして、Loki Operator を探します。
- Loki Operator がすべてのプロジェクトで Succeeded の Status でリストされていることを確認します。
Loki をアンインストールするには、Loki のインストールに使用した方法に対応するアンインストールプロセスを参照してください。ClusterRole
と ClusterRoleBindings
、オブジェクトストアに格納されたデータ、および削除する必要のある永続ボリュームが残っている可能性があります。
3.2.1. Loki ストレージのシークレットの作成
Loki Operator は、AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation など、いくつかのログストレージオプションをサポートしています。次の例は、AWS S3 ストレージのシークレットを作成する方法を示しています。この例で作成されたシークレット loki-s3
は、「LokiStack リソースの作成」で参照されています。このシークレットは、Web コンソールまたは CLI で作成できます。
-
Web コンソールを使用して、Project
All Projects ドロップダウンに移動し、Create Project を選択します。プロジェクトに netobserv
という名前を付けて、Create をクリックします。 右上隅にあるインポートアイコン + に移動します。YAML ファイルをエディターにペーストします。
以下は、S3 ストレージのシークレット YAML ファイルの例です。
apiVersion: v1 kind: Secret metadata: name: loki-s3 namespace: netobserv 1 stringData: access_key_id: QUtJQUlPU0ZPRE5ON0VYQU1QTEUK access_key_secret: d0phbHJYVXRuRkVNSS9LN01ERU5HL2JQeFJmaUNZRVhBTVBMRUtFWQo= bucketnames: s3-bucket-name endpoint: https://s3.eu-central-1.amazonaws.com region: eu-central-1
- 1
- このドキュメントに記載されているインストール例では、すべてのコンポーネントで同じ namespace である
netobserv
を使用しています。オプションで、異なるコンポーネントで異なる namespace を使用できます。
検証
-
シークレットを作成すると、Web コンソールの Workloads
Secrets の下に一覧表示されます。
3.2.2. LokiStack カスタムリソースの作成
Web コンソールまたは OpenShift CLI (oc
) を使用して namespace または新しいプロジェクトを作成し、LokiStack
カスタムリソース (CR) をデプロイできます。
手順
-
Operators
Installed Operators に移動し、Project ドロップダウンから All projects を表示します。 - Loki Operator を探します。詳細の Provided APIs で、LokiStack を選択します。
- Create LokiStack をクリックします。
Form View または YAML view で次のフィールドが指定されていることを確認します。
apiVersion: loki.grafana.com/v1 kind: LokiStack metadata: name: loki namespace: netobserv 1 spec: size: 1x.small 2 storage: schemas: - version: v12 effectiveDate: '2022-06-01' secret: name: loki-s3 type: s3 storageClassName: gp3 3 tenants: mode: openshift-network
- 1
- このドキュメントに記載されているインストール例では、すべてのコンポーネントで同じ namespace である
netobserv
を使用しています。必要に応じて、別の namespace を使用できます。 - 2
- デプロイメントサイズを指定します。Loki Operator 5.8 以降のバージョンでは、Loki の実稼働インスタンスでサポートされているサイズオプションは
1x.extra-small
、1x.small
、または1x.medium
です。重要デプロイメントサイズの
1x
の数は変更できません。 - 3
ReadWriteOnce
アクセスモードのクラスターで使用可能なストレージクラス名を使用します。oc get storageclasses
を使用して、クラスターで利用できるものを確認できます。重要ログ記録に使用したのと同じ
LokiStack
CR を再利用しないでください。
- Create をクリックします。
3.2.3. 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
以下のコマンドを実行して、必要なユーザーを
cluster-admin
グループに追加します。$ oc adm groups add-users cluster-admin <username>
以下のコマンドを実行して
cluster-admin
ユーザーロールをグループに追加します。$ oc adm policy add-cluster-role-to-group cluster-admin cluster-admin
3.2.4. カスタム管理者グループのアクセス権
必ずしも管理者でなくてもクラスター全体のログを確認する必要がある場合、またはここで使用したいグループがすでに定義されている場合は、adminGroup
フィールドを使用してカスタムグループを指定できます。LokiStack
カスタムリソース (CR) の adminGroups
フィールドで指定されたグループのメンバーであるユーザーには、管理者と同じログの読み取りアクセス権があります。
cluster-logging-application-view
ロールも割り当てられている管理者ユーザーは、すべての namespace のすべてのアプリケーションログにアクセスできます。
管理者ユーザーは、クラスター全体のすべてのネットワークログにアクセスできます。
LokiStack CR の例
apiVersion: loki.grafana.com/v1 kind: LokiStack metadata: name: loki namespace: netobserv spec: tenants: mode: openshift-network 1 openshift: adminGroups: 2 - cluster-admin - custom-admin-group 3
3.2.5. Loki デプロイメントのサイズ
Loki のサイズは 1x.<size>
の形式に従います。この場合の 1x
はインスタンスの数を、<size>
は性能を指定します。
デプロイメントサイズの 1x
の数は変更できません。
1x.demo | 1x.extra-small | 1x.small | 1x.medium | |
---|---|---|---|---|
Data transfer | デモ使用のみ | 100 GB/日 | 500 GB/日 | 2 TB/日 |
1 秒あたりのクエリー数 (QPS) | デモ使用のみ | 200 ミリ秒で 1 - 25 QPS | 200 ミリ秒で 25 - 50 QPS | 200 ミリ秒で 25 - 75 QPS |
レプリケーション係数 | なし | 2 | 2 | 2 |
合計 CPU 要求 | なし | 仮想 CPU 14 個 | 仮想 CPU 34 個 | 仮想 CPU 54 個 |
合計メモリー要求 | なし | 31 Gi | 67 Gi | 139 Gi |
合計ディスク要求 | 40Gi | 430 Gi | 430 Gi | 590 Gi |
3.2.6. LokiStack の取り込み制限とヘルスアラート
LokiStack インスタンスには、設定されたサイズに応じたデフォルト設定が付属しています。取り込みやクエリーの制限など、これらの設定の一部を上書きすることができます。コンソールプラグインまたは flowlogs-pipeline
ログに Loki エラーが表示される場合は、それらを更新することを推奨します。これらの制限に達すると、Web コンソールの自動アラートで通知されます。
設定された制限の例を次に示します。
spec: limits: global: ingestion: ingestionBurstSize: 40 ingestionRate: 20 maxGlobalStreamsPerTenant: 25000 queries: maxChunksPerQuery: 2000000 maxEntriesLimitPerQuery: 10000 maxQuerySeries: 3000
これらの設定の詳細は、LokiStack API リファレンス を参照してください。
3.2.7. Network Observability でのマルチテナンシーの有効化
Network Observability Operator のマルチテナンシーにより、Loki に保存されているフローへのユーザーアクセスまたはグループアクセスが個別に許可および制限されます。プロジェクト管理者のアクセスが有効になっています。一部の namespace へのアクセスが制限されているプロジェクト管理者は、それらの namespace のフローのみにアクセスできます。
前提条件
- Loki Operator バージョン 5.7 以降をインストールしている。
- プロジェクト管理者としてログインしている。
手順
次のコマンドを実行して、
user1
に読み取り権限を付与します。$ oc adm policy add-cluster-role-to-user netobserv-reader user1
現在、データは許可されたユーザー namespace のみに制限されています。たとえば、単一の namespace にアクセスできるユーザーは、この namespace 内部のフローすべてと、この namespace から出入りするフローを表示できます。プロジェクト管理者は、OpenShift Container Platform コンソールの Administrator パースペクティブにアクセスして、Network Flows Traffic ページにアクセスできます。