「VCNネイティブ・ポッド・ネットワーキング」リソースの作成

「VCNネイティブ・ポッド・ネットワーキング」を使用すると、ポッドIPアドレスは、「フランネル・オーバーレイ」などのネットワーク・オーバーレイからではなくVCN CIDRブロックから直接取得されるため、ポッドからトラフィックを直接管理できます。 「VCNネイティブ・ポッド・ネットワーキング」を使用すると、トラフィックの柔軟性と制御性が向上し、様々なセキュリティ・ルールを使用できます。

「VCNネイティブ・ポッド・ネットワーキング」は、Kubernetesクラスタ内のノードをOKE VCN内のポッド・サブネットに接続します。 OKE VCN内のポッドIPアドレスは、OKE VCNおよびオンプレミス・ネットワークに接続(ピアリング)されている他のVCNから直接ルーティングできます。

「VCNネイティブ・ポッド・ネットワーキング」を使用するクラスタを作成する場合、指定するVCNにはpodという名前のサブネットが必要です。 システムがそのサブネットを検出できるように、podという名前のサブネットを指定する必要があります。 ポッド・サブネットには、コントロール・プレーン・ノード上のポッドがワーカー・ノード上のポッドおよび他のポッドおよび他のリソースと直接通信できるようにするセキュリティ・ルールがあります。 「VCNネイティブ・ポッド・ネットワーキング・ポッド・サブネットの作成」を参照してください。 「VCNネイティブ・ポッド・ネットワーキング」を選択し、"pod"という名前のサブネットがない場合、クラスタの作成は失敗します。

「VCNネイティブ・ポッド・ネットワーキング」を使用するクラスタのノード・プールを作成する場合、指定したポッド・サブネット(「ポッド通信」>「ポッド通信サブネット」または--pod-subnet-ids)は、ワーカー・ノードのポッドのポッド・サブネットの機能を提供します。 そのポッド・サブネットには、ワーカー・ノード上のポッドがワーカー・ノードおよびコントロール・プレーン・ノード上の他のポッドと直接通信できるようにするセキュリティ・ルールが必要です。 オプションで、ワーカー・ノード・サブネットをポッド・サブネットとして指定できます。 指定するポッド・サブネットのCIDRは、 /25より大きい必要があります。 ポッド・サブネットは、ワーカー・ノード・サブネットより大きい必要があります。

一般に、「VCNネイティブ・ポッド・ネットワーキング」を使用すると、セキュリティ・ルールによって、ポッドが、同じノードまたはクラスタ内の他のノード、他のクラスタ、他のサービス、およびインターネット上の他のポッドと直接通信できるようになります。

ノード・シェイプとポッド数

「OCI VCNネイティブ・ポッド・ネットワーキングCNIプラグイン」を使用する場合、各ポッドにはプライベートIPアドレスが必要です。 デフォルトでは、ワーカー・ノードで実行されているポッドで使用するために、31のIPアドレスがVNICに割り当てられます。

ワーカー・ノードで実行するポッドの最大数を指定できます。 デフォルトの最大値は、ワーカー・ノード当たり31ポッドです。 アーカイブ・ログの保存先を110

ノード・シェイプ(つまりワーカー・ノード)には、少なくとも2つのVNICがあります。 最初のVNICはワーカー・サブネットに接続されます。 2番目のVNICはポッド・サブネットに接続されています。 したがって、ワーカー・ノードは少なくとも31のポッドをサポートできます。 1つのワーカー・ノード上に31を超えるポッドが必要な場合は、3つ以上のVNICをサポートするノード・プールのシェイプを指定: ワーカー・ノード・サブネットに接続する1つのVNICと、ポッド・サブネットに接続する少なくとも2つのVNIC。

VM.PCAStandard1.4標準ノード・シェイプは最大4つのVNICを持つことができ、ワーカー・ノードは最大93のポッドをサポートできます。 5つのOCPUを持つVM.PCAStandard.E5.Flexノード・シェイプは、最大5つのVNICを持つことができ、ワーカー・ノードは最大110のポッドをサポートできます。 1つのノードに110個を超えるポッドを含めることはできません(「OKEサービスの制限」を参照)。

次の式では、ノードごとにサポートされるポッドの最大数を要約します:

MIN( (Number of VNICs - 1) * 31 ), 110)

すべてのノード・シェイプの詳細は、「Oracle Private Cloud Appliance概要ガイド」「コンピュート・インスタンスの概念」の章のコンピュート・シェイプに関する項を参照してください。

「VCNネイティブ・ポッド・ネットワーキング」リソース

このトピックの次の項のリソース定義では、「VCNネイティブ・ポッド・ネットワーキング」の使用時にワークロード・クラスタのネットワーク・リソースの実例セットを作成します。 これらのリソースを作成するときは、この構成をガイドとして使用してください。 CIDRブロックやIPアドレスなどのプロパティの値を変更できます。 ネットワーク・プロトコル、ステートフル設定、プライベート/パブリック設定などのプロパティの値を変更しないでください。

特定の目的のために開く必要がある特定のポートについては、「VCNネイティブ・ポッド・ネットワーキングのワークロード・クラスタ・ネットワーク・ポート」を参照してください。

次のネットワーク・リソースを作成します。 Terraformを使用するには、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

ノート:

これらのすべてのネットワーク・リソースをアプライアンスの同じコンパートメントに作成します。

「VCNネイティブ・ポッド・ネットワーキング」のワークロード・クラスタ・ネットワークCIDR範囲

このドキュメント全体を通して、変数は、異なるサブネット内のインスタンスのCIDR範囲を表すために使用されます。 次の表に、「VCNネイティブ・ポッド・ネットワーキング」で使用するCIDR変数および値の例を示します。

ノート:

これらは単なる例です。 使用するCIDRの範囲は、クラスタの数、各クラスタ内のノードの数、ワーカー・ノードに対して選択したシェイプおよび使用するネットワーキングのタイプによって異なります。

「VCNネイティブ・ポッド・ネットワーキング」の場合、すべてのポッドは、ポッド・サブネットCIDRで定義されているIPアドレス・プールから割り当てられたIPアドレスを取得します。 「ノード・シェイプとポッド数」で説明されているように、ノード・プールに指定するシェイプによって、各ワーカー・ノードの最大VNIC数(ポッド)が決まります。

「VCNネイティブ・ポッド・ネットワーキング」ネットワークと「フランネル・オーバーレイ」ネットワークのIPアドレス要件の主な違いは、「VCNネイティブ・ポッド・ネットワーキング」ではより多くのIPアドレスを使用できる必要があることです。 「フランネル・オーバーレイ・ネットワーキングのワークロード・クラスタ・ネットワークCIDR範囲」の表は、「VCNネイティブ・ポッド・ネットワーキング」 CIDR範囲の次の表より小さいCIDR範囲を示しています。

ノート:

ポッド・サブネットCIDRは、 /25より大きい必要があります。 ポッド・サブネットは、ワーカー・ノード・サブネットより大きい必要があります。

表4-11 例CIDR「VCNネイティブ・ポッド・ネットワーキング」で使用する値

変数名 説明 値の例

vcn_cidr

VCN CIDR範囲

これは、OKEインフラストラクチャを作成するためのIPが8192の小規模なVCNです。

172.31.0.0/19

worker_cidr

ワーカー・サブネットCIDR

172.31.8.0/21

workerlb_cidr

ワーカー・ロード・バランサ・サブネットCIDR

172.31.0.0/23

kmi_cidr

OKE コントロール・プレーン・サブネットCIDR

172.31.4.0/22

kmilb_cidr

OKE コントロール・プレーン・ロード・バランサ・サブネットCIDR

172.31.2.0/23

pod_cidr

ポッド・サブネットCIDR

172.31.16.0/20

kube_client_cidr

Kubernetes APIサーバーへの接続を許可されているクライアントのCIDR

10.0.0.0/8

「Calculator.netのIPサブネット計算機」は、特定のIPアドレスおよびプレフィクスの長さで使用可能なすべてのネットワークを検索するための1つのツールです。

「VCNネイティブ・ポッド・ネットワーキング」のワークロード・クラスタ・ネットワーク・ポート

次の表に、「VCNネイティブ・ポッド・ネットワーキング」の使用時にワークロード・クラスタで使用されるポートを示します。 これらのポートは、ワークロード・クラスタ・ネットワーキングを構成するために使用できる必要があります。 他の目的で追加のポートを開く必要がある場合があります。

すべてのプロトコルはTCPです。 すべてのポート状態はステートフルです。 ポート6443は、Kubernetes APIに使用されるポートで、このガイドではkubernetes_api_portとも呼ばれます。

「Oracle Private Cloud Applianceセキュリティ・ガイド」「ポート・マトリックス」の表も参照してください。

別の管理ネットワークを使用している場合は、「管理ネットワークを使用したOKEクラスタ管理」を参照してください。

