Oracle Cloud Infrastructureロギング・サービスの使用

Oracle Cloud Infrastructureロギング・サービスは、テナンシ内のすべてのログを一元的に把握できるスケーラブルなフルマネージド型機能です。OpenSearchではなくOracle Cloud Infrastructureロギングにログを送信するようにVerrazzanoを構成できます。一般的な情報は、Oracle Cloud Infrastructureのロギングの概要に関する項を参照してください。

カスタム・ログの設定

Verrazzanoのログは、Oracle Cloud Infrastructureのカスタム・ログに送信できます。Verrazzanoインストール・リソースには2つのOracle Cloud Infrastructureログ識別子(1つはVerrazzanoシステム・ログ用で、もう1つはアプリケーション・ログ用)を指定する必要があります。「カスタム・ログの作成」のステップに従って、2つのカスタム・ログを作成します。カスタム・ログの作成時にエージェント構成を作成しないでください。ログ・レコードが複製されてしまいます。

資格証明の構成

Verrazzanoに付属のFluentdプラグインでは、デフォルトでOracle Cloud Infrastructureのインスタンス・プリンシパル認証が使用されます。オプションで、ユーザーAPI署名キーを使用してVerrazzanoを構成できます。クラスタがOracle Cloud Infrastructureの外部で実行されている場合、Oracle Cloud Infrastructureロギングにログを送信するにはAPI署名キー認証が必要です。

インスタンス・プリンシパル認証

クラスタのノード・プールにコンピュート・インスタンスを含む動的グループを作成し、適切なポリシーを割り当てて、その動的グループが以前に作成したカスタム・ログにログ・エントリを送信できるようにします。必要な権限に細心の注意を払ってください。

動的グループおよびポリシーが正しく構成されていない場合、FluentdはOracle Cloud Infrastructureロギングへのログの送信に失敗します。

ユーザーAPI署名キー

API署名キーがまだない場合は、Oracle Cloud Infrastructureドキュメントの必要なキーとOCIDに関する項を参照してください。資格証明の詳細を含むOracle Cloud Infrastructure構成ファイルを作成し、その構成ファイルを使用してシークレットを作成する必要があります。

Fluentd Oracle Cloud Infrastructureロギングが機能するには、次の要件を満たす必要があります:

  1. Oracle Cloud Infrastructure構成ファイルのプロファイル名は、DEFAULTにする必要があります。
  2. Oracle Cloud Infrastructure構成ファイルのkey_fileパスは、/root/.oci/keyにする必要があります。実際のキー・ファイルの場所は後でシークレットに指定するため、実際のキー・ファイルがその場所に存在している必要はありません。
  3. FluentdプラグインがOracle Cloud Infrastructureにログを送信できるようにするには、APIキーに関連付けられたユーザーに適切なOracle Cloud Infrastructure Identity and Access Management (IAM)ポリシーが用意されている必要があります。Oracle Cloud Infrastructureロギング・サービスで使用されるIAMポリシーについては、Oracle Cloud Infrastructureドキュメントのロギングの詳細に関する項を参照してください。

Verrazzanoプラットフォーム・オペレータがインストールされたら、Oracle Cloud Infrastructure構成ファイルおよび秘密キー・ファイルからverrazzano-installネームスペースに不透明なシークレットを作成します。構成ファイルのキーはconfigで、秘密キー・ファイル・データのキーはkeyである必要があります。

次に、シークレットを作成するkubectlコマンドの例を示します。

$ kubectl create secret generic oci-fluentd -n verrazzano-install \
      --from-file=config=/home/myuser/oci_config --from-file=key=/home/myuser/keys/oci_api.pem

シークレットは次のようになります。

apiVersion: v1
data:
  config: W0RFRkFVTFRdCnVzZXI9b2NpZDEudXN...
  key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS...
kind: Secret
metadata:
  name: oci-fluentd
  namespace: verrazzano-install
type: Opaque

便宜上、既存のOracle Cloud Infrastructure構成ファイルを指すことができるヘルパー・スクリプトがここにあり、これを使用するとシークレットが作成されます。このスクリプトを使用すると、デフォルトの構成ファイルの場所、プロファイル名、およびシークレットの名前をオーバーライドできます。

カスタム・ログの指定

Verrazzanoのインストール中に、クラスタでOracle Cloud Infrastructureロギングが有効になります。Verrazzanoインストール・カスタム・リソースには、2つのカスタム・ログを指定するためのフィールドがあります。1つはシステム・ログ用で、もう1つはアプリケーション・ログ用です。次に、資格証明のタイプごとのVerrazzanoインストールYAMLファイルの例を示します。

インスタンス・プリンシパル資格証明

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: vz-oci-logging
spec:
  profile: dev
  components:
    fluentd:
      enabled: true
      oci:
        systemLogId: ocid1.log.oc1.iad.system.example
        defaultAppLogId: ocid1.log.oc1.iad.app.example
    opensearch:
      enabled: false
    opensearchDashboards:
      enabled: false

ユーザーAPI資格証明

ユーザーAPI資格証明を使用する場合、Fluentdコンポーネント設定のOracle Cloud Infrastructureセクションで、Verrazzanoカスタム・リソースのシークレットの名前を構成する必要があります。YAMLファイルは次のようになります。

apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
  name: vz-oci-logging
spec:
  profile: dev
  components:
    fluentd:
      enabled: true
      oci:
        systemLogId: ocid1.log.oc1.iad.system.example
        defaultAppLogId: ocid1.log.oc1.iad.app.example
        apiSecret: oci-fluentd
    opensearch:
      enabled: false
    opensearchDashboards:
      enabled: false

apiSecret値は、以前にユーザーAPI資格証明を構成したときに作成したシークレットと一致している必要があります。

デフォルトのログ・オブジェクトのオーバーライド

個々のネームスペースでOracle Cloud Infrastructureログ・オブジェクトをオーバーライドできます。ネームスペースにログ識別子を指定するには、verrazzano.io/oci-log-idという名前の注釈をネームスペースに追加します。注釈の値は、Oracle Cloud Infrastructureログ・オブジェクト識別子です。

次に、ネームスペースの例を示します。

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    verrazzano.io/oci-log-id: ocid1.log.oc1.iad.ns.app.example
  creationTimestamp: "2022-01-14T15:09:19Z"
  labels:
    istio-injection: enabled
    verrazzano-managed: "true"
  name: example
spec:
  finalizers:
  - kubernetes
status:
  phase: Active

注釈を追加してから削除すると、ログはVerrazzanoカスタム・リソースで指定されているデフォルトのOracle Cloud Infrastructureログ・オブジェクトに戻ります。