Private Cloud Appliance管理者のタスク

これらの前提条件タスクは、「サービス・エンクレーブ」管理者、またはグループ、ポリシー、タグ・ネームスペースなどのリソースを作成する権限がある「コンピュート・エンクレーブ」ユーザーが実行する必要があります。

タスク 説明 リソース

管理ネットワーク

アプライアンス管理ネットワークを有効にする場合は、管理ネットワークとデータ・センター・ネットワークが、クラスタ・コントロール・プレーンとの間のトラフィックを許可するように構成されていることを確認します。

「Oracle Private Cloud Appliance管理者ガイド」内の「管理ネットワーク情報の編集」

「Oracle Private Cloud Applianceインストレーション・ガイド」内の「管理ネットワーク構成のノート」

「Oracle Private Cloud Applianceセキュリティ・ガイド」内の「管理ネットワークを使用した構成へのアクセス」

プラットフォーム・イメージ

プラットフォーム・イメージには、KubernetesがインストールされているOKEで必要なイメージが含まれます。 プラットフォーム・イメージは、アプライアンスのインストール、アップグレードまたはパッチ適用中に、「コンピュート・エンクレーブ」内のすべてのテナンシにインポートする必要があります。 これが行われなかった場合、「サービス・エンクレーブ」管理者はイメージをインポートする必要があります。

「Oracle Private Cloud Appliance管理者ガイド」内の「プラットフォーム・イメージの提供」

OKE ユーザー・グループ

これらのユーザー・グループには、メンバーにOKEの使用を許可するポリシーがあります。

OKEユーザー・グループの作成

OraclePCA-OKE定義済タグ

このタグは、OKEクラスタまたはノード・プールを作成または更新するために必要です。 このタグは、動的グループ内に存在する必要があるインスタンスを識別するために使用されます。

OraclePCA-OKE.cluster_idタグの作成

OKE 動的グループ

動的グループは、メンバー・インスタンスに対してOKEリソースの管理を認可します。

クラスタ動的グループの作成

OraclePCAタグ

これらのタグは、クラスタの作成時に使用されます。

OraclePCAタグの作成

認証局バンドル

アップグレード、パッチ適用またはその他の停止後、または認証局バンドルの自動更新が失敗した場合は、管理ノードでCAバンドルを手動で更新する必要がある場合があります。

認証局バンドルの更新

Private Cloud ApplianceOKEを使用するには、少なくとも3つの空きパブリックIPアドレスが必要です。 空きパブリックIPアドレスがNATゲートウェイ、コントロール・プレーン・ロード・バランサおよびワーカー・ロード・バランサで使用可能であることを確認します。 詳細は、「OKEネットワーク・リソースの作成」を参照してください。

「サービスWeb UI」で、PCAConfig > ネットワーク環境>パブリックIP > フリー・パブリックIPを選択します。 「サービスCLI」で、次のコマンドを入力します:

PCA-ADMIN> show networkConfig
"Free Public IPs"

OKEユーザー・グループの作成

OKE ユーザー・グループには、メンバーにOKEの使用を許可するポリシーがあります。 異なるユーザーが異なるコンパートメントでOKEを使用できるようにするには、個別のOKEユーザー・グループを作成する必要があります。

グループを作成したり、既存のグループを更新するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「ユーザー・グループの作成と管理」を参照してください。

ユーザー・グループ・ポリシーにmanage cluster-family認可を含めます。 次に、OKEユーザー・グループのポリシーの例を示します。 組織によっては、たとえばネットワーク・リソースを管理する別のチームがある場合、次の「管理」承認の一部が「読み取り」または「使用」承認になるか、承認を追加する必要がある場合があります。

allow group group-name to read all-resources in tenancy
allow group group-name to manage cluster-family in compartment compartment-name
allow group group-name to manage instance-family in compartment compartment-name
allow group group-name to manage network-load-balancers in compartment compartment-name
allow group group-name to manage virtual-network-family in compartment compartment-name

「Oracle Private Cloud Applianceユーザーズ・ガイド」「ポリシーの管理」を参照してください。

クラスタ動的グループの作成

動的グループは、そのメンバー・インスタンスにOKEリソースの管理を許可します。

「Oracle Private Cloud Applianceユーザーズ・ガイド」「動的グループの作成と管理」を参照してください。

次の一致ルールを入力して、グループを定義します:

tag.OraclePCA-OKE.cluster_id.value

このタグを持つすべてのクラスタ・ノードは、動的グループのメンバーです。

次に、動的グループのポリシーの例を示します。 この例では、oke_dyn_grpは動的グループの名前、okeはリソースが作成されるコンパートメントの名前です。 すべてのポリシー・ステートメントが同じコンパートメント用であることに注意してください。 このグループのクラスタで他のコンパートメントのリソースへのアクセスが必要な場合は、それに応じてポリシーを変更します。 「Oracle Private Cloud Applianceユーザーズ・ガイド」「ポリシーの管理」を参照してください。

allow dynamic-group oke_dyn_grp to manage file-family in compartment oke
allow dynamic-group oke_dyn_grp to manage volume-family in compartment oke
allow dynamic-group oke_dyn_grp to manage load-balancers in compartment oke
allow dynamic-group oke_dyn_grp to manage instance-family in compartment oke
allow dynamic-group oke_dyn_grp to manage virtual-network-family in compartment oke
allow dynamic-group oke_dyn_grp to use tag-namespaces in compartment oke

use tag-namespacesポリシーの目的の詳細は、「コンテナ化されたアプリケーションの公開」を参照してください。

Terraformを使用した動的グループの作成

次の例は、Terraformを使用して動的グループを作成する方法を示しています。

variables.tf