表4-12 「VCNネイティブ・ポッド・ネットワーキング」のワークロード・クラスタで使用可能にする必要があるポート

ソースIPアドレス 宛先IPアドレス ポート 説明

バスチョン・ホスト: vcn_cidr

ワーカー・ノード・サブネット: worker_cidr

22

バスチョン・ホストからワーカーCIDRへのアウトバウンド接続。

バスチョン・ホスト: vcn_cidr

コントロール・プレーン・サブネット: kmi_cidr

22

バスチョン・ホストからコントロール・プレーン・ノードへのアウトバウンド接続。

ワーカー・ノード・サブネット: worker_cidr

yumリポジトリ

80

ワーカーCIDRから外部アプリケーションへのアウトバウンド接続。

ワーカー・ノード・サブネット: worker_cidr

コントロール・プレーン・サブネット: kmi_cidr

6443

ワーカーCIDRからKubernetes APIへのアウトバウンド接続。 これは、いずれかのノードのパブリックIPアドレスまたはロード・バランサのパブリックIPアドレスのいずれかを介してノードを結合できるようにするために必要です。

ワーカー・ノード・サブネット: worker_cidr

コントロール・プレーン・ロード・バランサ

6443

ワーカーCIDRからKubernetes APIへのインバウンド接続。

クライアントのCIDR: kube_client_cidr

コントロール・プレーン・ロード・バランサ

6443

クライアントからKubernetes APIサーバーへのインバウンド接続。

ワーカー・ノード・サブネット: worker_cidr

コントロール・プレーン・サブネット: kmi_cidr

6443

コントロール・プレーン・サブネット上のワーカーCIDRからkubeapiへのプライベート・アウトバウンド接続。

kube_client_cidr

ワーカー・ノード・サブネット: worker_cidr

30000-32767

Kubernetesクライアントからのアプリケーションのインバウンド・トラフィック。

kmi_cidr

worker_cidr, pod_cidr

10250

Kubernetes APIエンドポイントからワーカー・ノードへの通信。

kmi_cidr

worker_cidr, pod_cidr

10256

ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードまたはポッド・サブネットのkube-proxyと通信することを許可します。

pod_cidr

kmilb_cidr

12250

ポッドからKubernetes APIエンドポイントへの通信。

kmi_cidr

kmi_cidr

2379-2381

etcdサーバーとメトリック・サービス間の通信。 ポート2379および2380は、Kubernetesetcdサーバーと通信するために使用されます。 ポート2381は、Kubernetesetcdからメトリックを収集するために使用します。

kmi_cidr

kmi_cidr

10257-10260

Kubernetesコンポーネントのインバウンド接続。

例: 「VCNネイティブ・ポッド・ネットワーキング」リソースのTerraformスクリプト

次のTerraformスクリプトは、「VCNネイティブ・ポッド・ネットワーキング」の使用時にOKEが必要とするネットワーク・リソースを作成します。 この章の他の項では、これらの同じネットワーク・リソースを定義する他の方法について説明します。

これらのスクリプトに示されているほとんどの値(リソース表示名やCIDRなど)が例です。 一部のポートは、次のように指定する必要があります(「VCNネイティブ・ポッド・ネットワーキングのワークロード・クラスタ・ネットワーク・ポート」を参照)、OKEポッド・サブネットの名前はpodOKEコントロール・プレーン・サブネットの名前はcontrol-planeである必要があります。 CIDR値の詳細は、「VCNネイティブ・ポッド・ネットワーキングのワークロード・クラスタ・ネットワークCIDR範囲」を参照してください。

variables.tf

このファイルでは、「VCNネイティブ・ポッド・ネットワーキング」の使用時にOKEネットワーク・リソースの構成に使用される複数の変数が作成されます。 これらの変数の多くは、このファイルに値を割り当てられていません。 1つのポートと5つのCIDRに値が割り当てられます。 kubernetes_api_port、ポート6443は、Kubernetes APIへのアクセスに使用されるポートです。 「VCNネイティブ・ポッド・ネットワーキングのワークロード・クラスタ・ネットワーク・ポート」も参照してください。 このファイルに定義されている6つのCIDRは、OKE VCN、ポッド・サブネット、ワーカー・サブネット、ワーカー・ロード・バランサ・サブネット、コントロール・プレーン・サブネットおよびコントロール・プレーン・ロード・バランサ・サブネット用です。

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

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

variable "compartment_id" {
  description = "compartment OCID"
  type        = string
  nullable    = false
}

variable "vcn_name" {
  description = "VCN name"
  nullable    = false
}

variable "kube_client_cidr" {
  description = "CIDR of Kubernetes API clients"
  type        = string
  nullable    = false
}

variable "kubernetes_api_port" {
  description = "port used for kubernetes API"
  type        = string
  default     = "6443"
}

variable "worker_lb_ingress_rules" {
  description = "traffic allowed to worker load balancer"
  type = list(object({
    source   = string
    port_min = string
    port_max = string
  }))
  nullable = false
}

variable "worker_ingress_rules" {
  description = "Traffic allowed directly to workers."
  type = list(object({
    source   = string
    port_min = string
    port_max = string
  }))
  nullable = true
}

#
# IP network addressing
#
variable "vcn_cidr" {
  default = "172.31.0.0/19"
}

# Subnet for KMIs where kube-apiserver and other control
# plane applications run, maximum 9 nodes.
variable "kmi_cidr" {
  description = "Kubernetes control plane subnet CIDR"
  default     = "172.31.4.0/22"
}

# Subnet for KMI load balancer.
variable "kmilb_cidr" {
  description = "Kubernetes control plane LB subnet CIDR"
  default     = "172.31.2.0/23"
}

# Subnet for worker nodes, maximum 128 nodes.
variable "worker_cidr" {
  description = "K8s worker subnet CIDR"
  default     = "172.31.8.0/21"
}

# Subnet for worker load balancer (for use by CCM).
variable "workerlb_cidr" {
  description = "K8s worker LB subnet CIDR"
  default     = "172.31.0.0/23"
}

# Subnet for pod communication
variable "pod_cidr" {
  description = "K8s pod communication subnet CIDR"
  default     = "172.31.16.0/20"
}

# Flag to Enable private endpoint
variable "enable_private_endpoint" {
  description = "Flag to create private control plane endpoint/service-lb"
  type = bool
  default = false
  nullable = false
}

terraform.tfvars

このファイルは、variables.tfで作成された一部の変数に値を割り当てます。 また、ワーカー・ノードおよびワーカー・ロード・バランサにアクセスするためのセキュリティ・リスト・ルールも定義します。

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

# Tenancy ocid from the above profile.
tenancy_ocid = "ocid1.tenancy.unique_ID"

# Compartment in which to build the OKE cluster.
compartment_id = "ocid1.compartment.unique_ID"

# Display-name for the OKE VCN.
vcn_name = "oketest"

# CIDR of clients that are allowed to contact the Kubernetes apiserver.
kube_client_cidr = "10.0.0.0/8"

# Security list rules for who is allowed to contact the worker load balancer
# (adjust for your applications).
worker_lb_ingress_rules = [
  {
    source   = "10.0.0.0/8"
    port_min = 80
    port_max = 80
  },
  {
    source   = "10.0.0.0/8"
    port_min = 443
    port_max = 443
  },
]

# Security list rules for who is allowed to contact worker nodes directly.
# This example allows 10/8 to contact the default nodeport range.
worker_ingress_rules = [
  {
    source   = "10.0.0.0/8"
    port_min = 30000
    port_max = 32767
  },
]

provider.tf

このファイルは、OCIプロバイダを使用するために必要です。 このファイルは、OCIプロファイル構成ファイルを使用してOCIモジュールを初期化します。

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

main.tf

このファイルは、使用するプロバイダ(oracle/oci)を指定し、複数のセキュリティ・リスト・ルールを定義し、必要なローカル変数を初期化します。

使用するOCIプロバイダのバージョンは、v4.50.0以上で、v6.36.0以下である必要があります。

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

