2 NGINX Ingress Controllerモジュールのインストール
この章では、Oracle Cloud Native EnvironmentにNGINX Ingress Controllerモジュールをインストールする方法について説明します。
前提条件
この項では、NGINX Ingress Controllerモジュールをインストールするための前提条件について説明します。
ロード・バランサ
NGINX Ingress Controllerにはロード・バランサが必要です。 環境にロード・バランサ・サービスを提供する必要があります。 ロード・バランサを作成する必要はありません(NGINX Ingress Controllerモジュールをインストールするときに1つ作成されます)。ただし、それを提供するモジュールをインストールする必要があります。
ベア・メタル環境にはMetalLB、Oracle Cloud Infrastructureを使用する場合は「Oracle Cloud Infrastructureロード・バランサ」を使用できます。
MetalLBのインストールの詳細は、「MetalLBモジュール」を参照してください。
Oracle Cloud Infrastructure Cloud Controller Managerモジュールのインストールの詳細は、「Oracle Cloud Infrastructure Cloud Controller Managerモジュール」を参照してください。
NGINX Ingress Controllerモジュールのデプロイ
単一のolcnectl module create
コマンドを使用して、NGINX Ingress Controllerモジュールの設定に必要なすべてのモジュールをデプロイできます。 このメソッドは、Kubernetesクラスタのデプロイと同時にNGINX Ingress Controllerモジュールをデプロイする場合に役立ちます。
Kubernetesモジュールの既存のデプロイメントがある場合は、NGINX Ingress Controllerモジュールのデプロイ時にそのインスタンスを指定できます。
この項では、NGINX Ingress Controllerモジュールのデプロイに必要な各コンポーネントのインストールについて説明します。
モジュールの作成時に使用可能なPlatform CLIコマンド・オプションの完全なリストは、「Platform Command-Line Interface」のolcnectl module create
コマンドを参照してください。
NGINX Ingress Controllerモジュールをデプロイするには:
-
環境をまだ設定していない場合は、モジュールをデプロイできる環境を作成します。 環境の設定の詳細は、「インストール」を参照してください。 この例の環境の名前は、
myenvironment
です。 -
Kubernetesモジュールをまだ設定またはデプロイしていない場合は、設定します。 Kubernetesモジュールを環境に追加する方法の詳細は、「Kubernetesモジュール」を参照してください。 この例のKubernetesモジュールの名前は、
mycluster
です。 -
NGINX Ingress Controllerモジュールを作成し、
--ingress-nginx-kubernetes-module
オプションを使用して、mycluster
という名前のKubernetesモジュールに関連付けます。 この例では、NGINX Ingress Controllerモジュールの名前はmyingress-nginx
です。olcnectl module create \ --environment-name myenvironment \ --module ingress-nginx \ --name myingress-nginx \ --ingress-nginx-kubernetes-module mycluster
--module
オプションは、モジュール・タイプを作成(ingress-nginx
)に設定します。 NGINX Ingress Controllerモジュールの名前は、--name
オプション(この場合はmyingress-nginx
)を使用して定義します。--ingress-nginx-kubernetes-module
オプションは、Kubernetesモジュールの名前を設定します。Oracle Cloud Infrastructure Cloud Controller Managerモジュールを使用してロード・バランサを提供する場合は、
--ingress-controller-service-annotations
オプションを含めて、NGINX Ingress Controllerとともに使用するロード・バランサを構成します。 ロード・バランサは、モジュールのインストール時に作成されます。--ingress-controller-service-annotations {annotation,...}
たとえば、「Oracle Cloud Infrastructureロード・バランサ」をプロビジョニングするオプションの中には、カンマ区切りリストに次のものが含まれるものがあります:
service.beta.kubernetes.io/oci-load-balancer-shape: flexible service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "100" service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10" service.beta.kubernetes.io/oci-load-balancer-internal: "true"
一部のOracle Cloud Infrastructureテナンシでは、ネットワーク・サブネットを識別するために
oci-load-balancer-subnet1
注釈を含める必要もあります。たとえば:service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.subnet.oc1..unique_ID"
含めることができる注釈の完全なリストは、「アップストリームのドキュメント」を参照してください。
モジュールの追加時に必要なオプションの一部が含まれていないと、そのオプションを指定するように求められます。
-
olcnectl module install
コマンドを使用して、NGINX Ingress Controllerモジュールをインストールします。 たとえば:olcnectl module install \ --environment-name myenvironment \ --name myingress-nginx
オプションで、
--log-level
オプションを使用して、コマンド出力に表示されるロギングのレベルを設定できます。 デフォルトでは、エラー・メッセージが表示されます。 たとえば、次を含めると、すべてのメッセージが表示されるようにロギング・レベルを設定できます:--log-level debug
ログ・メッセージは、操作ログとしても保存されます。 操作ログは、コマンドの実行中または完了時に表示できます。 操作ログの使用方法の詳細は、「Platform Command-Line Interface」を参照してください。
NGINX Ingress Controllerモジュールは、Kubernetesクラスタにデプロイされます。
NGINX Ingress Controllerモジュール・デプロイメントの確認
オペレータ・ノードでolcnectl module instances
コマンドを使用して、NGINX Ingress Controllerモジュールがデプロイされていることを確認できます。 たとえば:
olcnectl module instances \
--environment-name myenvironment
出力は次のようになります:
INSTANCE MODULE STATE
mycluster kubernetes installed
myingress-nginx ingress-nginx installed
...
MODULE
列のingress-nginx
のエントリは、installed
状態であることに注意してください。
また、olcnectl module report
コマンドを使用して、モジュールに関する情報を確認します。 たとえば、myenvironment
のmyingress-nginx
という名前のNGINX Ingress Controllerモジュールを確認するには、次のコマンドを使用します:
olcnectl module report \
--environment-name myenvironment \
--name myingress-nginx \
--children
olcnectl module report
コマンドの構文の詳細は、「Platform Command-Line Interface」を参照してください。
コントロール・プレーン・ノードで、ingress-nginx
ネームスペースでNGINX Ingress Controllerデプロイメントが実行されていることを確認します:
kubectl get deployments --namespace ingress-nginx
出力は次のようになります:
NAME READY UP-TO-DATE AVAILABLE AGE
myingress-nginx-controller 1/1 1 1 10m
ConfigMapの設定を表示することもできます。たとえば:
kubectl describe configmaps --namespace ingress-nginx myingress-nginx-controller
出力は次のようになります:
Name: myingress-nginx-controller
Namespace: ingress-nginx
Labels: app.kubernetes.io/component=controller
app.kubernetes.io/instance=myingress-nginx
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=ingress-nginx
app.kubernetes.io/part-of=ingress-nginx
app.kubernetes.io/version=1.9.6
helm.sh/chart=ingress-nginx-4.9.1
Annotations: meta.helm.sh/release-name: myingress-nginx
meta.helm.sh/release-namespace: ingress-nginx
Data
====
allow-snippet-annotations:
----
false
BinaryData
====
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 11m nginx-ingress-controller ConfigMap ingress-nginx/myingress-nginx-controller
ingress-nginx
ネームスペースでNGINX Ingress Controllerサービスが実行されていることを確認します:
kubectl get service --namespace ingress-nginx
出力は次のようになります:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myingress-nginx-controller LoadBalancer 10.104.157.191 203.0.113.11 80:30154/TCP,443:30394/TCP 12m
myingress-nginx-controller-admission ClusterIP 10.105.18.193 <none> 443/TCP 12m
サービス内の設定を表示することもできます。たとえば:
kubectl describe service --namespace ingress-nginx myingress-nginx-controller