3.3. CLI を使用した OpenShift Logging のインストール
OpenShift Container Platform CLI を使って OpenShift Elasticsearch および Red Hat OpenShift Logging Operator をインストールすることができます。
前提条件
Elasticsearch の必要な永続ストレージがあることを確認します。各 Elasticsearch ノードには独自のストレージボリュームが必要であることに注意してください。
注記永続ストレージにローカルボリュームを使用する場合は、
LocalVolume
オブジェクトのvolumeMode: block
で記述される raw ブロックボリュームを使用しないでください。Elasticsearch は raw ブロックボリュームを使用できません。Elasticsearch はメモリー集約型アプリケーションです。デフォルトで、OpenShift Container Platform はメモリー要求および 16 GB の制限を持つ 3 つの Elasticsearch ノードをインストールします。OpenShift Container Platform ノードの最初の 3 つのセットには、Elasticsearch をクラスター内で実行するのに十分なメモリーがない可能性があります。Elasticsearch に関連するメモリーの問題が発生した場合、既存ノードのメモリーを増やすのではなく、Elasticsearch ノードをクラスターにさらに追加します。
手順
CLI を使用して OpenShift Elasticsearch Operator および Red Hat OpenShift Logging Operator をインストールするには、以下を実行します。
OpenShift Elasticsearch Operator の namespace を作成します。
OpenShift Elasticsearch Operator の namespace オブジェクト YAML ファイル (
eo-namespace.yaml
など) を作成します。apiVersion: v1 kind: Namespace metadata: name: openshift-operators-redhat 1 annotations: openshift.io/node-selector: "" labels: openshift.io/cluster-monitoring: "true" 2
- 1
openshift-operators-redhat
namespace を指定する必要があります。メトリクスとの競合が発生する可能性を防ぐには、Prometheus のクラスターモニターリングスタックを、openshift-operators
namespace からではなく、openshift-operators-redhat
namespace からメトリクスを収集するように設定する必要があります。openshift-operators
namespace には信頼されていないコミュニティー Operator が含まれる可能性があり、OpenShift Container Platform メトリクスと同じ名前でメトリクスを公開する可能性があるため、これによって競合が生じる可能性があります。- 2
- 文字列。クラスターモニターリングが
openshift-operators-redhat
namespace を収集できるように、このラベルを上記のように指定する必要があります。
namespace を作成します。
$ oc create -f <file-name>.yaml
以下に例を示します。
$ oc create -f eo-namespace.yaml
Red Hat OpenShift Logging Operator の namespace を作成します。
Red Hat OpenShift Logging Operator の namespace オブジェクト YAML ファイル (
olo-namespace.yaml
など) を作成します。apiVersion: v1 kind: Namespace metadata: name: openshift-logging annotations: openshift.io/node-selector: "" labels: openshift.io/cluster-monitoring: "true"
namespace を作成します。
$ oc create -f <file-name>.yaml
以下に例を示します。
$ oc create -f olo-namespace.yaml
以下のオブジェクトを作成して OpenShift Elasticsearch Operator をインストールします。
OpenShift Elasticsearch Operator の Operator グループオブジェクトの YAML ファイル (
eo-og.yaml
など) を作成します。apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-operators-redhat namespace: openshift-operators-redhat 1 spec: {}
- 1
openshift-operators-redhat
namespace を指定する必要があります。
Operator グループオブジェクトを作成します。
$ oc create -f <file-name>.yaml
以下に例を示します。
$ oc create -f eo-og.yaml
Subscription オブジェクト YAML ファイル (
eo-sub.yaml
など) を作成し、namespace を OpenShift Elasticsearch Operator にサブスクライブします。Subscription の例
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: "elasticsearch-operator" namespace: "openshift-operators-redhat" 1 spec: channel: "stable-5.1" 2 installPlanApproval: "Automatic" 3 source: "redhat-operators" 4 sourceNamespace: "openshift-marketplace" name: "elasticsearch-operator"
- 1
openshift-operators-redhat
namespace を指定する必要があります。- 2
5.0
、stable
またはstable-5.<x>
をチャネルとして指定します。以下の注意点を参照してください。- 3
Automatic
により、Operator Lifecycle Manager (OLM) は新規バージョンが利用可能になると Operator を自動的に更新できます。Manual
には、Operator の更新を承認するための適切な認証情報を持つユーザーが必要です。- 4
redhat-operators
を指定します。OpenShift Container Platform クラスターが、非接続クラスターとも呼ばれるネットワークが制限された環境でインストールされている場合、Operator Lifecycle Manager (OLM) の設定時に作成される CatalogSource オブジェクトの名前を指定します。
注記stable
を指定すると、最新の安定したリリースの現行バージョンがインストールされます。installPlanApproval: "Automatic"
でstable
使用すると、Operatar が自動的に最新の安定したメジャーおよびマイナーリリースにアップグレードします。stable-5.<x>
を指定すると、特定のメジャーリリースの現在のマイナーバージョンがインストールされます。installPlanApproval: "Automatic"
でstable-5.<x>
を使用すると、x
で指定したメジャーリリース内で最新の安定マイナーリリースに Operator が自動的にアップグレードされます。Subscription オブジェクトを作成します。
$ oc create -f <file-name>.yaml
以下に例を示します。
$ oc create -f eo-sub.yaml
OpenShift Elasticsearch Operator は
openshift-operators-redhat
namespace にインストールされ、クラスター内の各プロジェクトにコピーされます。Operator のインストールを確認します。
$ oc get csv --all-namespaces
出力例
NAMESPACE NAME DISPLAY VERSION REPLACES PHASE default elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded kube-node-lease elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded kube-public elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded kube-system elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded openshift-apiserver-operator elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded openshift-apiserver elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded openshift-authentication-operator elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded openshift-authentication elasticsearch-operator.5.1.0-202007012112.p0 OpenShift Elasticsearch Operator 5.1.0-202007012112.p0 Succeeded ...
それぞれの namespace には OpenShift Elasticsearch Operator がなければなりません。バージョン番号が表示されるものと異なる場合があります。
以下のオブジェクトを作成して Red Hat OpenShift Logging Operator をインストールします。
Red Hat OpenShift Logging Operator の Operator グループオブジェクトの YAML ファイル (
olo-og.yaml
など) を作成します。apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: cluster-logging namespace: openshift-logging 1 spec: targetNamespaces: - openshift-logging 2
OperatorGroup オブジェクトを作成します。
$ oc create -f <file-name>.yaml
以下に例を示します。
$ oc create -f olo-og.yaml
Subscription オブジェクト YAML ファイル (
olo-sub.yaml
など) を作成し、namespace を Red Hat OpenShift Logging Operator にサブスクライブします。apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: cluster-logging namespace: openshift-logging 1 spec: channel: "stable" 2 name: cluster-logging source: redhat-operators 3 sourceNamespace: openshift-marketplace
$ oc create -f <file-name>.yaml
以下に例を示します。
$ oc create -f olo-sub.yaml
Red Hat OpenShift Logging Operator は
openshift-logging
namespace にインストールされます。Operator のインストールを確認します。
openshift-logging
namespace には Red Hat OpenShift Logging Operator がなければなりません。バージョン番号が表示されるものと異なる場合があります。$ oc get csv -n openshift-logging
出力例
NAMESPACE NAME DISPLAY VERSION REPLACES PHASE ... openshift-logging clusterlogging.5.1.0-202007012112.p0 OpenShift Logging 5.1.0-202007012112.p0 Succeeded ...
OpenShift Logging インスタンスを作成します。
Red Hat OpenShift Logging Operator のインスタンスオブジェクト YAML ファイル (
olo-instance.yaml
など) を作成します。注記このデフォルトの OpenShift Logging 設定は各種の環境をサポートすることが予想されます。OpenShift Logging クラスターに加えることのできる変更についての詳細は、OpenShift Logging コンポーネントのチューニングおよび設定についてのトピックを確認してください。
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" 1 namespace: "openshift-logging" spec: managementState: "Managed" 2 logStore: type: "elasticsearch" 3 retentionPolicy: 4 application: maxAge: 1d infra: maxAge: 7d audit: maxAge: 7d elasticsearch: nodeCount: 3 5 storage: storageClassName: "<storage-class-name>" 6 size: 200G resources: 7 limits: memory: "16Gi" requests: memory: "16Gi" proxy: 8 resources: limits: memory: 256Mi requests: memory: 256Mi redundancyPolicy: "SingleRedundancy" visualization: type: "kibana" 9 kibana: replicas: 1 collection: logs: type: "fluentd" 10 fluentd: {}
- 1
- 名前は
instance
である必要があります。 - 2
- OpenShift Logging の管理状態。OpenShift Logging のデフォルト値を変更する場合は、これを
Unmanaged
(管理外) に設定する必要がある場合があります。ただし、管理外のデプロイメントは OpenShift Logging が管理対象の状態に戻されるまで更新を受信しません。デプロイメントを管理対象の状態に戻すと、加えた変更が元に戻される可能性があります。 - 3
- Elasticsearch の設定に必要な設定。カスタムリソース (CR) を使用してシャードのレプリケーションポリシーおよび永続ストレージを設定できます。
- 4
- Elasticsearch が各ログソースを保持する期間を指定します。整数および時間の指定 (weeks(w)、hour(h/H)、minutes(m)、および seconds(s)) を入力します。たとえば、7 日の場合は
7d
となります。maxAge
よりも古いログは削除されます。各ログソースの保持ポリシーを指定する必要があります。そうしない場合、Elasticsearch インデックスはそのソースに対して作成されません。 - 5
- Elasticsearch ノードの数を指定します。この一覧に続く注記を確認してください。
- 6
- Elasticsearch ストレージの既存のストレージクラスの名前を入力します。最適なパフォーマンスを得るには、ブロックストレージを割り当てるストレージクラスを指定します。ストレージクラスを指定しない場合、OpenShift Container Platform は一時ストレージのみの OpenShift Logging をデプロイします。
- 7
- 必要に応じて CPU およびメモリー要求を指定します。これらの値を空のままにすると、OpenShift Elasticsearch Operator はデフォルト値を設定します。これらのデフォルト値はほとんどのデプロイメントでは問題なく使用できるます。デフォルト値は、メモリー要求の場合は
16Gi
であり、CPU 要求の場合は1
です。 - 8
- 必要に応じて Elasticsearch プロキシーの CPU およびメモリーの制限および要求を指定します。これらの値を空のままにすると、OpenShift Elasticsearch Operator はデフォルト値を設定します。これらのデフォルト値はほとんどのデプロイメントでは問題なく使用できるはずです。デフォルト値は、メモリー要求の場合は
256Mi
、CPU 要求の場合は100m
です。 - 9
- Kibana の設定に必要な設定。CR を使用して、冗長性を確保するために Kibana をスケーリングし、Kibana Pod の CPU およびメモリーを設定できます。詳細は、ログビジュアライザーの設定 について参照してください。
- 10
- Fluentd の設定に必要な設定。CR を使用して Fluentd の CPU およびメモリー制限を設定できます。詳細はFluentd の設定を参照してください。
注記Elasticsearch コントロールプレーンノードの最大数は 3 です。
3
を超えるnodeCount
を指定する場合、OpenShift Container Platform は、マスター、クライアントおよびデータロールを使用して、3 つのマスターとしての適格性のあるノードである Elasticsearch ノードを作成します。追加の Elasticsearch ノードは、クライアントおよびデータロールを使用してデータのみのノードとして作成されます。コントロールプレーンノードは、インデックスの作成および削除、シャードの割り当て、およびノードの追跡などのクラスター全体でのアクションを実行します。データノードはシャードを保持し、CRUD、検索、および集計などのデータ関連の操作を実行します。データ関連の操作は、I/O、メモリーおよび CPU 集約型の操作です。これらのリソースを監視し、現行ノードがオーバーロードする場合にデータノード追加することが重要です。たとえば、
nodeCount=4
の場合に、以下のノードが作成されます。$ oc get deployment
出力例
cluster-logging-operator 1/1 1 1 18h elasticsearch-cd-x6kdekli-1 1/1 1 0 6m54s elasticsearch-cdm-x6kdekli-1 1/1 1 1 18h elasticsearch-cdm-x6kdekli-2 1/1 1 0 6m49s elasticsearch-cdm-x6kdekli-3 1/1 1 0 6m44s
インデックステンプレートのプライマリーシャードの数は Elasticsearch データノードの数と等しくなります。
インスタンスを作成します。
$ oc create -f <file-name>.yaml
以下は例になります。
$ oc create -f olo-instance.yaml
これにより、OpenShift Logging コンポーネント、
Elasticsearch
カスタムリソースおよびコンポーネント、および Kibana インターフェイスが作成されます。
openshift-logging プロジェクトに Pod を一覧表示して、インストールを検証します。
以下の一覧のような OpenShift Logging、Elasticsearch、Fluentd、および Kibana のいくつかの Pod が表示されるはずです。
$ oc get pods -n openshift-logging
出力例
NAME READY STATUS RESTARTS AGE cluster-logging-operator-66f77ffccb-ppzbg 1/1 Running 0 7m elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp 2/2 Running 0 2m40s elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc 2/2 Running 0 2m36s elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2 2/2 Running 0 2m4s fluentd-587vb 1/1 Running 0 2m26s fluentd-7mpb9 1/1 Running 0 2m30s fluentd-flm6j 1/1 Running 0 2m33s fluentd-gn4rn 1/1 Running 0 2m26s fluentd-nlgb6 1/1 Running 0 2m30s fluentd-snpkt 1/1 Running 0 2m28s kibana-d6d5668c5-rppqm 2/2 Running 0 2m39s