IngressClassParameters、IngressClassおよびイングレス・リソースの作成
OCIネイティブ・イングレス・コントローラを使用するために必要なKubernetesイングレス関連リソースの作成方法をご紹介します。
OCIネイティブ・イングレス・コントローラ(スタンドアロン・プログラムまたはクラスタ・アドオンとして)をインストールした後、それを使用するには、多数の異なるKubernetesリソースを作成する必要があります:
IngressClassParameters
リソース:このカスタム・リソースは、OCIネイティブ・イングレス・コントローラ用に作成するOCIロード・バランサの詳細を指定します。IngressClass
リソース:このリソースは、新しいロード・バランサの作成に使用されます。IngressClass
リソースは、作成するロード・バランサのシェイプのIngressClassParameters
リソースを参照し、OCIネイティブ・イングレス・コントローラがIngress
リソースのデフォルト・コントローラかどうかを指定します。Ingress
リソース:このリソースは、外部トラフィックをバックエンド・サービスにルーティングするルールを指定します。
このトピックに示すように、.yamlファイルでリソースを定義し、kubectl createコマンドを実行して各リソースを作成することで、各リソースを順番に作成します。
IngressClassParametersリソースの作成
カスタムのIngressClassParameters
リソースを使用して、OCIネイティブ・イングレス・コントローラ用に作成するOCIロード・バランサの詳細を指定します。
.yamlファイルにリソースを定義します。次に最小限の例を示します。
apiVersion: "ingress.oraclecloud.com/v1beta1"
kind: IngressClassParameters
metadata:
name: <icp-name>
namespace: <ns-name>
spec:
compartmentId: "<compartment-ocid>"
subnetId: "<subnet-ocid>"
loadBalancerName: "<lb-name>"
isPrivate: false
maxBandwidthMbps: <max-bw>
minBandwidthMbps: <min-bw>
reservedPublicAddressId: <reserved-ip-ocid>
ここでは:
name: <icp-name>
は、新しいIngressClassParameters
リソースの名前です。name: <ns-name>
は、新しいIngressClassParameters
リソースを作成するネームスペースの名前です。compartmentId: "<compartment-ocid>"
は、新しいロード・バランサが属するコンパートメントのOCIDです。subnetId: "<subnet-ocid>"
は、ロード・バランサのサブネットのOCIDです。loadBalancerName: "<lb-name>"
は、新しいロード・バランサに付ける名前です。maxBandwidthMbps: <max-bw>
は、ワークロードのピーク時に新しいロード・バランサがサポートする帯域幅の上限です。minBandwidthMbps: <min-bw>
は、新しいロード・バランサがワークロードに即時に準備できるように常に使用できる帯域幅の量です。reservedPublicAddressId: <reserved-ip-ocid>
は、オプションで、ロード・バランサに使用する既存の予約済パブリックIPアドレス・リソースのOCIDです。予約済パブリックIPアドレスを指定しない場合、ロード・バランサにはランダムなIPアドレスが割り当てられます。予約済パブリックIPアドレスの作成の詳細は、「予約済パブリックIPの作成」を参照してください。
例:
apiVersion: "ingress.oraclecloud.com/v1beta1"
kind: IngressClassParameters
metadata:
name: native-ic-params
namespace: acme-namespace
spec:
compartmentId: "ocid1.compartment.oc1..aaaaaaaa______ddq"
subnetId: "ocid1.subnet.oc1.iad.aaaaaaaa______dba"
loadBalancerName: "native-ic-lb"
isPrivate: false
maxBandwidthMbps: 400
minBandwidthMbps: 100
kubectl create -f <filename>.yaml
を入力してリソースを作成します
IngressClassリソースの作成
IngressClass
リソースを使用して、Ingress
リソースをOCIネイティブ・イングレス・コントローラおよびIngressClassParameters
リソースに関連付けます。IngressClass
リソースを使用して、OCIネイティブ・イングレス・コントローラがIngress
リソースのデフォルト・コントローラであるかどうかを指定することもできます。
.yamlファイルにリソースを定義します。次に最小限の例を示します。
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: <ic-name>
annotations:
ingressclass.kubernetes.io/is-default-class: "<true|false>"
spec:
controller: oci.oraclecloud.com/native-ingress-controller
parameters:
scope: Namespace
namespace: <ns-name>
apiGroup: ingress.oraclecloud.com
kind: ingressclassparameters
name: <icp-name>
ここでは:
name: <ic-name>
は、新しいIngressClass
リソースの名前です。ingressclass.kubernetes.io/is-default-class: "<true|false>"
は、Ingress
リソースでingressClassName
が明示的に指定されていない場合に、このIngressClass
が使用されるデフォルトのIngressClass
かどうかを示します。デフォルトのIngressClass.
を指定することをお薦めします。controller: oci.oraclecloud.com/native-ingress-controller
は、使用するイングレス・コントローラとしてOCIネイティブ・イングレス・コントローラを指定しますnamespace: <ns-name>
は、.spec.parameters.scope
がNamespace
に設定されているときに使用するパラメータを含むネームスペースの名前です。name: <icp-name>
は、OCIネイティブ・イングレス・コントローラ用に作成するOCIロード・バランサの詳細を指定するIngressClassParameters
リソースの名前です。
例:
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: native-ic-ingress-class
annotations:
ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: oci.oraclecloud.com/native-ingress-controller
parameters:
scope: Namespace
namespace: acme-namespace
apiGroup: ingress.oraclecloud.com
kind: ingressclassparameters
name: native-ic-params
kubectl create -f <filename>.yaml
を入力してリソースを作成します
イングレス・リソースの作成
Ingress
リソースを使用して、外部トラフィックをバックエンド・サービスにルーティングするルールを指定します。
.yamlファイルにリソースを定義します。次に最小限の例を示します。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: <i-name>
spec:
ingressClassName: <ic-name>
rules:
<ingress-rule>
name: <i-name>
は、Ingress
リソースの名前です。ingressClassName: <ic-name>
は、使用するIngressClass
リソースの名前です。IngressClass
リソースは、使用するイングレス・コントローラと、OCIネイティブ・イングレス・コントローラ用に作成するOCIロード・バランサの詳細を含むIngressClassParameters
リソースの名前の両方を指定します。ingressClassName
を指定しない場合、クラスタのデフォルトIngressClass
が使用されます(注釈ingressclass.kubernetes.io/is-default-class: "true"
を持つIngressClass
)。<ingress-rule>
は、オプションでホストまたは1つ以上のパス要素(あるいはその両方)で構成されるルールです。各パスにはバックエンド(サービス名およびポート番号)があります。イングレス・コントローラは、ルールのホスト名(指定されている場合)および関連付けられたバックエンドへのパスに一致するリクエストをルーティングします。ルールでパスを指定する場合:pathType: Exact
を使用して、受信リクエスト・パスが、ルールに関連付けられたバックエンドにルーティングされるリクエストのルール内のパスと完全に一致する必要があることを示しますpathType:Prefix
を使用して、受信リクエスト・パスの開始部分が、ルールの関連付けられたバックエンドにルーティングされるリクエストのルール内のパスと一致する必要があることを示します
OCIネイティブ・イングレス・コントローラのルート・ルールの指定を参照してください。
例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: native-ic-ingress
spec:
ingressClassName: native-ic-ingress-class
rules:
- host: "foo.bar.com"
http:
paths:
- pathType: Exact
path: "/testecho1"
backend:
service:
name: testecho1
port:
number: 80
kubectl create -f <filename>.yaml
を入力してリソースを作成します