13 イングレス・コントローラのインストールと構成
イングレス・コントローラは、単純なホストベースまたはURLベースのHTTOルーティングを可能にするロード・バランサです。
この章の内容は次のとおりです。
- Kubernetesサービス
Kubernetesサービスは、イングレス・デプロイメントの一部として作成されます。 - この章で使用される変数
この章の以降の各項では、様々なファイルを作成する手順を示します。これらのサンプル・ファイルには、デプロイメントに適用可能な値に置換する必要がある変数が含まれています。 - Kubernetesネームスペースの作成
Kubernetesネームスペースは、イングレス・コントローラの格納に使用されます。 - レジストリ・シークレットの作成
nginxイングレス・コントローラは、GitHubのコンテナ・レジストリから取得されます。オンデマンドでイメージをダウンロードするには、GitHub資格証明を使用してレジストリ・シークレットを作成する必要があります。 - Helmリポジトリへのイングレス・イメージの追加
helm
コマンドを使用して、nginxコンテナ・イメージをHelmリポジトリに追加します。 - HTTPS/HTTPおよびLDAPS/LDAPをサポートするためのイングレス・コントローラのインストール
イングレス・コントローラを作成すると、HTTPまたはHTTPSトラフィック(あるいはその両方)がサポートされます。SSLトラフィックをロード・バランサの後ろで終端する場合、HTTPSトラフィックを有効にする必要はありません。
上位トピック: 「エンタープライズ・ドメインの構成」
Kubernetesサービス
Kubernetesサービスは、イングレス・デプロイメントの一部として作成されます。
表13-1 Kubernetesサービス
サービス名 | タイプ | サービス・ポート | マップ済ポート |
---|---|---|---|
|
NodePort |
80 443 |
30777 30443 |
これらは、コントローラとの対話に使用するポートです。
親トピック: イングレス・コントローラのインストールと構成
この章で使用される変数
この章の以降の項では、多数のファイルを作成する手順について説明します。これらのサンプル・ファイルには、デプロイメントに適用可能な値に置換する必要がある変数が含まれています。
変数の形式は<VARIABLE_NAME>です。次の表に、これらの各変数に設定する必要がある値を示します。
表13-2 変更する必要がある変数
変数 | サンプル値 | 説明 |
---|---|---|
<INGRESSNS> |
|
イングレス・ネームスペースの名前。 |
<GIT_USER> |
|
GitHubにログインするユーザーの名前。 |
<GIT_TOKEN> |
|
gitログイン・トークン。 |
<WORKDIR> |
|
イングレス用の作業ディレクトリ。 |
<INGRESS_SERVICE_TYPE> |
|
作成するイングレス・サービスのタイプ。オプションは、 |
<INGRESS_NAME> |
|
コントローラの任意の名前。 |
<INGRESS_REPLICAS> |
|
起動するイングレス・コントローラのコピー数。高可用性の実装の場合、この値は |
<INGRESS_HTTP_K8> |
30777 |
HTTP通信に使用するKubernetesサービス・ポート。 |
<INGRESS_HTTPS_K8> |
|
HTTPS通信に使用するKubernetesサービス・ポート。 |
<LDAPNS> |
|
LDAPディレクトリが実行されているネームスペース。 |
<LDAP_K8> |
|
イングレスLDAPトラフィックの公開に使用するKubernetesポート。 |
<LDAPS_K8> |
|
イングレスLDAPSトラフィックの公開に使用するKubernetesポート。 |
<OUD_POD_PREFIX> |
|
トラフィックの送信先のLDAPネームスペース内のサービス名で使用される接頭辞。 |
<USE_PROM> |
|
イングレス・メトリックをPrometheusに送信する場合は、 |
親トピック: イングレス・コントローラのインストールと構成
Kubernetesネームスペースの作成
Kubernetesネームスペースは、イングレス・コントローラの格納に使用されます。
kubectl create namespace <INGRESSNS>
kubectl create namespace ingressns
親トピック: イングレス・コントローラのインストールと構成
レジストリ・シークレットの作成
gitcred
というシークレットを作成するには、次のコマンドを使用します:kubectl create secret docker-registry gitcred –n <INGRESSNS> --docker-server=ghcr.io --docker-username=<GIT_USER> --docker-password="<GIT_TOKEN>"
kubectl create secret docker-registry gitcred –n ingressns --docker-server=ghcr.io --docker-username=mygituser --docker-password="mytoken"
親トピック: イングレス・コントローラのインストールと構成
Helmリポジトリへのイングレス・イメージの追加
helm
コマンドを使用して、nginxコンテナ・イメージをHelmリポジトリに追加します。
helm repo add stable https://kubernetes.github.io/ingress-nginx
helm repo update
親トピック: イングレス・コントローラのインストールと構成
HTTPS/HTTPおよびLDAPS/LDAPをサポートするためのイングレス・コントローラのインストール
イングレス・コントローラを作成すると、HTTPまたはHTTPSトラフィック(あるいはその両方)がサポートされます。SSLトラフィックをロード・バランサの後ろで終端する場合、HTTPSトラフィックを有効にする必要はありません。
Oracle Identity Management Microservicesのみをデプロイする場合で、それを既存のOracle HTTP Serverデプロイメントの背後に配置しない場合は、エンドツーエンドSSLのためにイングレスを構成するか、イングレスでSSLを終端させます。
Oracle LDAPディレクトリをKubernetesクラスタ内にデプロイする場合は、オプションで、イングレスを介してLDAPおよびLDAPSトラフィックを公開できます。Kubernetesクラスタの外部でLDAPディレクトリにアクセスする必要がない場合は、このオプションを有効にしないことをお薦めします。
イングレス・コントローラを作成するには、次のステップを実行します:
- SSLリクエストのための自己署名証明書の作成
- 証明書を使用したKubernetesシークレットの作成
- Helmオーバーライド・ファイルの作成
- イングレス・コントローラの作成
- イングレス・コントローラの検証
親トピック: イングレス・コントローラのインストールと構成
SSLリクエストのための自己署名証明書の作成
独自のCA証明書を購入した場合、またはイングレスをOracle HTTP Serverの背後にイングレスを配置する場合は、このステップをスキップできます。
自己署名証明書を使用する場合は、次のコマンドを実行します:
証明書を使用したKubernetesシークレットの作成
証明書をKubernetesシークレットにロードします。独自の証明書を購入した場合は、かわりにそれを使用できます。
kubectl -n <INGRESSNS> create secret tls common-tls-cert --key /workdir/ingress.key --cert /workdir/ingress.crt
Helmオーバーライド・ファイルの作成
- HTTPおよびHTTPS終端トラフィック用のイングレス・コントローラの作成
- HTTP、HTTPSおよびLDAPトラフィック用のイングレス・コントローラの作成
作業ディレクトリ内にingress_override.yaml
というファイルを作成します。デプロイメントによってファイルの内容は異なります。
この項には次のトピックが含まれます:
イングレス・サービスのタイプ
2つのタイプのイングレス・サービスを作成できます。
NodePort
サービスを作成する場合、イングレス・コントローラとの対話は、Kubernetesワーカー・ノードと、コントローラに割り当てられている関連Kubernetesサービス・ポートを介して行われます。
LoadBalancer
サービスを作成すると、イングレス・コントローラがIPアドレスに割り当てられます。イングレス・コントローラとの対話は、このIPアドレスを介して直接行われます。
LoadBalancer
タイプのサービスの作成は、使用しているKubernetesのフレーバによって異なります。このサービスを作成するには、ご使用のプラットフォームのドキュメントを参照してください。
LoadBalancer
サービスを作成できます:
- サンプル・ファイル(「HTTPおよびHTTPS用のオーバーライド・ファイル」および「HTTP、HTTPS、LDAPおよびLDAPS用のオーバーライド・ファイル」を参照)を使用して、次の変更を行います:
Set type: LoadBalancer
LoadBalancer
タイプの下に、次の行を追加します:annotations: service.beta.kubernetes.io/oci-load-balancer-internal: "true" service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.subnet.oc1.iad....kdi3ds.....vqri332zdrr3rm" service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10" service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "10" service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
oci-load-balancer-subnet1
を、Kubernetesノードが存在するサブネットのOCIDに設定します。
親トピック: Helmオーバーライド・ファイルの作成
HTTPおよびHTTPS用のオーバーライド・ファイル
imagePullSecrets:
- name: gitcred
controller:
name: <INGRESS_NAME>
ingressClassResource:
name: nginx
config:
use-forwarded-headers: true
enable-underscores-in-headers: true
wildcardTLS:
secret: tls-cert
replicaCount: <INGRESS_REPLICAS>
service:
type: <INGRESS_SERVICE_TYPE>
nodePorts:
http: <INGRESS_HTTP_K8>
https: <INGRESS_HTTPS_K8>
admissionWebhooks:
enabled: false
metrics:
enabled: <USE_PROM>
serviceMonitor:
enabled: <USE_PROM>
親トピック: Helmオーバーライド・ファイルの作成
HTTP、HTTPS、LDAPおよびLDAPS用のオーバーライド・ファイル
Helm
ファイルの例を示します:imagePullSecrets:
- name: gitcred
tcp:
1389: <LDAPNS>/<OUD_POD_PREFIX>-oud-ds-rs-lbr-ldap:ldap
1636: <LDAPNS>/<OUD_POD_PREFIX>-oud-ds-rs-lbr-ldap:ldaps
controller:
name: <INGRESS_NAME>
ingressClassResource:
name: nginx
config:
use-forwarded-headers: true
enable-underscores-in-headers: true
wildcardTLS:
secret: tls-cert
replicaCount: <INGRESS_REPLICAS>
service:
type: <INGRESS_SERVICE_TYPE>
nodePorts:
http: <INGRESS_HTTP_K8>
https: <INGRESS_HTTPS_K8>
tcp:
1389: <LDAP_K8>
1636: <LDAPS_K8>
admissionWebhooks:
enabled: false
metrics:
enabled: <USE_PROM>
serviceMonitor:
enabled: <USE_PROM>
tls-cert
は、前に作成したSSL証明書の名前です。「SSLリクエストのための自己署名証明書の作成」を参照してください。edg-<OUD_POD_PREFIX>-ds-rs-lbr-ldap
は、トラフィックの送信先のLDAPネームスペース内のサービスの名前です。
親トピック: Helmオーバーライド・ファイルの作成
イングレス・コントローラの作成
helm
コマンドを実行する必要があります:helm install nginx-ingress -n ingressns \
--values /workdir/INGRESS/ingress_override.yaml \
stable/ingress-nginx
ここで、nginx-ingress
はイングレス・ネームスペースです。例: ingressns
。
- 最初のステップのテキストをここに入力します。
- ステップ2のテキストをここに入力します。
イングレス・コントローラの検証
イングレス・コントローラが正常に作成されたことを検証するには、次のコマンドを使用します:
kubectl get all,ingress -n <INGRESSNS>
kubectl get all,ingress -n ingressns
出力が次のように表示されます。
NAME READY STATUS RESTARTS AGE
pod/nginx-ingress-ingress-nginx-idmedg-bd4fdc996-794l5 1/1 Running 0 28h
pod/nginx-ingress-ingress-nginx-idmedg-bd4fdc996-qqvqf 1/1 Running 0 28h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx-ingress-ingress-nginx-idmedg NodePort 10.107.148.40 <none> 80:30777/TCP,443:30443/TCP,1389:31389/TCP,1636:31636/TCP 28h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-ingress-ingress-nginx-idmedg 2/2 2 2 28h
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-ingress-ingress-nginx-idmedg-bd4fdc996 2 2 2 28h