28.3. Network Observability Operator のインストール
Loki のインストールは、Network Observability Operator を使用するための前提条件です。Loki Operator を使用して Loki をインストールすることを推奨します。したがって、これらの手順は、Network Observability Operator をインストールする前に以下に記載されています。
Loki Operator は、マルチテナンシーと認証を実装するゲートウェイを Loki と統合して、データフローストレージを実現します。LokiStack リソースは、スケーラブルで高可用性のマルチテナントログ集約システムである Loki と、OpenShift Container Platform 認証を備えた Web プロキシーを管理します。LokiStack プロキシーは、OpenShift Container Platform 認証を使用してマルチテナンシーを適用し、Loki ログストアでのデータの保存とインデックス作成を容易にします。
Loki Operator は LokiStack でのロギング にも使用できます。Network Observability Operator には、Logging とは別の専用の LokiStack が必要です。
28.3.1. Loki Operator のインストール
Loki Operator バージョン 5.7 をインストールすることを推奨します。このバージョンは、openshift-network
テナント設定モードを使用して LokiStack インスタンスを作成する機能を提供します。また、Network Observability の完全に自動化されたクラスター内認証と承認のサポートも提供します。
前提条件
- 対応ログストア (AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation)
- OpenShift Container Platform 4.10 以上。
- Linux カーネル 4.18 以降。
Loki をインストールするにはいくつかの方法があります。1 つの方法は、OpenShift Container Platform Web コンソール Operator Hub を使用して Loki Operator をインストールすることです。
手順
Loki Operator
Operator をインストールします。-
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 でリストされていることを確認します。
-
OpenShift Container Platform Web コンソールで、Operators
Secret
YAML ファイルを作成します。このシークレットは、Web コンソールまたは CLI で作成できます。-
Web コンソールを使用して、Project
All Projects ドロップダウンに移動し、Create Project を選択します。プロジェクトに netobserv
という名前を付けて、Create をクリックします。 -
右上隅にあるインポートアイコン + に移動します。YAML ファイルをエディターにドロップします。
access_key_id
とaccess_key_secret
を使用して認証情報を指定するnetobserv
namespace で、この YAML ファイルを作成することが重要です。 シークレットを作成すると、Web コンソールの Workloads
Secrets の下に一覧表示されます。 シークレット YAML ファイルの例を次に示します。
-
Web コンソールを使用して、Project
apiVersion: v1 kind: Secret metadata: name: loki-s3 namespace: netobserv 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
Loki をアンインストールするには、Loki のインストールに使用した方法に対応するアンインストールプロセスを参照してください。ClusterRole
と ClusterRoleBindings
、オブジェクトストアに格納されたデータ、および削除する必要のある永続ボリュームが残っている可能性があります。
28.3.1.1. LokiStack カスタムリソースを作成する
FlowCollector 仕様によって参照される同じ namespace である spec.namespace
に LokiStack をデプロイすることを推奨します。Web コンソールまたは CLI を使用して、namespaceまたは新しいプロジェクトを作成できます。
手順
-
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 spec: size: 1x.small storage: schemas: - version: v12 effectiveDate: '2022-06-01' secret: name: loki-s3 type: s3 storageClassName: gp3 1 tenants: mode: openshift-network
- 1
ReadWriteOnce
アクセスモードのクラスターで使用可能なストレージクラス名を使用します。oc get storageclasses
を使用して、クラスターで利用できるものを確認できます。
重要クラスターログに使用されるものと同じ LokiStack を再利用しないでください。
- Create をクリックします。
28.3.1.1.1. デプロイメントのサイズ
Loki のサイズは N<x>.<size>
の形式に従います。<N>
はインスタンスの数を、<size>
はパフォーマンスの機能を指定します。
1x.extra-small はデモ用であり、サポートされていません。
1x.extra-small | 1x.small | 1x.medium | |
---|---|---|---|
データ転送 | デモ使用のみ。 | 500GB/day | 2 TB/日 |
1 秒あたりのクエリー数 (QPS) | デモ使用のみ。 | 200 ミリ秒で 25 - 50 QPS | 200 ミリ秒で 25 - 75 QPS |
レプリケーション係数 | なし | 2 | 3 |
合計 CPU 要求 | 仮想 CPU 5 個 | 仮想 CPU 36 個 | 仮想 CPU 54 個 |
合計メモリー要求 | 7.5Gi | 63Gi | 139Gi |
ディスク要求の合計 | 150Gi | 300Gi | 450Gi |
28.3.1.2. 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 リファレンス を参照してください。
28.3.2. 認可とマルチテナンシーの設定
ClusterRole
と ClusterRoleBinding
を定義します。netobserv-reader
ClusterRole
はマルチテナンシーを有効にし、Loki に保存されているフローへのユーザーアクセスまたはグループアクセスを個別に許可します。これらのロールを定義する YAML ファイルを作成できます。
手順
- Web コンソールを使用して、インポートアイコン + をクリックします。
- YAML ファイルをエディターにドロップし、Create をクリックします。
ClusterRole リーダー yaml の例
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: netobserv-reader 1
rules:
- apiGroups:
- 'loki.grafana.com'
resources:
- network
resourceNames:
- logs
verbs:
- 'get'
- 1
- このロールはマルチテナンシーに使用できます。
ClusterRole ライター yaml の例
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: netobserv-writer rules: - apiGroups: - 'loki.grafana.com' resources: - network resourceNames: - logs verbs: - 'create'
ClusterRoleBinding yaml の例
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: netobserv-writer-flp
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: netobserv-writer
subjects:
- kind: ServiceAccount
name: flowlogs-pipeline 1
namespace: netobserv
- kind: ServiceAccount
name: flowlogs-pipeline-transformer
namespace: netobserv
- 1
flowlogs-pipeline
は Loki に書き込みます。Kafka を使用している場合、この値はflowlogs-pipeline-transformer
です。
28.3.3. ネットワーク可観測性でのマルチテナンシーの有効化
Network Observability Operator のマルチテナンシーにより、Loki に保存されているフローへのユーザーアクセスまたはグループアクセスが個別に許可および制限されます。プロジェクト管理者のアクセスが有効になっています。一部の namespace へのアクセスが制限されているプロジェクト管理者は、それらの namespace のフローのみにアクセスできます。
前提条件
- Loki Operator バージョン 5.7 がインストールされている。
-
FlowCollector
spec.loki.authToken
がFORWARD
に設定されている。 - プロジェクト管理者としてログインしている。
手順
次のコマンドを実行して、
user1
に読み取り権限を付与します。$ oc adm policy add-cluster-role-to-user netobserv-reader user1
現在、データは許可されたユーザー namespace のみに制限されています。たとえば、単一の namespace にアクセスできるユーザーは、この namespace 内部のフローすべてと、この namespace から出入りするフローを表示できます。プロジェクト管理者は、OpenShift Container Platform コンソールの Administrator パースペクティブにアクセスして、Network Flows Traffic ページにアクセスできます。
28.3.4. Kafka のインストール (オプション)
Kafka Operator は、大規模な環境でサポートされています。Loki Operator および Network Observability Operator がインストールされたのと同じように、Kafka Operator を Operator Hub から Red Hat AMQ Streams としてインストールできます。
Kafka をアンインストールするには、インストールに使用した方法に対応するアンインストールプロセスを参照してください。
28.3.5. Network Observability Operator のインストール
OpenShift Container Platform Web コンソール Operator Hub を使用して Network Observability Operator をインストールできます。Operator をインストールすると、FlowCollector
カスタムリソース定義 (CRD) が提供されます。FlowCollector
を作成するときに、Web コンソールで仕様を設定できます。
前提条件
- Loki をインストールしている。Loki Operator バージョン 5.7 を使用して Loki をインストールすることを推奨します。
-
サポートされているアーキテクチャーである
amd64
、ppc64le
、arm64
、s390x
のいずれか。 - Red Hat Enterprise Linux (RHEL) 9 でサポートされる任意の CPU。
このドキュメントでは、LokiStack
インスタンス名が loki
であることを前提としています。別の名前を使用するには、追加の設定が必要です。
手順
-
OpenShift Container Platform Web コンソールで、Operators
OperatorHub をクリックします。 - OperatorHub で使用可能な Operator のリストから Network Observability Operator を選択し、Install をクリックします。
-
Enable Operator recommended cluster monitoring on this Namespace
チェックボックスを選択します。 Operators
Installed Operators に移動します。Network Observability 用に提供された API で、Flow Collector リンクを選択します。 Flow Collector タブに移動し、Create FlowCollector をクリックします。フォームビューで次の選択を行います。
-
spec.agent.ebpf.Sampling: フローのサンプリングサイズを指定します。サンプリングサイズが小さいほど、リソース使用率への影響が大きくなります。詳細は、spec.agent.ebpf の下にある
FlowCollector
API リファレンスを参照してください。 - spec.deploymentModel: Kafka を使用している場合は、Kafka が選択されていることを確認します。
spec.exporters: Kafka を使用している場合は、オプションでネットワークフローを Kafka に送信して、Splunk、Elasticsearch、Fluentd などの Kafka 入力をサポートするプロセッサーまたはストレージでネットワークフローを利用できるようにすることができます。これを行うには、次の仕様を設定します。
-
type を
KAFKA
に設定します。 -
address を
kafka-cluster-kafka-bootstrap.netobserv
として設定します。 -
topic を
netobserv-flows-export
として設定します。Operator は、すべてのフローを設定された Kafka トピックにエクスポートします。 次の tls 仕様を設定します。
certFile:
service-ca.crt
、name:kafka-gateway-ca-bundle
、および type:configmap
.YAML を直接編集して、後でこのオプションを設定することもできます。詳細は、強化されたネットワークフローデータのエクスポート を参照してください。
-
type を
-
loki.url: 認証が別途指定されるため、この URL を
https://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network
に更新する必要があります。URL の最初の部分 "loki" は、LokiStack の名前と一致する必要があります。 -
loki.statusUrl: これを
https://loki-query-frontend-http.netobserv.svc:3100/
に設定します。URL の最初の部分 "loki" は、LokiStack の名前と一致する必要があります。 -
loki.authToken:
FORWARD
値を選択します。 - tls.enable: ボックスがオンになって有効になっていることを確認します。
statusTls: デフォルトでは、
enable
値は false です。証明書参照名の最初の部分:
loki-gateway-ca-bundle
、loki-ca-bundle
、およびloki-query-frontend-http
、loki
は、LokiStack
の名前と一致する必要があります。
-
spec.agent.ebpf.Sampling: フローのサンプリングサイズを指定します。サンプリングサイズが小さいほど、リソース使用率への影響が大きくなります。詳細は、spec.agent.ebpf の下にある
- Create をクリックします。
検証
これが成功したことを確認するには、Observe に移動すると、オプションに Network Traffic が表示されます。
OpenShift Container Platform クラスター内に アプリケーショントラフィック がない場合は、デフォルトのフィルターが "No results" と表示され、視覚的なフローが発生しないことがあります。フィルター選択の横にある Clear all filters を選択して、フローを表示します。
Loki Operator を使用して Loki をインストールした場合は、Loki へのコンソールアクセスを中断する可能性があるため、querierUrl
を使用しないことを推奨します。別のタイプの Loki インストールを使用して Loki をインストールした場合、これは当てはまりません。
関連情報
- フローコレクターの仕様の詳細は、Flow Collector API リファレンス および Flow Collector サンプルリソース を参照してください。
- サードパーティーの処理を利用するためにフローデータを Kafka にエクスポートする方法の詳細は、強化されたネットワークフローデータのエクスポート を参照してください。
28.3.6. Network Observability Operator のアンインストール
Network Observability Operator は、Operators
手順
FlowCollector
カスタムリソースを削除します。- Provided APIs 列の Network Observability Operator の横にある Flow Collector をクリックします。
- cluster のオプションメニュー をクリックし、Delete FlowCollector を選択します。
Network Observability Operator をアンインストールします。
-
Operators
Installed Operators エリアに戻ります。 - Network Observability Operator の隣にあるオプションメニュー をクリックし、Uninstall Operator を選択します。
-
Home
Projects を選択し、 openshift-netobserv-operator
を選択します。 - Actions に移動し、Delete Project を選択します。
-
Operators
FlowCollector
カスタムリソース定義 (CRD) を削除します。-
Administration
CustomResourceDefinitions に移動します。 - FlowCollector を探し、オプションメニュー をクリックします。
Delete CustomResourceDefinition を選択します。
重要Loki Operator と Kafka は、インストールされていた場合、残っているため、個別に削除する必要があります。さらに、オブジェクトストアに保存された残りのデータ、および削除する必要がある永続ボリュームがある場合があります。
-
Administration