5.4.3. 非ベアメタルエージェントマシン上のホステッドクラスターでの Ingress の処理
すべての OpenShift Container Platform クラスターには、通常、外部 DNS レコードが関連付けられているデフォルトのアプリケーション Ingress コントローラーがあります。たとえば、ベースドメイン krnl.es で example という名前のホステッドクラスターを作成する場合は、ワイルドカードドメイン *.apps.example.krnl.es がルーティング可能であると予想することができます。
手順
*.apps ドメインのロードバランサーとワイルドカード DNS レコードを設定するには、ゲストクラスターで次のアクションを実行します。
MetalLB Operator の設定を含む YAML ファイルを作成して MetalLB をデプロイします。
apiVersion: v1 kind: Namespace metadata: name: metallb labels: openshift.io/cluster-monitoring: "true" annotations: workload.openshift.io/allowed: management --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: metallb-operator-operatorgroup namespace: metallb --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: metallb-operator namespace: metallb spec: channel: "stable" name: metallb-operator source: redhat-operators sourceNamespace: openshift-marketplace-
ファイルを
metallb-operator-config.yamlとして保存します。 以下のコマンドを入力して設定を適用します。
$ oc apply -f metallb-operator-config.yamlOperator の実行後、MetalLB インスタンスを作成します。
MetalLB インスタンスの設定を含む YAML ファイルを作成します。
apiVersion: metallb.io/v1beta1 kind: MetalLB metadata: name: metallb namespace: metallb-
ファイルを
metallb-instance-config.yamlとして保存します。 次のコマンドを入力して、MetalLB インスタンスを作成します。
$ oc apply -f metallb-instance-config.yaml
単一の IP アドレスを含む
IPAddressPoolリソースを作成します。この IP アドレスは、クラスターノードが使用するネットワークと同じサブネット上にある必要があります。以下の例のような内容で、
ipaddresspool.yamlなどのファイルを作成します。apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: namespace: metallb name: <ip_address_pool_name>1 spec: addresses: - <ingress_ip>-<ingress_ip>2 autoAssign: false次のコマンドを入力して、IP アドレスプールの設定を適用します。
$ oc apply -f ipaddresspool.yaml
L2 アドバタイズメントを作成します。
以下の例のような内容で、
l2advertisement.yamlなどのファイルを作成します。apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: <l2_advertisement_name>1 namespace: metallb spec: ipAddressPools: - <ip_address_pool_name>2 次のコマンドを入力して設定を適用します。
$ oc apply -f l2advertisement.yaml
LoadBalancerタイプのサービスを作成すると、MetalLB はサービスに外部 IP アドレスを追加します。metallb-loadbalancer-service.yamlという名前の YAML ファイルを作成して、Ingress トラフィックを Ingress デプロイメントにルーティングする新しいロードバランサーサービスを設定します。kind: Service apiVersion: v1 metadata: annotations: metallb.io/address-pool: ingress-public-ip name: metallb-ingress namespace: openshift-ingress spec: ports: - name: http protocol: TCP port: 80 targetPort: 80 - name: https protocol: TCP port: 443 targetPort: 443 selector: ingresscontroller.operator.openshift.io/deployment-ingresscontroller: default type: LoadBalancer-
metallb-loadbalancer-service.yamlファイルを保存します。 YAML 設定を適用するには、次のコマンドを入力します。
$ oc apply -f metallb-loadbalancer-service.yaml次のコマンドを入力して、OpenShift Container Platform コンソールにアクセスします。
$ curl -kI https://console-openshift-console.apps.example.krnl.es出力例
HTTP/1.1 200 OKclusterversionとclusteroperatorの値をチェックして、すべてが実行されていることを確認します。以下のコマンドを入力します。$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get clusterversion,co出力例
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS clusterversion.config.openshift.io/version 4.x.y True False 3m32s Cluster version is 4.x.y NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE clusteroperator.config.openshift.io/console 4.x.y True False False 3m50s clusteroperator.config.openshift.io/ingress 4.x.y True False False 53m<4.x.y>は、使用するサポート対象の OpenShift Container Platform バージョン (例:4.20.0-multi) に置き換えます。