Oracle Linux Cloud Native Environment (OLCNE)

Verrazzano用にOLCNEクラスタを設定する手順

OCLNEインストールの準備

Oracle Linux Cloud Native Environmentは、いくつかの異なるタイプの環境にインストールできます。物理的なオンプレミス・ハードウェアから仮想化クラウド・インフラストラクチャまで様々です。Oracle Linux Cloud Native Environmentのインストール手順では、ネットワーキングおよびコンピュート・リソースがすでに存在することを前提とします。基本的なインフラストラクチャ要件は、パブリックおよびプライベート・サブネットを持つネットワークと、それらのネットワークに接続された一連のホストです。

OCIの例

次に、Oracle Linux Cloud Native EnvironmentにインストールされたVerrazzanoの評価に使用できるOCIインフラストラクチャの例を示します。他の環境を使用する場合、容量と構成は同様である必要があります。

OCIコンソールのVCNウィザードを使用して、説明されているほとんどのネットワーク・インフラストラクチャを自動的に作成できます。次に示す、その他のセキュリティ・リスト/ルールは手動で追加する必要があります。示されているCIDR値はすべて例であり、必要に応じてカスタマイズできます。

仮想クラウド・ネットワーク(CIDR 10.0.0.0/16など)

パブリック・サブネット(CIDR 10.0.0.0/24など)

セキュリティ・リスト/イングレス・ルール

ステートレス 宛先 プロトコル ソース・ポート 宛先ポート タイプとコード 説明
いいえ 0.0.0.0/0 ICMP 3, 4 ICMPエラー
いいえ 10.0.0.0/16 ICMP 3 ICMPエラー
いいえ 0.0.0.0/0 TCP すべて 22 SSH
いいえ 0.0.0.0/0 TCP すべて 80 HTTPロード・バランサ
いいえ 0.0.0.0/0 TCP すべて 443 HTTPSロード・バランサ

セキュリティ・リスト/エグレス・ルール

ステートレス 宛先 プロトコル ソース・ポート 宛先ポート タイプとコード 説明
いいえ 10.0.1.0/24 TCP すべて 22 SSH
いいえ 10.0.1.0/24 TCP すべて 30080 HTTPロード・バランサ
いいえ 10.0.1.0/24 TCP すべて 30443 HTTPSロード・バランサ
いいえ 10.0.1.0/24 TCP すべて 31380 HTTPロード・バランサ
いいえ 10.0.1.0/24 TCP すべて 31390 HTTPSロード・バランサ

プライベート・サブネット(CIDR 10.0.1.0/24など)

セキュリティ・リスト/イングレス・ルール

ステートレス 宛先 プロトコル ソース・ポート 宛先ポート タイプとコード 説明
いいえ 0.0.0.0/0 ICMP 3, 4 ICMPエラー
いいえ 10.0.0.0/16 ICMP 3 ICMPエラー
いいえ 10.0.0.0/16 TCP すべて 22 SSH
いいえ 10.0.0.0/24 TCP すべて 30080 HTTPロード・バランサ
いいえ 10.0.0.0/24 TCP すべて 30443 HTTPSロード・バランサ
いいえ 10.0.0.0/24 TCP すべて 31380 HTTPロード・バランサ
いいえ 10.0.0.0/24 TCP すべて 31390 HTTPSロード・バランサ
いいえ 10.0.1.0/24UDP すべて 111 NFS
いいえ 10.0.1.0/24 TCP すべて 111 NFS
いいえ 10.0.1.0/24 UDP すべて 2048 NFS
いいえ 10.0.1.0/24 TCP すべて 2048-2050 NFS
いいえ 10.0.1.0/24 TCP すべて 2379-2380 Kubernetes etcd
いいえ 10.0.1.0/24 TCP すべて 6443 Kubernetes APIサーバー
いいえ 10.0.1.0/24 TCP すべて 6446 MySQL
いいえ 10.0.1.0/24 TCP すべて 8090-8091 OLCNEプラットフォーム・エージェント
いいえ 10.0.1.0/24 UDP すべて 8472 Flannel
いいえ 10.0.1.0/24 TCP すべて 10250-10255 Kubernetes Kublet

セキュリティ・リスト/エグレス・ルール

ステートレス 宛先 プロトコル ソース・ポート 宛先ポート タイプとコード 説明
いいえ 10.0.0.0/0 TCP すべてのエグレス・トラフィック

DHCPオプション

DNSタイプ
インターネットおよびVCNリゾルバ

ルート表

パブリック・サブネット・ルート表ルール

宛先 ターゲット
0.0.0.0/0 インターネット・ゲートウェイ

