|
これは未公開の文書です SUSE® Virtual Clusters v1.2.0 (Dev). |
ハウツー:仮想クラスターKubernetes APIを公開する
このガイドでは、仮想クラスターのKubernetes APIを外部ネットワークに公開する方法を説明します。この手順は、_仮想モード_と_共有モード_の両方に適用されます。
|
IPアドレスやホストが拒否されないように、TLS-SAN引数をクラスターに追加することが重要です。 |
|
`k3kcli cluster delete clustername`を実行すると、仮想クラスターが削除されますが、以下の方法で作成されたingressやサービスには影響しません。 |
Ingress
ホスト上に存在するingressコントローラーを通じて、仮想クラスターのKubernetes APIを公開することが可能です。ただし、TLS終端処理は仮想クラスターで行う必要があり、通常のingressオブジェクトからいくつかの変更が必要です。
Traefik
Traefikの場合、仮想クラスターのAPIはIngressRouteTCPリソースを通じて公開されます。こちらが設定の例です:
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: cluster-ingress-rt
spec:
entryPoints:
- websecure
routes:
- match: HostSNI(`cluster.example.com`)
services:
- name: k3k-clustername-service
port: 443
tls:
passthrough: true
Ingress Nginx
Ingress Nginxは、デフォルトではSSLパススルーが有効になっておらず、--enable-ssl-passthroughフラグを使用して有効にする必要があります。ingress-nginxのドキュメントを参照してください{ こちら。
その後、アノテーション「nginx.ingress.kubernetes.io/ssl-passthrough」を持つ通常のingressリソースを作成することが可能です。次に例を示します。
apiVersion: networking.k8s.io
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "https"
name: cluster-ingress
spec:
rules:
- host: cluster.example.com
http:
paths:
- backend:
service:
name: k3k-clustername-service
port:
number: 443
path: /
pathType: Prefix
サービス
仮想クラスターの作成時に作成されたサービスは変更できません。希望するタイプ(LoadBalancerまたはNodePort)の新しいサービスを作成する必要があります。