Creación de Políticas y Grupos Dinámicos de Cluster

En el arrendamiento de OKE de Private Cloud Appliance, cree un grupo dinámico y políticas para autorizar a las instancias miembro a gestionar recursos de OKE.

Para obtener instrucciones sobre cómo crear un grupo dinámico y escribir reglas de coincidencia mediante la interfaz de usuario web de Compute y la CLI de OCI, consulte Creación y gestión de grupos dinámicos. Para ver un ejemplo de creación de un grupo dinámico de OKE mediante Terraform, consulte Uso de Terraform para crear un grupo dinámico.

Especifique la siguiente regla de coincidencia para definir el grupo:

tag.OraclePCA-OKE.cluster_id.value

Todos los nodos de cluster que tienen esta etiqueta son miembros del grupo dinámico.

A continuación, se muestra un ejemplo de política para el grupo dinámico. En este ejemplo, oke_dyn_grp es el nombre del grupo dinámico y oke es el nombre del compartimento en el que se crean los recursos. Tenga en cuenta que todas las sentencias de política son para el mismo compartimento. Si los clusters de este grupo necesitan acceso a recursos de otros compartimentos, cambie la política según corresponda. Para obtener información general sobre las políticas, consulte Gestión de políticas.

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

Para obtener información sobre la finalidad de la política use tag-namespaces, consulte Exposición de aplicaciones en contenedores.

Qué es lo siguiente:

Crear la etiqueta OraclePCA-OKE.cluster_id

Uso de Terraform para crear un grupo dinámico

El siguiente ejemplo muestra cómo utilizar Terraform para crear un grupo dinámico.

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

Cree la etiqueta OraclePCA-OKE.cluster_id, que también se describe en Creación de la etiqueta 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"
}

Siguiente paso

Crear la etiqueta OraclePCA-OKE.cluster_id