ノート:
- このチュートリアルではOracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了する場合は、これらの値をクラウド環境に固有の値に置き換えてください。
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リソース・マネージャにはアクセスできません。
この問題を解決するには、次の補足手順を実行する必要があります。
- OCIリソース・マネージャ・プライベート・エンドポイントを作成します。このプライベート・エンドポイントは、クラスタへの接続を作成します。
- OCI Resource Managerプライベート・エンドポイントに固有のクラスE IPのイングレス・ルールを、OKE APIエンドポイントのプライベート・サブネットのセキュリティ・リストに追加します。
- OCI Resource ManagerのTerraformコードでそのエンドポイントを使用します。
- これらの変更の副作用として表示される後続の証明書エラーを解決します
前提条件
- OKE、OCI Resource ManagerおよびOCI Networkingの基本知識。
- Terraformの理解
- OCIリソース・マネージャおよびネットワーキング・リソースを作成およびアクセスできるようにするユーザー権限。
タスク1: リソース・マネージャ・プライベート・エンドポイントの作成
このタスクでは、これらのステップに従って、OCIコンソールからOCIリソース・マネージャの新しいプライベート・エンドポイントを作成できます。OKEクラスタ・プライベートAPIエンドポイントのVCNおよびサブネットを選択してください。
このようにして、OKEクラスタをこのOCIリソース・マネージャのプライベート・エンドポイントにマップしますが、外部からはアクセスできません。
タスク2: プライベート・サブネット・セキュリティ・リストへのイングレス・ルールの追加
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つの設定を使用してコードから証明書の検証を削除します。
-
同じ provider.tfファイルで、次のパラメータをコメント化または削除するか、空に設定します。
# cluster_ca_certificate = local.cluster_ca_certificate
-
次の行を追加します。
insecure = true
関連リンク
謝辞
- Adina Nicolescu (シニア・クラウド・エンジニア)、Andrei Ilas (プリンシパル・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Deploy Monitoring Solution to Private OKE Clusters Using Oracle Cloud Infrastructure Resource Manager
F83051-01
July 2023
Copyright © 2023, Oracle and/or its affiliates.