ノート:

Oracle Cloud Infrastructure Resource Managerを使用したプライベートOKEクラスタへのモニタリング・ソリューションのデプロイ

イントロダクション

Oracle Cloudは、Oracle Cloud Infrastructure (OCI) Logging Analyticsを使用して、Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)実装用の補完的なモニタリング・ソリューションを提供します。このソリューションはドキュメンテーションに記載されており、GitHubにあるResource Manager Terraformデプロイメントとして実装できます。ただし、このソリューションは、パブリックAPIエンドポイントを含むOKEクラスタに対応しています。

プライベートOKEクラスタで同じデプロイメントを試行すると、OCIリソース・マネージャ・ジョブがサービス・テナンシで実行されているため、ネットワーク接続の問題のためにデプロイメントが失敗します。この状況ではOCI Resource Managerプライベート・エンドポイントを使用できますが、Helmデプロイメントを実行できるように、Terraformコードにいくつか変更を加える必要があります。

プライベート・エンドポイントの操作

目的

プライベートOKEクラスタ(プライベート・サブネットにあるすべてのクラスタ・コンポーネント)がすでに作成されている場合、この時点で、OCIリソース・マネージャを介して前述のLogging Analyticsソリューションをデプロイすると、次のエラーで失敗します:

Error: Kubernetes cluster unreachable: Get "https://192.0.2.1:6443/version": dial tcp 192.0.2.1:6443: i/o timeout
  with module.helm_release.helm_release.oci-kubernetes-monitoring[0],
  on modules/helm/helm.tf line 11, in resource "helm_release" "oci-kubernetes-monitoring"
  11: resource "helm_release" "oci-kubernetes-monitoring"

この場合、IP 192.0.2.1はOKEプライベート・エンドポイントのIPであり、OCIリソース・マネージャにはアクセスできません。

この問題を解決するには、次の補足手順を実行する必要があります。

前提条件

タスク1: リソース・マネージャ・プライベート・エンドポイントの作成

このタスクでは、これらのステップに従って、OCIコンソールからOCIリソース・マネージャの新しいプライベート・エンドポイントを作成できます。OKEクラスタ・プライベートAPIエンドポイントのVCNおよびサブネットを選択してください。

このようにして、OKEクラスタをこのOCIリソース・マネージャのプライベート・エンドポイントにマップしますが、外部からはアクセスできません。

OCIリソース・マネージャ・プライベート・エンドポイント

タスク2: プライベート・サブネット・セキュリティ・リストへのイングレス・ルールの追加

SLイングレス・ルール

OCIリソース・マネージャのプライベート・エンドポイントからのトラフィックを許可するために、プライベートAPIエンドポイント・サブネットのセキュリティ・リストにイングレス・ルールを追加します。OCI Resource Managerプライベート・エンドポイントのアクセス可能なIPはクラスE IPで、これはCIDR 240.0.0.0/4でカバーされることを意味します。

残りのルール(イングレスおよびエグレス)を確認し、OCIの推奨事項に準拠してください。

タスク3: Terraformコードの変更

前のステップで作成したプライベート・エンドポイントのこの新しい到達可能IPを使用するには、スタックからファイル/modules/helm/provider.tfを変更する必要があります。

プライベート・リソースの代替の到達可能IPアドレスを提供する次のデータ・ソース・ブロックを含めます。このIPは、OCIリソース・マネージャ・サービスによってプライベート・リソースへの接続に使用されます。

data "oci_resourcemanager_private_endpoint_reachable_ip" "test_private_endpoint_reachable_ip" {
    #Required
    private_endpoint_id = "ocid1.ormprivateendpoint.oc1....."
    private_ip = "192.0.2.1"
}

locals {
  // following locals are set as "place-holder" when user opts out of helm release
  cluster_endpoint       = "https://${data.oci_resourcemanager_private_endpoint_reachable_ip.test_private_endpoint_reachable_ip.ip_address}:6443"  
  ...
}

タスク4: 証明書の解決エラー

前述の変更後、OKEプライベート・エンドポイントのアクセス可能なIPがOKE証明書に含まれていないため、コードの適用は進行しますが、その後APIエンドポイントのTLS証明書のために失敗します。

module.helm_release.helm_release.oci-kubernetes-monitoring[0]: Creating...
Error: Kubernetes cluster unreachable: Get "https://255.x.y.0:6443/version": x509: certificate is valid for 192.0.2.1, 192.0.2.2, 192.0.2.3, 127.0.0.1, not 255.x.y.0

これを回避するには、次の2つの設定を使用してコードから証明書の検証を削除します。

謝辞

その他の学習リソース

docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。