プライベート・サブネット・ルート表ルール

宛先 ターゲット
0.0.0.0/0 NATゲートウェイ
すべてのOCIサービス サービス・ゲートウェイ

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

NATゲートウェイ

サービス・ゲートウェイ

次のコンピュート・リソースは、Oracle Linux Cloud Native Environmentのスタート・ガイドに記載されているガイドラインに準拠しています。示されている属性(サブネット、RAM、シェイプおよびイメージなど)は、テスト済の推奨事項です。必要に応じて、その他の値を使用できます。

コンピュート・インスタンス

ロール サブネット 推奨RAM 互換性のあるVMシェイプ 互換性のあるVMイメージ
SSHジャンプ・ホスト パブリック 8GB VM.Standard.E2.1 Oracle Linux 7.8
OLCNEオペレータ・ホスト プライベート 16GB VM.Standard.E2.2 Oracle Linux 7.8
Kubernetesコントロール・プレーン・ノード プライベート 32GB VM.Standard.E2.4 Oracle Linux 7.8
Kubernetesワーカー・ノード1 プライベート 32GB VM.Standard.E2.4 Oracle Linux 7.8
Kubernetesワーカー・ノード2 プライベート 32GB VM.Standard.E2.4 Oracle Linux 7.8
Kubernetesワーカー・ノード3 プライベート 32GB VM.Standard.E2.4 Oracle Linux 7.8

OLCNEのインストール

スタート・ガイドの指示に従って、KubernetesモジュールとともにOracle Linux Cloud Native Environmentをデプロイします。

  • 単一のKubernetesコントロール・プレーン・ノードを使用します。
  • Kubernetes APIロード・バランサ(3.4.3)をスキップします。
  • プライベートCA証明書(3.5.3)を使用します。

Verrazzanoのインストールの準備

Verrazzano Oracle Linux Cloud Native Environmentのデプロイメントには、次のものが必要です:

  • 複数読取り/書込みマウントをサポートするデフォルトのストレージ・プロバイダ。たとえば、次のようなNFSサービスです:
    • Oracle Cloud Infrastructure File Storage Service。
    • NFS機能を提供するハードウェアベースのストレージ・システム。
  • クラスタ内のワーカー・ノードの前にロード・バランサを配置。
  • ロード・バランサを参照するDNSレコード。

ノート: ロード・バランサ・バックエンドのターゲット・ポートは、Verrazzanoをインストールするまで決定できません。
ロード・バランサはインストール前に作成できますが、インストール後の構成が必要です。

これらの要件を満たす例を次に示します。

ストレージ

Verrazzanoには、いくつかのコンポーネントに対する永続ストレージが必要です。この永続ストレージは、デフォルトのストレージ・クラスによって提供されます。Kubernetesには、多数の永続ストレージ・プロバイダが存在します。このガイドでは、事前に割り当てられた永続ボリュームに焦点を当てます。特に、提供されているサンプルは、OCIのNFSファイル・システムの使用を示します。

OCIの例

ストレージをKubernetesに公開するには、事前に作成する必要があります。OCIでは、これはファイル・システム・リソースを使用して行われます。OCIコンソールを使用して、新しいファイル・システムを作成します。新しいファイル・システム内に、エクスポートを作成します。Export Pathに使用される値は、後で使用されるため、覚えておいてください。また、後で使用するため、マウント・ターゲットのIP Addressも書き留めてください。

エクスポートの作成後、参照された永続ボリューム・フォルダ(/example/pv0001など)を作成する必要があります。OCIでは、エクスポートをKubernetesワーカー・ノードの1つでマウントし、フォルダを作成することで実行できます。次の例では、値/exampleExport Pathで、10.0.1.8はマウント・ターゲットのIP Addressです。Kubernetesワーカー・ノードの1つで、次のコマンドを実行する必要があります。これにより、9つの永続ボリューム・フォルダが作成されます。9つの永続ボリューム・フォルダの理由については、次の項で説明します。

$ sudo mount 10.0.1.8:/example /mnt
$ for x in {0001..0009}; do sudo mkdir -p /mnt/pv${x} && sudo chmod 777 /mnt/pv${x}; done

永続ボリューム