locals {
  kube_internal_cidr = "253.255.0.0/16"
  worker_lb_ingress_rules = var.worker_lb_ingress_rules
  worker_ingress_rules = flatten([var.worker_ingress_rules, [
    {
      source   = var.kmi_cidr
      port_min = 22
      port_max = 22
    },
    {
      source   = var.worker_cidr
      port_min = 22
      port_max = 22
    },
    {
      source   = var.worker_cidr
      port_min = 10250
      port_max = 10250
    },
    {
      source   = var.worker_cidr
      port_min = 10256
      port_max = 10256
    },
    {
      source   = var.worker_cidr
      port_min = 30000
      port_max = 32767
    },
    {
      source   = var.workerlb_cidr
      port_min = 10256
      port_max = 10256
    },
    {
      source   = var.workerlb_cidr
      port_min = 30000
      port_max = 32767
    },
    {
      source   = var.kmi_cidr
      port_min = 10250
      port_max = 10250
    },
    {
      source   = var.kmi_cidr
      port_min = 10256
      port_max = 10256
    },
    {
      source   = var.pod_cidr
      port_min = 30000
      port_max = 32767
    },
  ]])
  kmi_lb_ingress_rules = [
    {
      source   = local.kube_internal_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.kube_client_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.kmi_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.worker_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.worker_cidr
      port_min = 12250
      port_max = 12250
    },
    {
      source   = var.pod_cidr
      port_min = 12250
      port_max = 12250
    },
  ]
  kmi_ingress_rules = [
    {
      source   = var.kube_client_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.kmilb_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.kmilb_cidr
      port_min = 12250
      port_max = 12250
    },
    {
      source   = var.worker_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.worker_cidr
      port_min = 12250
      port_max = 12250
    },
    {
      source   = var.kmi_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.kmi_cidr
      port_min = 2379
      port_max = 2381
    },
    {
      source   = var.kmi_cidr
      port_min = 8044
      port_max = 8045
    },
    {
      source   = var.kmi_cidr
      port_min = 10250
      port_max = 10250
    },
    {
      source   = var.kmi_cidr
      port_min = 10257
      port_max = 10260
    },
    {
      source   = var.pod_cidr
      port_min = var.kubernetes_api_port
      port_max = var.kubernetes_api_port
    },
    {
      source   = var.pod_cidr
      port_min = 12250
      port_max = 12250
    },
  ]
  pod_ingress_rules = [
    {
      source   = var.vcn_cidr
      port_min = 22
      port_max = 22
    },
    {
      source   = var.workerlb_cidr
      port_min = 10256
      port_max = 10256
    },
    {
      source   = var.worker_cidr
      port_min = 10250
      port_max = 10250
    },
    {
      source   = var.worker_cidr
      port_min = 10256
      port_max = 10256
    },
    {
      source   = var.worker_cidr
      port_min = 80
      port_max = 80
    },
  ]
}

oke_vcn.tf

このファイルは、VCN、NATゲートウェイ、インターネット・ゲートウェイ、プライベート・ルート表およびパブリック・ルート表を定義します。 プライベート・ルート表は、VCNのデフォルト・ルート表です。

resource "oci_core_vcn" "oke_vcn" {
  cidr_block     = var.vcn_cidr
  dns_label      = var.vcn_name
  compartment_id = var.compartment_id
  display_name   = "${var.vcn_name}-vcn"
}

resource "oci_core_nat_gateway" "vcn_ngs" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id
  display_name = "VCN nat g6s"
}

resource "oci_core_internet_gateway" "vcn_igs" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id
  display_name = "VCN i6t g6s"
  enabled      = true
}

resource "oci_core_default_route_table" "default_private" {
  manage_default_resource_id = oci_core_vcn.oke_vcn.default_route_table_id
  display_name               = "Default - private"
}

resource "oci_core_default_route_table" "private" {
  manage_default_resource_id = oci_core_vcn.oke_vcn.default_route_table_id
  display_name               = "Default - private"

  route_rules {
    destination       = "0.0.0.0/0"
    destination_type  = "CIDR_BLOCK"
    network_entity_id = oci_core_nat_gateway.vcn_ngs.id
  }
}

resource "oci_core_route_table" "public" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  display_name = "public"
  route_rules {
    destination       = "0.0.0.0/0"
    destination_type  = "CIDR_BLOCK"
    network_entity_id = oci_core_internet_gateway.vcn_igs.id
  }
}

oke_pod_seclist.tf

このファイルは、ポッド・サブネットのセキュリティ・リストを定義します。 このセキュリティ・リストのルールは、このセット内の他のTerraformファイルで定義されています。

resource "oci_core_security_list" "pod" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  display_name = "${var.vcn_name}-pod"

  dynamic "ingress_security_rules" {
    iterator = port
    for_each = local.pod_ingress_rules

    content {
      source      = port.value.source
      source_type = "CIDR_BLOCK"
      protocol    = "6"
      tcp_options {
        min = port.value.port_min
        max = port.value.port_max
      }
    }
  }

   dynamic "ingress_security_rules" {
    iterator = icmp_type
    for_each = [0, 8]

    content {
      # ping from VCN; unreachable/TTL from anywhere
      source      = var.kmi_cidr
      source_type = "CIDR_BLOCK"
      protocol    = "1"
      icmp_options {
        type = icmp_type.value
      }
    }
  }

  dynamic "ingress_security_rules" {
    for_each = var.pod_cidr != null ? [var.pod_cidr] : []

    content {
      source      = ingress_security_rules.value
      source_type = "CIDR_BLOCK"
      protocol    = "all"
    }
  }
}

oke_pod_subnet.tf

このファイルはポッド・サブネットを定義します。

重要:

podサブネットの名前は、正確にpodである必要があります。

resource "oci_core_subnet" "pod" {
  cidr_block     = var.pod_cidr
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  display_name               = "pod"
  dns_label                  = "pod"
  prohibit_public_ip_on_vnic = true

  security_list_ids = [
    oci_core_default_security_list.oke_vcn.id,
    oci_core_security_list.pod.id
  ]
}

oke_worker_seclist.tf

このファイルは、ワーカー・サブネットとワーカー・ロード・バランサ・サブネットの両方のセキュリティ・リストを定義します。 これらのセキュリティ・リストのルールは、このセットの他のTerraformファイルで定義されています。

resource "oci_core_security_list" "workerlb" {
  display_name   = "${var.vcn_name}-workerlb"
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  dynamic "ingress_security_rules" {
    iterator = port
    for_each = local.worker_lb_ingress_rules

    content {
      source      = port.value.source
      source_type = "CIDR_BLOCK"
      protocol    = "6"
      tcp_options {
        min = port.value.port_min
        max = port.value.port_max
      }
    }
  }
}

resource "oci_core_security_list" "worker" {
  display_name   = "${var.vcn_name}-worker"
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  dynamic "ingress_security_rules" {
    iterator = port
    for_each = local.worker_ingress_rules

    content {
      source      = port.value.source
      source_type = "CIDR_BLOCK"
      protocol    = "6"
      tcp_options {
        min = port.value.port_min
        max = port.value.port_max
      }
    }
  }

  dynamic "ingress_security_rules" {
    iterator = icmp_type
    for_each = [0, 8]

    content {
      # ping from VCN; unreachable/TTL from anywhere
      source      = var.kmi_cidr
      source_type = "CIDR_BLOCK"
      protocol    = "1"
      icmp_options {
        type = icmp_type.value
      }
    }
  }
}

oke_worker_subnet.tf

このファイルは、ワーカー・ロード・バランサおよびワーカー・ロード・バランサ・サブネットを定義します。 ワーカー・ロード・バランサ・サブネットの名前はservice-lbです。

resource "oci_core_subnet" "worker" {
  cidr_block     = var.worker_cidr
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  display_name               = "worker"
  dns_label                  = "worker"
  prohibit_public_ip_on_vnic = true

  security_list_ids = [
    oci_core_default_security_list.oke_vcn.id,
    oci_core_security_list.worker.id
  ]
}

resource "oci_core_subnet" "worker_lb" {
  cidr_block     = var.workerlb_cidr
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  display_name               = "service-lb"
  dns_label                  = "servicelb"
  prohibit_public_ip_on_vnic = var.enable_private_endpoint
  route_table_id             = var.enable_private_endpoint==false ? oci_core_route_table.public[0].id : oci_core_vcn.oke_vcn.default_route_table_id


  security_list_ids = [
    oci_core_default_security_list.oke_vcn.id,
    oci_core_security_list.workerlb.id
  ]
}

oke_kmi_seclist.tf

このファイルは、コントロール・プレーンおよびコントロール・プレーン・ロード・バランサ・サブネットのセキュリティ・リストを定義します。 このファイルは、VCNのデフォルト・セキュリティ・リストに加える更新も定義します。

resource "oci_core_default_security_list" "oke_vcn" {
  manage_default_resource_id = oci_core_vcn.oke_vcn.default_security_list_id

  egress_security_rules {
    destination      = "0.0.0.0/0"
    destination_type = "CIDR_BLOCK"
    protocol         = "all"
  }

  dynamic "ingress_security_rules" {
    iterator = icmp_type
    for_each = [3, 8, 11]

    content {
      # ping from VCN; unreachable/TTL from anywhere
      source      = (icmp_type.value == "8" ? var.vcn_cidr : "0.0.0.0/0")
      source_type = "CIDR_BLOCK"
      protocol    = "1"
      icmp_options {
        type = icmp_type.value
      }
    }
  }
}

