Cluster - Dynamische Gruppen und Policys erstellen

Erstellen Sie im Roving Edge OKE-Mandanten eine dynamische Gruppe und Policys, um Member-Instanzen zur Verwaltung von OKE-Ressourcen zu autorisieren.

Anweisungen zum Erstellen einer dynamischen Gruppe und zum Schreiben von Übereinstimmungsregeln mit der Gerätekonsole und der CLI finden Sie unter Dynamische Gruppen erstellen und verwalten. Ein Beispiel für das Erstellen einer dynamischen OKE-Gruppe mit Terraform finden Sie unter Dynamische Gruppe mit Terraform erstellen.

Geben Sie die folgende Vergleichsregel an, um die Gruppe zu definieren:

tag.OraclePCA-OKE.cluster_id.value

Alle Clusterknoten, die dieses Tag aufweisen, sind Mitglieder der dynamischen Gruppe.

Im Folgenden finden Sie eine Beispiel-Policy für die dynamische Gruppe. In diesem Beispiel ist oke_dyn_grp der Name der dynamischen Gruppe und oke der Name des Compartments, in dem Ressourcen erstellt werden. Beachten Sie, dass alle Policy-Anweisungen für dasselbe Compartment gelten. Wenn Cluster in dieser Gruppe Zugriff auf Ressourcen in anderen Compartments benötigen, ändern Sie die Policy entsprechend. Allgemeine Informationen zu Policys finden Sie unter Policys verwalten.

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

Informationen zum Zweck der Policy use tag-namespaces finden Sie unter Containerisierte Anwendungen bereitstellen.

Was kommt als Nächstes:

Tag OraclePCA-OKE.cluster_id erstellen

Dynamische Gruppen mit Terraform erstellen

Im folgenden Beispiel wird gezeigt, wie Sie mit Terraform eine dynamische Gruppe erstellen.

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

Erstellen Sie das Tag OraclePCA-OKE.cluster_id, das auch unter Erstellen Sie das Tag OraclePCA-OKE.cluster_id beschrieben wird.

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"
}

Weitere Schritte

Tag OraclePCA-OKE.cluster_id erstellen