Verrazzanoでは、デフォルトのKubernetesストレージ・クラスが必要です。事前割当て済のPersistentVolume (NFSなど)を使用する場合は、永続ボリュームを次のように宣言する必要があります。nameの値はカスタマイズできますが、この後のPersistentVolumeのstorageClassNameの値と一致する必要があります。

  • デフォルトのStorageClassの作成
    $ cat << EOF | kubectl apply -f -
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: example-nfs
        annotations:
          storageclass.kubernetes.io/is-default-class: "true"
      provisioner: kubernetes.io/no-provisioner
      volumeBindingMode: WaitForFirstConsumer
    EOF
    
  • 必要な数のPersistentVolumeリソースを作成します。Verrazzanoシステムでは、それ自体に5つの永続ボリュームが必要です。次のコマンドは、9つの永続ボリュームを作成します。storageClassNameの値は、前述のStorageClass名と一致する必要があります。nameの値はカスタマイズできます。pathの値は、前述のエクスポートのExport Pathと前述の永続ボリューム・フォルダの組合せと一致する必要があります。serverの値は、ファイル・システム・サーバーの場所と一致するように変更する必要があります。
    $ for n in {0001..0009}; do cat << EOF | kubectl apply -f -
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv${n}
      spec:
        storageClassName: example-nfs
        accessModes:
          - ReadWriteOnce
          - ReadWriteMany
        capacity:
          storage: 50Gi
        nfs:
          path: /example/pv${n}
          server: 10.0.1.8
        volumeMode: Filesystem
        persistentVolumeReclaimPolicy: Recycle
    EOF
    done
    

ロード・バランサ

Oracle Linux Cloud Native EnvironmentのVerrazzanoでは、外部ロード・バランサ・サービスを使用します。これらは、VerrazzanoまたはKubernetesによって自動的に提供されることはありません。Kubernetesクラスタに使用されるサブネットの外部に、2つのロード・バランサをデプロイする必要があります。1つのロード・バランサは管理トラフィック用で、もう1つはアプリケーション・トラフィック用です。

ロード・バランサ・プロバイダごとに特定のステップは異なりますが、汎用構成およびOCIの例を次に示します。

汎用構成:

  • ターゲット・ホスト: Kubernetesワーカー・ノードのホスト名
  • ターゲット・ポート: 表を参照
  • 外部ポート: 表を参照
  • 分散: ラウンドロビン
  • ヘルス・チェック: TCP
管理ロード・バランサのバックエンド

各ロード・バランサ・バックエンドのターゲット・ポートを取得するには、Verrazzanoをインストールする必要があります。次の表では、これらのポートはTBDとマークされています。次のコマンドを実行して、NGINX Ingress Controllerのターゲット・ポートを取得します:

kubectl get service ingress-controller-ingress-nginx-controller -n ingress-nginx

PORT(S)列には、ポート80および443に関連付けられたターゲット・ポート(80:30080/TCP,443:30443など)が表示されます。
NGINX Ingress Controllerロード・バランサ・バックエンドには、これらのターゲット・ポート値を使用します。

サービス名 外部ポート ターゲット・ポート
ingress-controller-nginx-ingress-controller TCP 80 TBD
ingress-controller-nginx-ingress-controller TCP 443 TBD
アプリケーション・ロード・バランサのバックエンド

次のコマンドを使用して、Istioイングレス・ゲートウェイ・サービスのターゲット・ポートを取得します:

kubectl get service  istio-ingressgateway  -n  istio-system

Istioイングレス・ゲートウェイのロード・バランサ・バックエンドには、これらのポート値を使用します。

サービス名 外部ポート ターゲット・ポート
istio-ingressgateway TCP 80 TBD
istio-ingressgateway TCP 443 TBD

OCIの例

次の詳細を使用して、アプリケーション・インタフェースおよび管理ユーザー・インタフェースにアクセスするためのOCIロード・バランサを作成できます。これらのロード・バランサは、インターネットからプライベート・サブネットにHTTP/HTTPSトラフィックをルーティングします。ロード・バランサが必要な場合は、アプリケーションおよび管理エンドポイントが後でインストールされる場合でも、ここで作成する必要があります。

ノート: 次のリストで、ヘルス・チェックにポート0を使用することは、バックエンド・ポートを使用する必要があることを示しています。

  • アプリケーション・ロード・バランサ: パブリック・サブネット
    • リスナー
      • HTTPリスナー: プロトコル - TCP、ポート - 80
      • HTTPSリスナー: プロトコル - TCP、ポート - 443
    • バックエンド・セット
      • HTTPバックエンド・セット:
        • ヘルス・チェック: プロトコル - TCP、ポート - 0
        • バックエンド: Kubernetesワーカー・ノード、ポート - TBD、分散ポリシー - 加重ラウンド・ロビン
      • HTTPSバックエンド・セット
        • ヘルス・チェック: プロトコル - TCP、ポート - 0
        • バックエンド: Kubernetesワーカー・ノード、ポート - TBD、分散ポリシー - 加重ラウンド・ロビン
  • 管理ロード・バランサ: パブリック・サブネット
    • リスナー
      • HTTPリスナー: プロトコル - TCP、ポート - 80
      • HTTPSリスナー: プロトコル - TCP、ポート - 443
    • バックエンド・セット
      • HTTPバックエンド・セット:
        • ヘルス・チェック: プロトコル - TCP、ポート - 0
        • バックエンド: Kubernetesワーカー・ノード、ポート - TBD、分散ポリシー - 加重ラウンド・ロビン
      • HTTPSバックエンド・セット
        • ヘルス・チェック: プロトコル - TCP、ポート - 0
        • バックエンド: Kubernetesワーカー・ノード、ポート - TBD、分散ポリシー - 加重ラウンド・ロビン