resource "oci_core_security_list" "kmilb" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  display_name = "${var.vcn_name}-kmilb"

  dynamic "ingress_security_rules" {
    iterator = port
    for_each = local.kmi_lb_ingress_rules

    content {
      source      = port.value.source
      source_type = "CIDR_BLOCK"
      protocol    = "6"
      tcp_options {
        min = port.value.port_min
        max = port.value.port_max
      }
    }
  }

  dynamic "ingress_security_rules" {
    for_each = var.enable_private_endpoint ? [1] : []
    content {
      source   = var.kmilb_cidr
      source_type = "CIDR_BLOCK"
      protocol = "6"
      tcp_options {
        min = var.kubernetes_api_port
        max = var.kubernetes_api_port
      }
    }
  }
}

resource "oci_core_security_list" "kmi" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_vcn.oke_vcn.id

  display_name = "${var.vcn_name}-kmi"

  dynamic "ingress_security_rules" {
    iterator = port
    for_each = local.kmi_ingress_rules

    content {
      source      = port.value.source
      source_type = "CIDR_BLOCK"
      protocol    = "6"
      tcp_options {
        min = port.value.port_min
        max = port.value.port_max
      }
    }
  }
}

oke_kmi_subnet.tf

このファイルは、コントロール・プレーンおよびコントロール・プレーン・ロード・バランサ・サブネットを定義します。

重要:

kmiサブネットの名前は、正確にcontrol-planeである必要があります。

resource "oci_core_subnet" "kmi" {
  cidr_block                 = var.kmi_cidr
  compartment_id             = var.compartment_id
  display_name               = "control-plane"
  dns_label                  = "kmi"
  vcn_id                     = oci_core_vcn.oke_vcn.id
  prohibit_public_ip_on_vnic = true
  security_list_ids = [
    oci_core_default_security_list.oke_vcn.id,
    oci_core_security_list.kmi.id
  ]
}

resource "oci_core_subnet" "kmi_lb" {
  cidr_block                 = var.kmilb_cidr
  compartment_id             = var.compartment_id
  dns_label                  = "kmilb"
  vcn_id                     = oci_core_vcn.oke_vcn.id
  display_name               = "control-plane-endpoint"
  prohibit_public_ip_on_vnic = var.enable_private_endpoint
  route_table_id             = var.enable_private_endpoint==false ? oci_core_route_table.public[0].id : oci_core_default_route_table.default_private[0].id
  security_list_ids = [
    oci_core_default_security_list.oke_vcn.id,
    oci_core_security_list.kmilb.id
  ]
}

「VCNネイティブ・ポッド・ネットワーキング」 VCNの作成

リストされた順序で次のリソースを作成します:

  1. VCN

  2. ルート・ルール

    • パブリック・クラスタ:

      • インターネット・ゲートウェイおよびそのインターネット・ゲートウェイを参照するルート・ルールを含むルート表。

      • NATゲートウェイおよびそのNATゲートウェイを参照するルート・ルールを含むルート表。

    • プライベート・クラスタ:

      • ルート・ルールのないルート表。

      • (オプション)Dynamic Routing Gateway (DRG)は、OKE VCNをそのDRGにアタッチし、そのDRGを参照するルート・ルールを使用してルート表を作成します。 「プライベート・クラスタ」を参照してください。

      • (オプション)ローカル・ピアリング・ゲートウェイ(LPG)およびそのLPGを参照するルート・ルールを含むルート表。 「プライベート・クラスタ」を参照してください。

  3. セキュリティ・リスト VCNデフォルト・セキュリティ・リストの変更

リソース名およびCIDRブロックは値の例です。

VCN

VCNを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「VCNの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

この例では、次の入力を使用してVCNを作成します。 VCNは1つの連続したCIDRブロックをカバーします。 CIDRブロックは、VCNの作成後に変更できません。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: oketest-vcn

  • CIDRブロック: vcn_cidr

  • DNSラベル: oketest

    このラベルは、テナンシ内のすべてのVCN間で一意である必要があります。

  • --display-name: oketest-vcn

  • --cidr-blocks: '["vcn_cidr"]'

  • --dns-label: oketest

    このラベルは、テナンシ内のすべてのVCN間で一意である必要があります。

新しいVCNのOCIDを書き留めます。 このガイドの例では、このVCN OCIDはocid1.vcn.oke_vcn_idです。

次のステップ

  • 公共のインターネット・アクセス。 パブリックIPアドレスを使用してインターネットに接続するパブリック・サブネット上のトラフィックの場合、インターネット・ゲートウェイおよびそのインターネット・ゲートウェイを参照するルート・ルールを作成します。

  • プライベート・インターネット・アクセス。 プライベートIPアドレスを公開せずにインターネットに接続する必要があるプライベート・サブネット上のトラフィックの場合は、そのNATゲートウェイを参照するNATゲートウェイおよびルート・ルールを作成します。

  • VCN-onlyアクセス。 通信を同じVCN上の他のリソースのみに制限するには、ルート・ルールがないデフォルト・ルート表を使用します。

  • 別のVCN内のインスタンス。 クラスタと別のVCNで実行されているインスタンス間の通信を有効にするには、ローカル・ピアリング・ゲートウェイ(LPG)とそのLPGを参照するルート・ルールを作成します。

  • データ・センターのIPアドレス空間。 クラスタとオンプレミス・ネットワークIPアドレス空間間の通信を有効にするには、Dynamic Routing Gateway (DRG)とそのDRGを参照するルート・ルールを作成します。

VCNプライベート・ルート表

VCNの作成時に作成されたデフォルト・ルート表を編集します。 ルート表の名前をvcn_privateに変更します。 このルート表にはルート・ルールがありません。 ルート・ルールを追加しないでください。

NATプライベート・ルート表

NATゲートウェイおよびNATゲートウェイを参照するルート・ルールを含むルート表を作成します。

NATゲートウェイ

NATゲートウェイを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「NATゲートウェイを介したパブリック接続の有効化」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

プライベート・ルート・ルールに割り当てるためのNATゲートウェイの名前とOCIDを書き留めます。

プライベート・ルート・ルール

ルート表を作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「ルート表の操作」の「ルート表の作成」の手順を使用します。 Terraform入力については、「例Terraformフランネル・オーバーレイ・ネットワーク・リソースのスクリプト」を参照してください。

この例では、次の入力を使用して、前のステップで作成したNATゲートウェイを参照するプライベート・ルート・ルールを含むルート表を作成します。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: nat_private

ルート・ルール

  • ターゲット・タイプ: NATゲートウェイ

  • NATゲートウェイ: 前のステップで作成したNATゲートウェイの名前

  • CIDRブロック: 0.0.0.0/0

  • 摘要: NATプライベート・ルート・ルール

  • --display-name: nat_private

--route-rules

  • networkEntityId: 前のステップで作成したNATゲートウェイのOCID

  • destinationType: CIDR_BLOCK

  • destination: 0.0.0.0/0

  • description: NATプライベート・ルート・ルール

プライベート・サブネットへの割当て用のこのルート表の名前とOCIDを書き留めます。

ローカル・ピアリング・ゲートウェイ

ローカル・ピアリング・ゲートウェイ(LPG)と、LPGを参照するルート・ルールを含むルート表を作成します。

ローカル・ピアリング・ゲートウェイ

LPGを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「ネットワーク」の章の「ローカル・ピアリング・ゲートウェイを介したVCNsの接続」の手順を使用します。

プライベート・ルート・ルールへの割当て用のLPGの名前およびOCIDを書き留めます。

プライベート・ルート・ルール

ルート表を作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「ルート表の操作」の「ルート表の作成」の手順を使用します。

この例では、次の入力を使用して、前のステップで作成したLPGを参照するプライベート・ルート・ルールを含むルート表を作成します。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: lpg_rt

ルート・ルール

  • ターゲット・タイプ: ローカル・ピアリング・ゲートウェイ

  • ローカル・ピアリング・ゲートウェイ: 前のステップで作成したLPGの名前

  • CIDRブロック: CIDR_for_the_second_VCN

  • 摘要: LPGプライベート・ルート・ルール

  • --display-name: lpg_rt

--route-rules

  • networkEntityId: 前のステップで作成したLPGのOCID

  • destinationType: CIDR_BLOCK

  • destination: CIDR_for_the_second_VCN

  • description: LPGプライベート・ルート・ルール

"control-plane-endpoint"サブネット(「VCNネイティブ・ポッド・ネットワーキング・コントロール・プレーン・ロード・バランサ・サブネットの作成」)への割当て用に、このルート表の名前とOCIDを書き留めます。

宛先としてOKE VCN CIDRを指定して、2番目のVCN (ピアリングされたVCN)に同じルート・ルールを追加します。

動的ルーティング・ゲートウェイ

動的ルーティング・ゲートウェイ(DRG)と、DRGを参照するルート・ルールを含むルート表を作成します。

動的ルーティング・ゲートウェイ

DRGを作成し、そのDRGにOKE VCNをアタッチするには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「ネットワーク」章の「Dynamic Routing Gatewayを介したオンプレミス・ネットワークへの接続」の手順を使用します。 OKE VCNコンパートメントにDRGを作成し、そのDRGにOKE VCNをアタッチします。