variable "oci_config_file_profile" {
  type    = string
  default = "DEFAULT"
}

variable "tenancy_ocid" {
    description = "tenancy OCID"
    type        = string
    nullable    = false
}

variable "compartment_name" {
    description = "compartment name"
    type        = string
    nullable    = false
}

variable "oke_dyn_grp" {
    description = "Dynamic group that needs to be created for instance principal"
    default = "oke-dyn-ip-grp"
}

variable "oke_policy_name" {
    description = "Policy set name for dynamic group"
    default = "oke-instance-principal-policy"
}

terraform.tfvars

# Name of the profile to use from $HOME/.oci/config
oci_config_file_profile = "DEFAULT"

# Tenancy OCID from the oci_config_file_profile profile.
tenancy_ocid = "ocid1.tenancy.UNIQUE_ID"

# Compartment name
compartment_name = "oke"

# Dynamic Group Name
oke_dyn_grp = "oke-dyn-ip-group"

# OKE Dynamic Group Policy Name
oke_policy_name = "oke-dyn-grp-policy"

provider.tf

provider "oci" {
  config_file_profile = var.oci_config_file_profile
  tenancy_ocid        = var.tenancy_ocid
}

main.tf

terraform {
  required_providers {
    oci = {
      source  = "oracle/oci"
      version = ">= 4.50.0, <= 6.36.0"
      # If necessary, you can pin a specific version here
      # version = "6.36.0"
    }
  }
  required_version = ">= 1.1"
}

oke-dyn-grp.tf

resource "oci_identity_dynamic_group" "oke-dynamic-grp" {
    compartment_id = "${var.tenancy_ocid}"
    description    = "PCA OKE worker dynamic group for instance principal"
    matching_rule  = "tag.${oci_identity_tag_namespace.oracle-pca.name}.${oci_identity_tag.cluster-id.name}.value"
    name           = "${var.oke_dyn_grp}"
    depends_on = [oci_identity_tag.cluster-id]
}

oke-policy.tf

resource "oci_identity_policy" "oke-dyn-grp-policy" {
    compartment_id = "${var.tenancy_ocid}"
    description    = "Dynamic group policies for OKE Resources"
    name           = "${var.oke_policy_name}"
    statements     = [
        "allow dynamic-group ${oci_identity_dynamic_group.oke-dynamic-grp.name} to manage load-balancers in compartment ${var.compartment_name}",
        "allow dynamic-group ${oci_identity_dynamic_group.oke-dynamic-grp.name} to manage volume-family in compartment ${var.compartment_name}",
        "allow dynamic-group ${oci_identity_dynamic_group.oke-dynamic-grp.name} to manage file-family in compartment ${var.compartment_name}",
        "allow dynamic-group ${oci_identity_dynamic_group.oke-dynamic-grp.name} to manage instance-family in compartment ${var.compartment_name}",
        "allow dynamic-group ${oci_identity_dynamic_group.oke-dynamic-grp.name} to manage virtual-network-family in compartment ${var.compartment_name}",
        "allow dynamic-group ${oci_identity_dynamic_group.oke-dynamic-grp.name} to use tag-namespaces in compartment ${var.compartment_name}"
    ]

    depends_on = [oci_identity_dynamic_group.oke-dynamic-grp]
}

oke-tag-ns.tf

OraclePCA-OKE.cluster_idタグを作成します(「OraclePCA-OKE.cluster_idタグの作成」でも説明されています)。

resource "oci_identity_tag" "cluster-id" {
    description      = "Default tag key definition"
    name             = "cluster_id"
    tag_namespace_id = "${oci_identity_tag_namespace.oracle-pca.id}"
    depends_on = [oci_identity_tag_namespace.oracle-pca]
}

resource "oci_identity_tag_namespace" "oracle-pca" {
    compartment_id = "${var.tenancy_ocid}"
    description    = "Default Tag namespace for Oracle PCA OKE"
    name           = "OraclePCA-OKE"
}

認証局バンドルの更新

このPrivate Cloud Applianceの認証局(CA)バンドルは、クラスタの作成時にダウンロードされ、クラスタで使用できるようになります。 CAバンドルには、証明書、秘密キーと公開キー、およびその他の認可情報が含まれます。

CAバンドルは、通常の証明書のローテーションが発生したとき、またはアプライアンスがアップグレードされたときに、アプライアンスで自動的に更新されます。

アプライアンスでCAバンドルを更新する場合は、たとえばcluster-apiの使用を有効にするために、ローカル・システムでCAバンドルを更新する必要があります。 これは、OCI CLIコマンドを実行できるように、~/.oci構成のCAバンドルを置き換えることに似ています。

プロセスは1時間ごとに実行され、CAバンドルの有効性を確認し、必要に応じてCAバンドルを更新します。

これらの時間ごとのチェックの間にCAバンドルを更新する必要がある場合は、プロセスを手動で実行できます:

  1. root権限を持つシステム管理者として、Private Cloud Applianceの管理ノードにログオンします。

  2. OKEポッドの名前を取得します。

    次のコマンドは、okeネームスペース内の3つのOKEポッドをリストします:

    # kubectl get pod -n oke -l app=oke
  3. コマンドを実行してCAバンドルを更新します。

    前のステップのoke-uniqueIDポッド名の1つを使用します。

    # kubectl exec -it oke-6c4d85d6f-72fxs -n oke -c oke -- /usr/bin/pca-oke-cluster-tool

GrafanaのLokiログで、このプロセスが自動的にまたは手動で実行されたときに発生した可能性のあるエラーを確認できます。 「Oracle Private Cloud Appliance管理者ガイド」「ステータスおよびヘルス・モニタリング」の章の「システム・ログへのアクセス」に関する項を参照してください。