DNS

Verrazzanospec.components.dns.external DNSタイプを使用すると、インストーラにより、指定したDNSゾーンで2つの特定のAレコードが検索されます。これらはクラスタを構成するために使用され、前のステップのロード・バランサの外部アドレスを参照する必要があります。Aレコードは手動で作成する必要があります。

ノート: 現時点では、Oracle Linux Cloud Native Environmentでサポートされているデプロイメントは外部DNSタイプのみです。

レコード 使用方法
ingress-mgmt ingress-controller-nginx-ingress-controllerサービスの.spec.externalIPs値として設定します。
ingress-verrazzano istio-ingressgatewayサービスの.spec.externalIPs値として設定します。

たとえば:

198.51.100.10                                   A       ingress-mgmt.myenv.example.com.
203.0.113.10                                    A       ingress-verrazzano.myenv.example.com.

Verrazzanoのインストールでは、ingress-mgmtアドレスを指定する必要がある多数の管理サービスが発生します。

verrazzano.myenv.example.com                    CNAME   ingress-mgmt.myenv.example.com.
keycloak.myenv.example.com                      CNAME   ingress-mgmt.myenv.example.com.
rancher.myenv.example.com                       CNAME   ingress-mgmt.myenv.example.com.

grafana.vmi.system.myenv.example.com            CNAME   ingress-mgmt.myenv.example.com.
prometheus.vmi.system.myenv.example.com         CNAME   ingress-mgmt.myenv.example.com.
kiali.vmi.system.myenv.example.com              CNAME   ingress-mgmt.myenv.example.com.
kibana.vmi.system.myenv.example.com             CNAME   ingress-mgmt.myenv.example.com.
elasticsearch.vmi.system.myenv.example.com      CNAME   ingress-mgmt.myenv.example.com.

簡単にするために、管理者は管理アドレスのワイルドカードDNSレコードを作成できます:

*.system.myenv.example.com                      CNAME   ingress-mgmt.myenv.example.com.

または

*.myenv.example.com                             CNAME   ingress-mgmt.myenv.example.com.

OCIの例

DNSは、OCIコンソールでDNSゾーンを作成することで、OCIで構成されます。DNSゾーンを作成する場合は、次の値を使用します:

  • 方法: 手動
  • ゾーン名: <dns-suffix>
  • ゾーン・タイプ: プライマリ

<dns-suffix>の値は、環境を除外します(たとえば、myenv.example.comexample.com部分を使用します)。

DNS Aレコードは、手動でゾーンに追加し、前述の値を使用して公開する必要があります。DNS CNAMEレコードも同様に処理します。

Verrazzanoのインストール中に、これらのステップはOracle Linux Cloud Native Environmentのオペレータ・ノードで実行する必要があります。

サンプルのVerrazzanoカスタム・リソースinstall-olcne.yamlファイルを編集し、OLCNE環境用に次の構成設定を指定します:

  • spec.environmentNameの値は、クラスタの一意のDNSサブドメイン(myenv.example.commyenvなど)です。
  • spec.components.dns.external.suffixの値は、DNSドメインの残りの部分(myenv.example.comexample.comなど)です。
  • spec.components.ingress.nginxInstallArgsで、controller.service.externalIPsの値は、DNSの設定中に構成されたingress-mgmt.<myenv>.<example.com>のIPアドレスです。
  • spec.components.istio.istioInstallArgsで、gateways.istio-ingressgateway.externalIPsの値は、DNSの設定中に構成されたingress-verrazzano.<myenv>.<example.com>のIPアドレスです。

external DNSタイプを使用してVerrazzanoをインストールします(OLCNEのカスタム・リソースの例は、spec.components.dns.externalを使用するようにすでに構成されています)。

設定する環境変数

<path to valid Kubernetes config>の値は通常、${HOME}/.kube/configです。

$ export KUBECONFIG=$VERRAZZANO_KUBECONFIG

次のステップ

続行するには、インストレーション・ガイドを参照してください。