プライベート・ルート・ルールへの割当て用のDRGの名前およびOCIDを書き留めます。

プライベート・ルート・ルール

ルート表を作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「ルート表の操作」の「ルート表の作成」の手順を使用します。

この例では、次の入力を使用して、前のステップで作成したDRGを参照するプライベート・ルート・ルールを含むルート表を作成します。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: drg_rt

ルート・ルール

  • ターゲット・タイプ: 動的ルーティング・ゲートウェイ

  • 動的ルーティング: 前のステップで作成したDRGの名前

  • CIDRブロック: 0.0.0.0/0

  • 摘要: DRGプライベート・ルート・ルール

  • --display-name: drg_rt

--route-rules

  • networkEntityId: 前のステップで作成したDRGのOCID

  • destinationType: CIDR_BLOCK

  • destination: 0.0.0.0/0

  • description: DRGプライベート・ルート・ルール

"control-plane-endpoint"サブネット(「VCNネイティブ・ポッド・ネットワーキング・コントロール・プレーン・ロード・バランサ・サブネットの作成」)への割当て用に、このルート表の名前とOCIDを書き留めます。

パブリック・ルート表

インターネット・ゲートウェイを参照するルート・ルールを使用して、インターネット・ゲートウェイおよびルート表を作成します。

インターネット・ゲートウェイ

インターネット・ゲートウェイを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「インターネット・ゲートウェイを介したパブリック・アクセスの提供」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

パブリック・ルート・ルールに割り当てるためのインターネット・ゲートウェイの名前とOCIDを書き留めます。

公開ルート・ルール

ルート表を作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「ルート表の操作」の「ルート表の作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

この例では、次の入力を使用して、前のステップで作成したインターネット・ゲートウェイを参照するパブリック・ルート・ルールを含むルート表を作成します。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: パブリック

ルート・ルール

  • ターゲット・タイプ: インターネット・ゲートウェイ

  • インターネット・ゲートウェイ: 前のステップで作成したインターネット・ゲートウェイの名前

  • CIDRブロック: 0.0.0.0/0

  • 説明: OKEパブリック・ルート・ルール

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: パブリック

--route-rules

  • networkEntityId: 前のステップで作成したインターネット・ゲートウェイのOCID

  • destinationType: CIDR_BLOCK

  • destination: 0.0.0.0/0

  • description: OKE public route rule

パブリック・サブネットへの割当て用のこのルート表の名前とOCIDを書き留めます。

VCNデフォルト・セキュリティ・リスト

次の表に示す入力を使用して、デフォルトのセキュリティ・リストを変更します。 すべてのデフォルト・ルールを削除し、次の表に示すルールを作成します。

セキュリティ・リストを変更するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「セキュリティ・リストを使用したトラフィックの制御」にある「セキュリティ・リストの更新」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: oketest-vcnのデフォルト・セキュリティ・リスト

--security-list-id: ocid1.securitylist.default_securitylist_id

1つのエグレス・セキュリティ・ルール:

  • ステートレス: ボックスのアンチェック

  • エグレスCIDR: 0.0.0.0/0

  • IPプロトコル: すべてのプロトコル

  • 説明: "Allow all outgoing traffic."

1つのエグレス・セキュリティ・ルール:

--egress-security-rules

  • isStateless: false

  • destination: 0.0.0.0/0

  • destinationType: CIDR_BLOCK

  • protocol: all

  • description: "Allow all outgoing traffic."

3つのイングレス・セキュリティ・ルール:

3つのイングレス・セキュリティ・ルール:

--ingress-security-rules

イングレス・ルール 1

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: vcn_cidr

  • IPプロトコル: ICMP

    • パラメータ・タイプ: 8: エコー

  • 説明: "Allow ping from VCN."

イングレス・ルール 1

  • isStateless: false

  • source: vcn_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 1

  • icmpOptions

    • type: 8

  • description: "Allow ping from VCN."

イングレス・ルール 2

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: 0.0.0.0/0

  • IPプロトコル: ICMP

    • パラメータ・タイプ: 3: 宛先に到達できません

  • 摘要: "任意のソースからの受信リクエストをブロックします。"。

イングレス・ルール 2

  • isStateless: false

  • source: 0.0.0.0/0

  • sourceType: CIDR_BLOCK

  • protocol: 1

  • icmpOptions

    • type: 3

  • description: "任意のソースからの受信リクエストをブロックします。"。

イングレス・ルール 3

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: 0.0.0.0/0

  • IPプロトコル: ICMP

    • パラメータ・タイプ: 11: 時間超過

  • 摘要: "Time exceeded".

イングレス・ルール 3

  • isStateless: false

  • source: 0.0.0.0/0

  • sourceType: CIDR_BLOCK

  • protocol: 1

  • icmpOptions

    • type: 11

  • description: "Time exceeded."

サブネットへの割当て用のこのデフォルト・セキュリティ・リストの名前とOCIDを書き留めます。

「VCNネイティブ・ポッド・ネットワーキング」ポッド・サブネットの作成

このトピックの手順では、コントロール・プレーン・ノードで実行されているポッドのプライベートIPアドレスを提供する、ポッドという名前のポッド・サブネットをVCNに作成します。 このサブネットのIPアドレスの数は、コントロール・プレーン・サブネットのIPアドレスの数以上である必要があります。 ポッド・サブネットはプライベート・サブネットである必要があります。

ポッド・サブネットは、ポッド間の通信と、プライベート・ポッドIPアドレスを使用した個々のポッドへの直接アクセスをサポートします。 ポッド・サブネットはプライベートである必要があります。 ポッド・サブネットにより、ポッドは、同じワーカー・ノード上の他のポッド、他のワーカー・ノード上のポッド、OCIサービス(サービス・ゲートウェイ経由)およびインターネット(NATゲートウェイ経由)と通信できます。

リストされた順序で次のリソースを作成します:

  1. Podセキュリティ・リスト

  2. サブネット

Podセキュリティ・リストの作成

セキュリティ・リストを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「セキュリティ・リストを使用したトラフィックの制御」にある「セキュリティ・リストの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

次の表に示すセキュリティ・ルールは、ポッドに直接接続できるトラフィックを定義します。 これらのセキュリティ・ルールは、ネットワーク・セキュリティ・グループ(NSG)の一部として、またはセキュリティ・リストで使用します。 Oracleでは、NSGを使用することをお薦めします。 「セキュリティのベスト・プラクティス」を参照してください。

セキュリティ・ルールは、ノード・プールに指定されたポッド・サブネットに接続されているすべてのワーカー・ノードのすべてのポッドに適用されます。

ルーティング・ルールおよびルート表で指定されたルーティング・ポリシーに基づいて、受信リクエストをポッドにルーティングします。 「VCNネイティブ・ポッド・ネットワーキングVCNの作成」で定義されているルート表を参照してください。

この例では、ポッド・サブネット・セキュリティ・リストに次の入力を使用します。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: pod-seclist

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: pod-seclist

1つのエグレス・セキュリティ・ルール:

  • ステートレス: ボックスのアンチェック

  • エグレスCIDR: 0.0.0.0/0

  • IPプロトコル: すべてのプロトコル

  • 説明: "Allow all outgoing traffic."

1つのエグレス・セキュリティ・ルール:

--egress-security-rules

  • isStateless: false

  • destination: 0.0.0.0/0

  • destinationType: CIDR_BLOCK

  • protocol: all

  • description: "Allow all outgoing traffic."

6つのイングレス・セキュリティ・ルール:

6つのイングレス・セキュリティ・ルール:

--ingress-security-rules

イングレス・ルール 1

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: vcn_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 22

  • 摘要: "VCN内のすべてのサブネットからポッド・サブネットへのSSH接続を許可します。"。

イングレス・ルール 1

  • isStateless: false

  • source: vcn_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 22

    • min: 22

  • description: "VCN内のすべてのサブネットからポッド・サブネットへのSSH接続を許可します。"。

イングレス・ルール 2

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: workerlb_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10256

  • 摘要: ワーカー・ロード・バランサがポッドに接続できるようにします。

イングレス・ルール 2

  • isStateless: false

  • source: workerlb_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10256

    • min: 10256

  • description: ワーカー・ロード・バランサがポッドに接続できるようにします。

イングレス・ルール 3

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10250

  • 摘要: Kubernetes APIエンドポイントに(ワーカー・ノードを介して)通信をポッドできるようにします。

イングレス・ルール 3

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10250

    • min: 10250

  • description: Kubernetes APIエンドポイントに(ワーカー・ノードを介して)通信をポッドできるようにします。

イングレス・ルール 4

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10256

  • 摘要: "ロード・バランサまたはネットワーク・ロード・バランサが(ワーカー・サブネットを介して)kube-proxyポッドと通信することを許可します。"。

イングレス・ルール 4

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10256

    • min: 10256

  • description: "ロード・バランサまたはネットワーク・ロード・バランサが(ワーカー・サブネットを介して)kube-proxyポッドと通信することを許可します。"。

