Oracle Linux Cloud Native Environment (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/24 UDP |
すべて | 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つでマウントし、フォルダを作成することで実行できます。次の例では、値/example
はExport 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バックエンド・セット:
- リスナー
- 管理ロード・バランサ: パブリック・サブネット
- リスナー
- HTTPリスナー: プロトコル - TCP、ポート - 80
- HTTPSリスナー: プロトコル - TCP、ポート - 443
- バックエンド・セット
- HTTPバックエンド・セット:
- ヘルス・チェック: プロトコル - TCP、ポート - 0
- バックエンド: Kubernetesワーカー・ノード、ポート - TBD、分散ポリシー - 加重ラウンド・ロビン
- HTTPSバックエンド・セット
- ヘルス・チェック: プロトコル - TCP、ポート - 0
- バックエンド: Kubernetesワーカー・ノード、ポート - TBD、分散ポリシー - 加重ラウンド・ロビン
- HTTPバックエンド・セット:
- リスナー
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.com
のexample.com
部分を使用します)。
DNS Aレコードは、手動でゾーンに追加し、前述の値を使用して公開する必要があります。DNS CNAMEレコードも同様に処理します。
Verrazzanoのインストール中に、これらのステップはOracle Linux Cloud Native Environmentのオペレータ・ノードで実行する必要があります。
サンプルのVerrazzanoカスタム・リソースinstall-olcne.yamlファイルを編集し、OLCNE環境用に次の構成設定を指定します:
spec.environmentName
の値は、クラスタの一意のDNSサブドメイン(myenv.example.com
のmyenv
など)です。spec.components.dns.external.suffix
の値は、DNSドメインの残りの部分(myenv.example.com
のexample.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
次のステップ
続行するには、インストレーション・ガイドを参照してください。