ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
OCIイベント・サービス・ルールを使用したOCI関数を使用したプライベート・ゾーンのクロス・リージョンDNSレコードの更新
イントロダクション
このチュートリアルでは、新しいコンピュート・インスタンスの作成時に両方のリージョンのプライベート・ゾーンでコンピュート・インスタンスのドメイン・ネーム・システム(DNS)レコードを自動的に更新する方法、またはOracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR)プランのスイッチオーバー・シナリオ中に移動する方法について学習します。このチュートリアルでは、2つの特定のOCIサービスについて説明します。
-
OCI Events Service Rule: OCI環境内の変更およびイベントへの自動応答をトリガーするサービス。
-
OCI Functions:インフラストラクチャを管理せずにイベントに応答してコードを実行できるサーバーレス・コンピューティング・サービス。
このユース・ケースは、当初、OCI Full Stack DRのスイッチオーバー計画中に使用することを想定していました。この計画では、インスタンスはリージョン間で移動されます。基本的に、ディザスタ・リカバリ(DR)スイッチオーバー・プロセスでは、新しいリージョンに新しいインスタンスを作成し、前のリージョンでインスタンスを終了します。このシナリオに基づいて、このチュートリアルでは、両方のリージョンのプライベート・ゾーンのDNSレコードを更新するためにOCI関数をトリガーする起動- インスタンス終了イベント・タイプに焦点を当てます。
このソリューションは、デフォルトのOCI DNSプライベート・ゾーンの自動化としても機能します。選択したコンパートメントで作成された新規インスタンスごと、またはターゲット・インスタンスを識別するために指定したその他のフィルタごとに、DNSレコードが作成されます。詳細は、イベントを生成するサービスを参照してください。
高レベルのアーキテクチャ
ノート:
このチュートリアルは、教育および研究の目的でのみ設計されています。これは、学習者が制御された設定で実験し、実用的な経験を得るための環境を提供します。このチュートリアルで使用するセキュリティ構成と慣行は、実際のシナリオには適していない可能性があることに注意してください。
現実世界のアプリケーションのセキュリティに関する考慮事項は、多くの場合、はるかに複雑で動的です。したがって、本番環境でここに示した手法または構成のいずれかを実装する前に、包括的なセキュリティ評価およびレビューを実施することが不可欠です。このレビューでは、アクセス制御、暗号化、監視、コンプライアンスなど、セキュリティのすべての側面を網羅し、システムが組織のセキュリティ・ポリシーおよび標準に準拠していることを確認する必要があります。
演習環境から実際のデプロイメントに移行する場合、セキュリティは常に最優先事項です。
目的
-
指定されたOCI関数をトリガーするOCIイベント・サービス・ルールを設定します。このファンクションは、選択したコンパートメントに新しいインスタンスが作成されるたびに、2つのリージョンのDNSプライベート・ゾーン・レコードを更新します。
ノート:このチュートリアルでは、OCI Full Stack DRの設定は説明しません。かわりに、2つ以上のリージョンでDNSプライベート・ゾーンを自動化することに重点を置きます。詳細は、Oracle WebLogic ServerドメインでのOCI Full Stack Disaster Recovery Serviceの使用を参照してください。
前提条件
-
OCI環境
-
管理権限を持つOCIアカウント。
-
リソースを作成するためのコンパートメント。
ノート:コンパートメント名およびコンパートメントIDを書き留めます。
-
新しく起動されたインスタンスに必要な各リージョンにDNSレコードがあるOCI DNSプライベート・ゾーンのOracle Cloud Identifier (OCIDs)のリスト。このチュートリアルでは、2つのDNSプライベート・ゾーン(GRUリージョン用とVCPリージョン用)があります。
-
-
ローカル・マシン環境
-
ローカルOracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)を設定します。詳細は、OCI CLIのインストールを参照してください。
-
イメージを構築できるローカルDocker。Oracle Linuxを使用している場合は、Docker: Oracle Linux 8へのDockerのインストール(OL8)を参照してください。
-
ファンクションをOCIにデプロイできるようにするローカルFn Project CLI。詳細は、Fn ProjectのCLIのインストールを参照してください。
-
タスク1: 動的グループの設定
ドメインに移動し、「動的グループ」をクリックして、次のグループを作成します。
動的グループ名: MyFunctions
。
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
タスク2: ポリシーの作成
「ポリシー」に移動し、次のポリシーを作成します。
ポリシー名: FunctionsPolicies
。
Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use instance-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read app-catalog-listing in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use volume-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use virtual-network-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage dns-records in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use dns-zones in compartment YOUR-COMPARTMENT-NAME
タスク3: OCIコンテナ・レジストリの作成
-
「開発者サービス」に移動し、「コンテナ・レジストリ」をクリックして、Fnイメージのプライベート・リポジトリを作成します。
リポジトリ名:
lab/fnpy-event-dns-update
。 -
リポジトリを確認し、ネームスペースを書き留めます。
-
OCI CLIおよびDockerがインストールされているターミナル・シェルを開き、レジストリにログインします。リージョンの正しいURLを確認してください。このチュートリアルでは、レジストリURLが
gru.ocir.io
であるブラジル東部(サンパウロ)リージョンを使用しています。docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
タスク4: プライベート・ゾーンでDNSを更新するためのPython OCI関数の作成
-
OCIコンソールに移動し、「開発者サービス」をクリックします。「ファンクション」で、「アプリケーション」および「アプリケーションの作成」をクリックします。
-
影響を受けるOCI DNSプライベート・ゾーンの構成を作成します。
ノート:この構成変数は、更新するプライベート・ゾーンOCIDsを指定します。複数のOCIDsをカンマで区切ってリストできます。
シークレット名 Value TARGET_ZONES_OCID PRIVATE ZONES OCIDsのリストをカンマ区切りとして設定します このチュートリアルでは、2つのプライベート・ゾーン(GRUリージョン用とVCPリージョン用)を設定します。
サンプル:
ocid1.dns-zone.oc1.sa-saopaulo-1.xxxx
ocid1.dns-zone.oc1.sa-vinhedo-1.xxx
-
Docker、OCI CLI、Fn Project CLIがインストールされているターミナル・シェルに移動し、次のコマンドを実行してファンクションを初期化します。
ノート:タスクに従った場合、Dockerログイン・コマンドはすでに実行されており、実行されていない場合は、タスク3.3でDockerログに進みます。
mkdir lab cd lab fn create context oci-cloud --provider oracle fn use context oci-cloud fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab fn init --runtime python fnpy-event-dns-update cd fnpy-event-dns-update ls -lrt
ノート:このチュートリアルでは、ブラジル東部(サンパウロ)リージョンを使用しています。別のリージョンを使用している場合は、
api-url
およびregistry
の場所を変更する必要があります。init
コマンドは、func.py
にhello world関数を作成します。このコードは上書きします。 -
fnpy-event-dns-update.zipからPython関数のサンプル・コードを取得し、解凍して
init
コマンド中にファイルを上書きします。-
zipファイルを
fn init
コマンドを実行した演習ディレクトリにコピーし、ディレクトリ内のファイルを確認します。ls -lrt
-
ファイルを解凍し、既存のファイルを上書きします。
unzip fnpy-event-dns-update.zip
-
-
新しいコードを作成し、ファンクションをデプロイします。
ls -lrt fn deploy --app MyApp
タスク5: OCIイベント・サービス・ルールの作成
-
OCIコンソールに移動し、「監視および管理」をクリックします。「イベント・サービス」で、「ルール」を選択し、「ルールの作成」をクリックします。
-
次の情報を入力します
- 名前:
MyAutoDNSRule
と入力します。 - ルールの条件:
- 条件1:
- 条件:
Event Type
を選択します。 - 「サービス名」:
Compute
を選択します。 - イベント・タイプ:
Instance - Launch End
を選択します。
- 条件:
- 条件2:
- 条件:
Attribute
を選択します。 - 属性名:
compartmentId
を選択します。 - 属性値:コンパートメントOCIDを入力します。
- 条件:
- 条件1:
- アクション:
- アクション・タイプ:
Functions
を選択します。 - ファンクション・コンパートメント:コンパートメントを選択します。
- ファンクション・アプリケーション:
MyApp
を選択します。 - ファンクション:
fnpy-event-dns-update
を選択します。
- アクション・タイプ:
ノート:この例では、インスタンスをcompartmentIDでフィルタ処理しています。つまり、そのコンパートメントで新しく起動されたインスタンスによって、選択したファンクションがトリガーされます。必要に応じて、様々なフィルタおよび条件を指定できます。
- 名前:
タスク6: ソリューションの検証
このチュートリアルでは、GRUリージョンとVCPリージョンの両方にDNSプライベート・ゾーンを確立し、各DNSプライベート・ゾーンのOCIDsを文書化しました。これらのOCIDsは、OCIファンクションの構成に使用されます。
-
OCI Functionsが使用可能であることを確認し、ロギングを有効にします。
-
OCIコンソールに移動し、「開発者サービス」をクリックします。「ファンクション」で、「アプリケーション」をクリックし、作成したアプリケーション
MyApp
を選択します。 -
「ログ」をクリックし、「ログの有効化」を選択します。
-
-
現在のDNSプライベート・ゾーンを確認します。次のイメージに示すように、両方のリージョンに
UBUNTUAPPS.COM
というドメインを設定しました。 -
OCI Full Stack DRスイッチオーバーをシミュレートするための新しいコンピュート・インスタンスを作成します。これにより、
Instance Launch - END
イベントがトリガーされ、OCI関数が起動されて、両方のリージョンのDNSプライベート・ゾーンが更新されます。 -
インスタンスの作成後、DNSプライベート・ゾーンが両方のリージョンで適切に更新されていることを確認します。
-
OCIファンクションのログを確認して、実行されたファンクションの詳細を確認します。
関連リンク
承認
- 著者 - Joao Tarla (Oracle LAD Aチーム・ソリューション・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Use OCI Events Service Rule to Update Cross Region DNS Records for a Private Zone with OCI Functions
G11041-01
July 2024