イングレス・ルール 5

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 80

  • 摘要: ワーカー・ノードがポッドに接続できるようにします。

このイングレスはオプションです。 このポートはエンド・ユーザー・アプリケーションに対して開いています。 このルールは、デプロイされるアプリケーションによって異なる場合があります。

イングレス・ルール 5

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 80

    • min: 80

  • description: ワーカー・ノードがポッドに接続できるようにします。

このイングレスはオプションです。 このポートはエンド・ユーザー・アプリケーションに対して開いています。 このルールは、デプロイされるアプリケーションによって異なる場合があります。

イングレス・ルール 6

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: pod_cidr

  • IPプロトコル: すべてのプロトコル

  • 摘要: 「ポッドCIDRが自分自身と通信できるようにします。」。

イングレス・ルール 6

  • isStateless: false

  • source: pod_cidr

  • sourceType: CIDR_BLOCK

  • protocol: all

  • description: 「ポッドCIDRが自分自身と通信できるようにします。」。

Podサブネットの作成

サブネットを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「サブネットの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

この例では、次の入力を使用してポッド・サブネットを作成します。 「VCNネイティブ・ポッド・ネットワーキングVCNの作成」で作成されたVCNのOCIDを使用します。 ポッド・サブネットは、VCNを作成したのと同じコンパートメントに作成します。

重要:

このサブネットの名前は、正確に「pod」である必要があります。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: ポッド

  • CIDRブロック: pod_cidr

  • ルート表: リストから「nat_private」を選択

  • プライベート・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: ポッド

  • セキュリティ・リスト: リストから「pod-seclist」と「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: pod

  • --cidr-block: pod_cidr

  • --dns-label: pod

  • --prohibit-public-ip-on-vnic: true

  • --route-table-id: 「nat_private」ルート表のOCID

  • --security-list-ids: 「pod-seclist」セキュリティ・リストのOCIDsと「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リスト

「VCNネイティブ・ポッド・ネットワーキング」ワーカー・サブネットの作成

リストされた順序で次のリソースを作成します:

  1. ワーカー・セキュリティ・リスト

  2. ワーカー・サブネット

ワーカー・セキュリティ・リストの作成

セキュリティ・リストを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「セキュリティ・リストを使用したトラフィックの制御」にある「セキュリティ・リストの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

このセキュリティ・リストは、ワーカー・ノードに直接接続できるトラフィックを定義します。

この例では、ワーカー・サブネット・セキュリティ・リストに次の入力を使用します。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: worker-seclist

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: worker-seclist

1つのエグレス・セキュリティ・ルール:

  • ステートレス: ボックスのアンチェック

  • エグレスCIDR: 0.0.0.0/0

  • IPプロトコル: すべてのプロトコル

  • 説明: "Allow all outgoing traffic."

1つのエグレス・セキュリティ・ルール:

--egress-security-rules

  • isStateless: false

  • destination: 0.0.0.0/0

  • destinationType: CIDR_BLOCK

  • protocol: all

  • description: "Allow all outgoing traffic."

10個のイングレス・セキュリティ・ルール:

10個のイングレス・セキュリティ・ルール:

--ingress-security-rules

イングレス・ルール 1

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 22

  • 摘要: "コントロール・プレーン・サブネットからのSSH接続を許可"。

イングレス・ルール 1

  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 22

    • min: 22

  • description: "コントロール・プレーン・サブネットからのSSH接続を許可"。

イングレス・ルール 2

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 22

  • 摘要: ワーカー・サブネットからのSSH接続を許可します。

イングレス・ルール 2

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 22

    • min: 22

  • description: ワーカー・サブネットからのSSH接続を許可します。

イングレス・ルール 3

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10250

  • 摘要: Kubernetes APIエンドポイントからワーカー・ノードへの通信を許可します。

イングレス・ルール 3

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10250

    • min: 10250

  • description: Kubernetes APIエンドポイントからワーカー・ノードへの通信を許可します。

イングレス・ルール 4

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10256

  • 摘要: ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信することを許可します。

イングレス・ルール 4

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10256

    • min: 10256

  • description: ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信することを許可します。

イングレス・ルール 5

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 30000-32767

  • 摘要: ワーカー・ノードへのトラフィックを許可します。

イングレス・ルール 5

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 32767

    • min: 30000

  • description: ワーカー・ノードへのトラフィックを許可します。

イングレス・ルール 6

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: workerlb_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10256

  • 摘要: ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信することを許可します。

イングレス・ルール 6

  • isStateless: false

  • source: workerlb_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10256

    • min: 10256

  • description: ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信することを許可します。

イングレス・ルール 7

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: workerlb_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 30000-32767

  • 摘要: ワーカー・ノードがネットワーク・ロード・バランサを介して接続を受信できるようにします。

イングレス・ルール 7

  • isStateless: false

  • source: workerlb_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 32767

    • min: 30000

  • description: ワーカー・ノードがネットワーク・ロード・バランサを介して接続を受信できるようにします。

イングレス・ルール 8

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10250

  • 摘要: Kubernetes APIエンドポイントからワーカー・ノードへの通信を許可します。

イングレス・ルール 8

  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10250

    • min: 10250

  • description: Kubernetes APIエンドポイントからワーカー・ノードへの通信を許可します。

イングレス・ルール 9

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10256

  • 摘要: ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信することを許可します。

イングレスRule9

  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10256

    • min: 10256

  • description: ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信することを許可します。

イングレス・ルール 10

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: pod_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 30000-32767

  • 摘要: ワーカー・ノードがポッド・サブネットを介して接続を受信できるようにします。

イングレス・ルール 10

  • isStateless: false

  • source: pod_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 32767

    • min: 30000

  • description: ワーカー・ノードがポッド・サブネットを介して接続を受信できるようにします。

ワーカー・サブネットの作成

サブネットを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「サブネットの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

この例では、次の入力を使用してワーカー・サブネットを作成します。 「VCNネイティブ・ポッド・ネットワーキングVCNの作成」で作成されたVCNのOCIDを使用します。 VCNを作成したのと同じコンパートメントにワーカー・サブネットを作成します。

NATプライベート・ワーカー・サブネットまたはVCNプライベート・ワーカー・サブネットを作成します。 VCN外部と通信するためのNATプライベート・ワーカー・サブネットを作成します。

表4-13 NATプライベート・ワーカー・サブネットの作成

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: ワーカー

  • CIDRブロック: worker_cidr

  • ルート表: リストから「nat_private」を選択

  • プライベート・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: ワーカー

  • セキュリティ・リスト: リストから「worker-seclist」および「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: worker

  • --cidr-block: worker_cidr

  • --dns-label: worker

  • --prohibit-public-ip-on-vnic: true

  • --route-table-id: 「nat_private」ルート表のOCID

  • --security-list-ids: 「worker-seclist」セキュリティ・リストのOCIDsおよび「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リスト

次のプライベート・サブネットの違いは、NATプライベート・ルート表のかわりにVCNプライベート・ルート表が使用されることです。

表4-14 VCNプライベート・ワーカー・サブネットの作成

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: ワーカー

  • CIDRブロック: worker_cidr

  • ルート表: リストから「vcn_private」を選択

  • プライベート・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: ワーカー

  • セキュリティ・リスト: リストから「worker-seclist」および「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: worker

  • --cidr-block: worker_cidr

  • --dns-label: worker

  • --prohibit-public-ip-on-vnic: true

  • --route-table-id: 「vcn_private」ルート表のOCID

  • --security-list-ids: 「worker-seclist」セキュリティ・リストのOCIDsおよび「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リスト

「VCNネイティブ・ポッド・ネットワーキング」ワーカー・ロード・バランサ・サブネットの作成

リストされた順序で次のリソースを作成します:

  1. ワーカー・ロード・バランサ・セキュリティ・リスト

  2. ワーカー・ロード・バランサ・サブネット

ワーカー・ロード・バランサ・セキュリティ・リストの作成

セキュリティ・リストを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「セキュリティ・リストを使用したトラフィックの制御」にある「セキュリティ・リストの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

このセキュリティ・リストは、ワーカー・ロード・バランサに接続できるトラフィック(アプリケーションなど)を定義します。

この例では、ワーカー・ロード・バランサ・サブネット・セキュリティ・リストに次の入力を使用します。 これらのソースと宛先は例です; これらを自分のアプリケーション用に調整してください。

ノート:

コンテナ化されたアプリケーションの外部ロード・バランサ(「コンテナ化されたアプリケーションの公開」を参照)を作成する場合は、必ずそのロード・バランサ・サービスのフロントエンド・ポートをこのセキュリティ・リストに追加してください。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: workerlb-seclist

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: workerlb-seclist

1つのエグレス・セキュリティ・ルール:

  • ステートレス: ボックスのアンチェック

  • エグレスCIDR: 0.0.0.0/0

  • IPプロトコル: すべてのプロトコル

  • 説明: "Allow all outgoing traffic."

