概要
Ingressはクラスター内のServiceのルールの集合にアクセスすることを可能にします。転送ルールを設定することによって、さまざまなURLがクラスター内の異なるServiceにアクセスすることを実現します。
Ingressリソースを正常に動作させるために、クラスターはIngress-controllerを実行する必要があります。TKEサービスはクラスター内ではデフォルトでTencent Cloud Load Balancerに基づいて実現されるl7-lb-controllerを有効化し、HTTP、HTTPSをサポートします。同時にクラスター内でその他のIngressコントローラを自作することもサポートし、業務上のニーズに応じてさまざまなIngressタイプを選択することができます。
注意事項
Tencent Cloud Load Balancerインスタンスは2023年3月6日にアーキテクチャがアップグレードされます。アップグレード後、パブリックネットワークCLBはドメイン名の方式でサービスを提供します。VIPは業務リクエストに応じて動的に変化し、コンソールはVIPアドレスを表示しなくなります。ドメイン名型パブリックネットワークCLBリリースのお知らせをご参照ください。 新規登録したTencent Cloudユーザーはデフォルトでアップグレード後のドメイン名型CLBを使用します。
既存のユーザーは元のCLBを継続して使用することを選択でき、アップグレードの影響を受けません。CLBサービスをアップグレードする必要がある場合は、同時にTencent Cloud製品のCLBおよびTKEをアップグレードする必要があります。アップグレードしない場合、TKE内のすべてのパブリックネットワークタイプの Service/Ingressの同期は影響を受ける可能性があります。CLBのアップグレード操作の詳細については、ドメイン名型CLBアップグレードガイドをご参照ください。TKEがService/Ingressコンポーネントのバージョンをアップグレードするには、チケットを提出してお問い合わせください。 Ingress apiVersionのサポート状況:extensions/v1beta1およびnetworking.k8s.io/v1beta1 APIバージョンのIngressは、v1.22バージョンでは継続して提供しません。networking.k8s.io/v1 APIは、v1.19(TKEシナリオでは偶数バージョンのみサポートします。そのためTKEのv1.20からとなります)バージョンから使用開始できます。詳細情報については Kubernetesドキュメントをご参照ください。 コンテナ業務がCVM業務と1つのCLBを共用しないことを確認してください。
CLBコンソールでTKEが管理するCLBのリスナー、転送パス、証明書およびバックエンドにバインドされたサーバーの操作はサポートしていません。変更はTKEによって自動的に上書きされます。
既存のCLBを使用する場合:
CLBコンソールによって作成されたロードバランサのみ使用できます。TKEによって自動的に作成されたCLBの再利用はサポートしていません。
複数のIngressによるCLBの再利用はサポートしていません。
IngressおよびServiceによるCLBをの共用はサポートしていません。
Ingressを削除すると、CLBバインドを再利用するバックエンドクラウドサーバーはご自身でバインドを解除する必要があり、同時にtag tke-clusterId: cls-xxxxを保持し、ご自身でクリーンアップする必要があります。
デフォルトのCLBの転送ルールの制限は50個です。Ingressの転送ルールが50を超える場合、チケットを提出することによってCLBのクォータを増やすことができます。 IngressとCLBの間に設定された管理および同期はCLB IDを名前とするLoadBalancerResourceタイプのリソースオブジェクトです。このCRDにはいかなる操作もしないでください。そうしない場合、Ingressの無効化が発生しやすくなります。
Ingressコンソール操作ガイド
Ingressの作成
2. 左側ナビゲーションバーで、クラスターをクリックしてクラスター管理ページに進みます。
3. Ingressを作成する必要があるクラスターIDをクリックし、Ingress作成待ちのクラスター管理ページに進みます。
4. サービス > Ingressを選択し、Ingress情報ページに進みます。
5. 新規作成をクリックし、「Ingressの新規作成」ページに進みます。下図のように表示されます。
6. 実際のニーズに応じて、Ingressパラメータを設定します。主なパラメータの情報は次のとおりです。
Ingress名称:カスタマイズします。
ネットワークタイプ:デフォルトは「パブリックネットワーク」です。実際のニーズに応じて選択します。
IPバージョン:IPv4およびIPv6 NAT64の2種類のバージョンを提供しています。実際のニーズに応じて選択します。
ロードバランサ:自動作成または既存のものを使用できます。
ネームスペース:実際のニーズに応じて選択します。
転送設定:「プロトコル」はデフォルトでHttpです。実際の状況に応じて選択してください。
プロトコルに“”Httpsを選択した場合、下図に示すとおり、サーバー証明書をバインドすることによってアクセスのセキュリティを保証する必要があります。
転送設定:実際のニーズに応じて設定します。
7. Ingressの作成をクリックすると、作成が完了します。
Ingressの更新
YAMLの更新
2. 左側ナビゲーションバーで、クラスターをクリックし、クラスター管理ページに進みます。
3. YAMLを更新する必要があるクラスターIDをクリックし、更新待ちのYAMLのクラスター管理ページに進みます。
4. サービス > Ingressを選択し、Ingress情報ページに進みます。下図のように表示されます。 5. YAMLを更新する必要があるIngressの行で、YAMLの編集をクリックし、Ingressの更新ページに進みます。
6. 「Ingressの更新」ページで、YAMLを編集し、完了をクリックすると、YAMLの更新が完了します。
転送ルールを更新する
1. クラスター管理ページで、YAMLを更新する必要があるクラスターIDをクリックし、更新待ちのYAMLのクラスター管理ページに進みます。
2. サービス > Ingressを選択し、Ingress情報ページに進みます。下図のように表示されます。 3. ルールを更新する必要がある Ingressの行で、転送設定の更新をクリックし、転送設定の更新ページに進みます。下図のように表示されます。 4. 実際のニーズに応じて、転送設定を変更し、転送設定の更新をクリックすると、更新が完了します。
KubectlによるIngress操作ガイド
YAMLの例
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: qcloud
name: my-ingress
namespace: default
spec:
rules:
- host: localhost
http:
paths:
- backend:
serviceName: non-service
servicePort: 65535
path: /
kind:Ingressを識別するリソースタイプ。
metadata:Ingressの名称、Labelなどの基本情報です。
metadata.annotations:Ingressの追加説明。このパラメータによってTencent Cloud TKEの追加の拡張機能を設定できます。
spec.rules:Ingressの転送ルール。このルールを設定するとシンプルルーティングサービス、ドメイン名に基づくシンプルファンアウトルーティング、シンプルルーティングのデフォルトドメイン名、安全なルーティングサービスの設定などを実現することができます。
annotations: 既存のロードバランサを使用してパブリックネットワーク/プライベートネットワークアクセスを作成するIngressを指定する
既存のアプリケーション型CLBがアイドル状態で、TKEに作成されたngressを提供して使用するか、クラスター内で同じCLBを使用することが想定される場合、以下のannotationsによって設定します。
metadata:
annotations:
kubernetes.io/ingress.existLbId: lb-6swtxxxx
annotations:CLBタイプのプライベートネットワークIngressを作成する
プライベートネットワークCLBを使用する必要がある場合、以下によってannotationsを設定します。
metadata:
annotations:
kubernetes.io/ingress.subnetId: subnet-xxxxxxxx
説明事項
使用するのがIP帯域幅パッケージアカウントの場合、パブリックネットワークアクセス方式のサービスを作成する時に、以下の2つのannotations項目を指定する必要があります。
kubernetes.io/ingress.internetChargeTypeパブリックネットワークの帯域幅課金方式。選択可能な値は以下のとおりです。
TRAFFIC_POSTPAID_BY_HOUR(使用トラフィックに応じて課金)
BANDWIDTH_POSTPAID_BY_HOUR(帯域幅課金)
kubernetes.io/ingress.internetMaxBandwidthOut 帯域幅上限です。範囲:[1,2000] Mbps。
例:
metadata:
annotations:
kubernetes.io/ingress.internetChargeType: TRAFFIC_POSTPAID_BY_HOUR
kubernetes.io/ingress.internetMaxBandwidthOut: "10"
Ingressの作成
1. YAMLの例を参考に、 Ingress YAMLファイルを準備します。 3. 以下のコマンドを実行し、Ingress YAMLファイルを作成します。
kubectl create -f Ingress YAMLファイル名称
例えば、ファイル名がmy-ingress.yamlのIngress YAMLファイルを作成するには、以下のコマンドを実行します。
kubectl create -f my-ingress.yaml
4. 次のコマンドを実行して、変更が成功したかどうかをチェックします。
下記のような情報が返された場合は、作成が成功したことを示しています。
NAME HOSTS ADDRESS PORTS AGE
clb-ingress localhost 80 21s
Ingressの更新
方法1
次のコマンドを実行して、Ingressを更新します。
kubectl edit ingress/[name]
方法2
1. 手動で古いIngressを削除します。
2. 以下のコマンドを実行し、Ingressを再度作成します。