1つのエグレス・セキュリティ・ルール:

--egress-security-rules

  • isStateless: false

  • destination: 0.0.0.0/0

  • destinationType: CIDR_BLOCK

  • protocol: all

  • description: "Allow all outgoing traffic."

2つのイングレス・セキュリティ・ルール:

2つのイングレス・セキュリティ・ルール:

--ingress-security-rules

イングレス・ルール 1

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kube_client_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 80

  • 説明: "Allow inbound traffic for applications."

イングレス・ルール 1

  • isStateless: false

  • source: kube_client_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 80

    • min: 80

  • description: "Allow inbound traffic for applications."

イングレス・ルール 2

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kube_client_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 443

  • 説明: "Allow inbound traffic for applications."

イングレス・ルール 2

  • isStateless: false

  • source: kube_client_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 443

    • min: 443

  • description: "Allow inbound traffic for applications."

ワーカー・ロード・バランサ・サブネットの作成

サブネットを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「サブネットの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

この例では、次の入力を使用してワーカー・ロード・バランサ・サブネットを作成します。 「VCNネイティブ・ポッド・ネットワーキングVCNの作成」で作成されたVCNのOCIDを使用します。 ワーカー・ロード・バランサ・サブネットを、VCNを作成したのと同じコンパートメントに作成します。

プライベートまたはパブリック・ワーカーのロード・バランサ・サブネットを作成します。 パブリック・クラスタで使用するパブリック・ワーカー・ロード・バランサ・サブネットを作成します。 プライベート・クラスタ内のアプリケーションを公開するには、プライベート・ワーカー・ロード・バランサ・サブネットを作成します。

表4-15 パブリック・ワーカー・ロード・バランサ・サブネットの作成

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: service-lb

  • CIDRブロック: workerlb_cidr

  • ルート表: リストから「public」を選択

  • パブリック・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: servicelb

  • セキュリティ・リスト: リストから「workerlb-seclist」および「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: service-lb

  • --cidr-block: workerlb_cidr

  • --dns-label: servicelb

  • --prohibit-public-ip-on-vnic: false

  • --route-table-id: パブリック・ルート表のOCID

  • --security-list-ids: 「workerlb-seclist」セキュリティ・リストのOCIDsおよび「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リスト

次のプライベート・サブネットの違いは、パブリック・ルート表のかわりにVCNプライベート・ルート表が使用されることです。

表4-16 VCNプライベート・ワーカー・ロード・バランサ・サブネットの作成

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: service-lb

  • CIDRブロック: workerlb_cidr

  • ルート表: リストから「vcn_private」を選択

  • プライベート・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: servicelb

  • セキュリティ・リスト: リストから「workerlb-seclist」および「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: service-lb

  • --cidr-block: workerlb_cidr

  • --dns-label: servicelb

  • --prohibit-public-ip-on-vnic: true

  • --route-table-id: 「vcn_private」ルート表のOCID

  • --security-list-ids: 「workerlb-seclist」セキュリティ・リストのOCIDsおよび「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リスト

「VCNネイティブ・ポッド・ネットワーキング」コントロール・プレーン・サブネットの作成

リストされた順序で次のリソースを作成します:

  1. コントロール・プレーン・セキュリティ・リスト

  2. コントロール・プレーン・サブネット

コントロール・プレーン・セキュリティ・リストの作成

セキュリティ・リストを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「セキュリティ・リストを使用したトラフィックの制御」にある「セキュリティ・リストの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

この例では、コントロール・プレーン・サブネット・セキュリティ・リストに次の入力を使用します。 kubernetes_api_portは、Kubernetes APIへのアクセスに使用されるポートです: ポート6443。 「VCNネイティブ・ポッド・ネットワーキングのワークロード・クラスタ・ネットワーク・ポート」も参照してください。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: kmi-seclist

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: kmi-seclist

1つのエグレス・セキュリティ・ルール:

  • ステートレス: ボックスのアンチェック

  • エグレスCIDR: 0.0.0.0/0

  • IPプロトコル: すべてのプロトコル

  • 説明: "Allow all outgoing traffic."

1つのエグレス・セキュリティ・ルール:

--egress-security-rules

  • isStateless: false

  • destination: 0.0.0.0/0

  • destinationType: CIDR_BLOCK

  • protocol: all

  • description: "Allow all outgoing traffic."

12のイングレス・セキュリティ・ルール:

12のイングレス・セキュリティ・ルール:

--ingress-security-rules

イングレス・ルール 1

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kube_client_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: クライアントがKubernetes APIと通信できるようにします。

イングレス・ルール 1
  • isStateless: false

  • source: kube_client_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: クライアントがKubernetes APIと通信できるようにします。

イングレス・ルール 2
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmilb_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: ロード・バランサがKubernetesコントロール・プレーンAPIと通信することを許可します。

イングレス・ルール 2
  • isStateless: false

  • source: kmilb_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: ロード・バランサがKubernetesコントロール・プレーンAPIと通信することを許可します。

イングレス・ルール 3
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmilb_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 12250

  • 摘要: Kubernetesワーカーに、コントロール・プレーン・ロード・バランサを介したKubernetes APIエンドポイント通信を許可します。

イングレス・ルール 3
  • isStateless: false

  • source: kmilb_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 12250

    • min: 12250

  • description: Kubernetesワーカーに、コントロール・プレーン・ロード・バランサを介したKubernetes APIエンドポイント通信を許可します。

イングレス・ルール 4
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: ワーカー・ノードがKubernetes APIにアクセスできるようにします。

イングレス・ルール 4
  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: ワーカー・ノードがKubernetes APIにアクセスできるようにします。

イングレス・ルール 5
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 12250

  • 摘要: KubernetesワーカーにKubernetes APIエンドポイント通信を許可します。

イングレス・ルール 5
  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 12250

    • min: 12250

  • description: KubernetesワーカーにKubernetes APIエンドポイント通信を許可します。

イングレス・ルール 6
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: コントロール・プレーンが自分自身に到達することを許可します。

イングレス・ルール 6
  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: コントロール・プレーンが自分自身に到達することを許可します。

イングレス・ルール 7
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 2379-2381

  • 摘要: コントロール・プレーンがetcdサービスおよびメトリックに到達することを許可します。 ポート2379および2380は、Kubernetesetcdサーバーと通信するために使用されます。 ポート2381は、Kubernetesによってetcdからメトリックを収集するために使用されます。

イングレス・ルール 7
  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 2381

    • min: 2379

  • description: コントロール・プレーンがetcdサービスおよびメトリックに到達することを許可します。 ポート2379および2380は、Kubernetesetcdサーバーと通信するために使用されます。 ポート2381は、Kubernetesによってetcdからメトリックを収集するために使用されます。

イングレス・ルール 8
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 8044-8045

  • 摘要: "コントロール・プレーンがetcdサービス検出に到達することを許可します。"。

イングレス・ルール 8
  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 8045

    • min: 8044

  • description: "コントロール・プレーンがetcdサービス検出に到達することを許可します。"。

イングレス・ルール 9
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10250

  • 摘要: Kubernetes APIエンドポイントをコントロール・プレーン・ノード通信に許可します。

イングレス・ルール 9
  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10250

    • min: 10250

  • description: Kubernetes APIエンドポイントをコントロール・プレーン・ノード通信に許可します。

イングレス・ルール 10
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 10257-10260

  • 摘要: Kubernetesコンポーネントのインバウンド接続を許可します。

イングレス・ルール 10
  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 10260

    • min: 10257

  • description: Kubernetesコンポーネントのインバウンド接続を許可します。

イングレス・ルール 11
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: pod_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: ポッドがKubernetes APIと通信できるようにします。

イングレス・ルール 11
  • isStateless: false

  • source: pod_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: ポッドがKubernetes APIと通信できるようにします。

イングレス・ルール 12
  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: pod_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 12250

  • 摘要: KubernetesポッドをKubernetes APIエンドポイント通信に許可します。

イングレス・ルール 12
  • isStateless: false

  • source: pod_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 12250

    • min: 12250

  • description: KubernetesポッドをKubernetes APIエンドポイント通信に許可します。

コントロール・プレーン・サブネットの作成

サブネットを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「サブネットの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

次の入力を使用して、コントロール・プレーン・サブネットを作成します。 「VCNネイティブ・ポッド・ネットワーキングVCNの作成」で作成されたVCNのOCIDを使用します。 VCNを作成したのと同じコンパートメントにコントロール・プレーン・サブネットを作成します。

NATプライベート・コントロール・プレーン・サブネットまたはVCNプライベート・コントロール・プレーン・サブネットを作成します。 VCN外部と通信するためのNATプライベート・コントロール・プレーン・サブネットを作成します。

重要:

このサブネットの名前は、正確に"control-plane"である必要があります。

表4-17 データ・センターのプライベート・コントロール・プレーン・サブネットの作成

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: control-plane

  • CIDRブロック: kmi_cidr

  • ルート表: リストから「nat_private」を選択

  • プライベート・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: kmi

  • セキュリティ・リスト: リストから「kmi-seclist」と「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: control-plane

  • --cidr-block: kmi_cidr

  • --dns-label: kmi

  • --prohibit-public-ip-on-vnic: true

  • --route-table-id: 「nat_private」ルート表のOCID

  • --security-list-ids: 「kmi-seclist」セキュリティ・リストおよび「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リストのOCIDs

次のプライベート・サブネットの違いは、NATプライベート・ルート表のかわりにVCNプライベート・ルート表が使用されることです。

表4-18 VCNプライベート・コントロール・プレーン・サブネットの作成

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: control-plane

  • CIDRブロック: kmi_cidr

  • ルート表: リストから「vcn_private」を選択

  • プライベート・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: kmi

  • セキュリティ・リスト: リストから「kmi-seclist」と「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: control-plane

  • --cidr-block: kmi_cidr

  • --dns-label: kmi

  • --prohibit-public-ip-on-vnic: true

  • --route-table-id: 「vcn_private」ルート表のOCID

  • --security-list-ids: 「kmi-seclist」セキュリティ・リストおよび「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リストのOCIDs

「VCNネイティブ・ポッド・ネットワーキング」コントロール・プレーン・ロード・バランサ・サブネットの作成

リストされた順序で次のリソースを作成します:

  1. コントロール・プレーン・ロード・バランサ・セキュリティ・リスト

  2. コントロール・プレーン・ロード・バランサ・サブネット

コントロール・プレーンのロード・バランサ・セキュリティ・リストの作成

セキュリティ・リストを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「セキュリティ・リストを使用したトラフィックの制御」にある「セキュリティ・リストの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

コントロール・プレーン・ロード・バランサは、ポート6443のトラフィックを受け入れます。このガイドでは、kubernetes_api_portとも呼ばれます。 このセキュリティ・リストを調整して、ネットワークの実行場所からの接続のみを受け入れます。 ポート6443は、クラスタ・コントロール・プレーン・インスタンスおよびワーカー・インスタンスからの接続を受け入れる必要があります。

この例では、コントロール・プレーン・ロード・バランサ・サブネット・セキュリティ・リストに次の入力を使用します。

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: kmilb-seclist

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: kmilb-seclist

1つのエグレス・セキュリティ・ルール:

  • ステートレス: ボックスのアンチェック

  • エグレスCIDR: 0.0.0.0/0

  • IPプロトコル: すべてのプロトコル

  • 説明: "Allow all outgoing traffic."

1つのエグレス・セキュリティ・ルール:

--egress-security-rules

  • isStateless: false

  • destination: 0.0.0.0/0

  • destinationType: CIDR_BLOCK

  • protocol: all

  • description: "Allow all outgoing traffic."

6つのイングレス・セキュリティ・ルール:

6つのイングレス・セキュリティ・ルール:

--ingress-security-rules

イングレス・ルール 1:

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: 253.255.0.0/16

    この値は必須です。 このCIDR値は変更できません。

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: KubernetesコンテナがKubernetes APIと通信できるようにします。

イングレス・ルール 1:

  • isStateless: false

  • source: 253.255.0.0/16

    この値は必須です。 このCIDR値は変更できません。

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: KubernetesコンテナがKubernetes APIと通信できるようにします。

イングレス・ルール 2:

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kube_client_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: クライアントにKubernetesクラスタとの接続を許可します。

イングレス・ルール 2:

  • isStateless: false

  • source: kube_client_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: クライアントにKubernetesクラスタとの接続を許可します。

イングレス・ルール 3:

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: kmi_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: コントロール・プレーンがロード・バランサを介して自身に到達することを許可します。

イングレス・ルール 3:

  • isStateless: false

  • source: kmi_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: コントロール・プレーンがロード・バランサを介して自身に到達することを許可します。

イングレス・ルール 4:

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: kubernetes_api_port

  • 摘要: ワーカー・ノードがコントロール・プレーン・ロード・バランサを介してクラスタに接続できるようにします。

イングレス・ルール 4:

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: kubernetes_api_port

    • min: kubernetes_api_port

  • description: ワーカー・ノードがコントロール・プレーン・ロード・バランサを介してクラスタに接続できるようにします。

イングレス・ルール 5:

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: worker_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 12250

  • 摘要: Kubernetesワーカーに、ロード・バランサを介したKubernetes APIエンドポイント通信を許可します。

イングレス・ルール 5:

  • isStateless: false

  • source: worker_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 12250

    • min: 12250

  • description: Kubernetesワーカーに、ロード・バランサを介したKubernetes APIエンドポイント通信を許可します。

イングレス・ルール 6:

  • ステートレス: ボックスのアンチェック

  • イングレスCIDR: pod_cidr

  • IPプロトコル: TCP

    • 宛先ポート範囲: 12250

  • 摘要: ロード・バランサを介したKubernetes APIエンドポイント通信へのKubernetesポッドを許可します。

イングレス・ルール 6:

  • isStateless: false

  • source: pod_cidr

  • sourceType: CIDR_BLOCK

  • protocol: 6

  • tcpOptions

    destinationPortRange

    • max: 12250

    • min: 12250

  • description: ロード・バランサを介したKubernetes APIエンドポイント通信へのKubernetesポッドを許可します。

コントロール・プレーンの・ロード・バランサ・サブネットの作成

サブネットを作成するには、「Oracle Private Cloud Applianceユーザーズ・ガイド」「サブネットの作成」の手順を使用します。 Terraform入力については、「例Terraform VCNネイティブ・ポッド・ネットワーキング・リソースのスクリプト」を参照してください。

この例では、次の入力を使用して、コントロール・プレーン・ロード・バランサ・サブネットを作成します。 「VCNネイティブ・ポッド・ネットワーキングVCNの作成」で作成されたVCNのOCIDを使用します。 VCNを作成したのと同じコンパートメントにコントロール・プレーン・ロード・バランサ・サブネットを作成します。

プライベート・コントロール・プレーン・ロード・バランサまたはパブリック・コントロール・プレーン・ロード・バランサ・サブネットを作成します。 パブリック・クラスタで使用するパブリック・コントロール・プレーン・ロード・バランサ・サブネットを作成します。 プライベート・クラスタで使用するプライベート・コントロール・プレーン・ロード・バランサ・サブネットを作成します。

ローカル・ピアリング・ゲートウェイを使用してプライベート・クラスタをPrivate Cloud Appliance上の他のインスタンスに接続し、Dynamic Routing Gatewaysを使用してプライベート・クラスタをオンプレミスIPアドレス領域に接続する方法の詳細は、「プライベート・クラスタ」を参照してください。 プライベート・コントロール・プレーン・ロード・バランサ・サブネットを作成するには、次のいずれかのルート表を指定します(「フランネル・オーバーレイVCNの作成」を参照):

  • vcn_private

  • lpg_rt

  • drg_rt

表4-19 パブリック・コントロール・プレーン・ロード・バランサ・サブネットの作成

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: control-plane-endpoint

  • CIDRブロック: kmilb_cidr

  • ルート表: リストから「public」を選択

  • パブリック・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: kmilb

  • セキュリティ・リスト: リストから「kmilb-seclist」と「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: control-plane-endpoint

  • --cidr-block: kmilb_cidr

  • --dns-label: kmilb

  • --prohibit-public-ip-on-vnic: false

  • --route-table-id: パブリック・ルート表のOCID

  • --security-list-ids: 「kmilb-seclist」セキュリティ・リストおよび「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リストのOCIDs

次のプライベート・サブネットの違いは、パブリック・ルート表のかわりにVCNプライベート・ルート表が使用されることです。 ニーズに応じて、かわりにLPGルート表またはDRGルート表を指定できます。

表4-20 プライベート・コントロール・プレーン・ロード・バランサ・サブネットの作成

コンピュートWeb UIプロパティ OCI CLIプロパティ
  • 名前: control-plane-endpoint

  • CIDRブロック: kmilb_cidr

  • ルート表: リストから「vcn_private」を選択

  • プライベート・サブネット: ボックスのチェック

  • DNSホスト名:

    このサブネットでDNSホスト名を使用: ボックスのチェック

    • DNSラベル: kmilb

  • セキュリティ・リスト: リストから「kmilb-seclist」と「Default Security List for oketest-vcn」を選択

  • --vcn-id: ocid1.vcn.oke_vcn_id

  • --display-name: control-plane-endpoint

  • --cidr-block: kmilb_cidr

  • --dns-label: kmilb

  • --prohibit-public-ip-on-vnic: true

  • --route-table-id: 「vcn_private」ルート表のOCID

  • --security-list-ids: 「kmilb-seclist」セキュリティ・リストおよび「oketest-vcnのデフォルト・セキュリティ・リスト」セキュリティ・リストのOCIDs