Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerRuntime Fabric では、Mule アプリケーションのイングレスエンドポイントを作成するための Red Hat OpenShift ルートを設定できます。
次の例では、networking.k8s.io/v1 API 用の Runtime Fabric イングレスリソーステンプレートを作成するために Kubernetes イングレス仕様を変更する方法を示しています。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-rtf-ingress
namespace: rtf #(1)
labels:
spec:
ingressClassName: rtf-openshift #(2)
tls: #(3)
- hosts:
- app-name.example.com
secretName: example-tls
rules:
- host: app-name.example.com #(4)
http:
paths: #(5)
- pathType: Prefix
path: / #(6)
backend: #(7)
service:
name: service-name
port:
name: service-port
この例について、次の点に注意してください。
1 | このテンプレートは rtf 名前空間に配置する必要があります。 |
2 | ingressClassName は、rtf- のプレフィックスを付けて、rtf-openshift に設定する必要があります。
Runtime Fabric では |
3 | TLS は省略可能です。テンプレートで指定した場合、route.openshift.io/termination: アノテーションを設定しない限り、Runtime Fabric はデフォルトでエッジ終端のルートを作成します。 |
4 | アプリケーションをデプロイすると、Runtime Fabric は app-name プレースホルダーのパラメーターを実際のアプリケーション名に置き換えます。これにより、サブドメインにワイルドカードが含まれない場合に各エンドポイント名を一意にすることができます。 |
5 | テンプレートにはホストの複数のパスを含めることができますが、Runtime Manager にはホストの最初のパスルールのみが表示されます。 |
6 | Runtime Fabric は、Mule アプリケーションのイングレスを設定するときに [Path (パス)] 項目に追加した値で path パラメーター値を置き換えます。path はプレースホルダーではありません。 |
7 | これらのプレースホルダー値は Kubernetes 検証に必須ですが、実際の値は Runtime Fabric によって使用されません。 |
省略可能なプレースホルダー値のリストは、「テンプレートのプレースホルダー」を参照してください。
ルートを設定するには、次のタスクを実行します。
イングレスリソーステンプレートを作成してクラスターで適用します。
Mule アプリケーションのイングレスを設定します。
テンプレート例を使用してルート用のイングレスリソースを作成します。
テンプレート例を新しいファイルにコピーして、コメントに変更します。
ファイル名に .yaml
拡張子を含めます。
イングレステンプレートを適用するには、次のコマンドを実行します。
kubectl apply -f <TEMPLATE_FILENAME.yaml>
テンプレートに問題がある場合、Kubernetes api-server
によってエラーが返され、コマンドは失敗します。
テンプレートを正常に適用したら、次のコマンドを使用して表示できます。
kubectl describe ingress [Ingress Name] -n rtf
Runtime Manager を使用して Runtime Fabric にデプロイするときに、アプリケーションのイングレスを設定します。アプリケーションに使用可能なホストおよびパスは、Runtime Fabric システム管理者が設定したイングレスリソーステンプレートから取得されます。
この手順を使用してテストアプリケーションをデプロイし、イングレスリソーステンプレートを検証することもできます。
次に、アプリケーションのイングレスを設定する方法の概要を示します。
完全なデプロイメント手順については、「Runtime Fabric に Mule アプリケーションをデプロイする」を参照してください。
Mule Maven プラグインを使用してアプリケーションを Runtime Fabric にデプロイする場合、ブロック |
[Runtime Manager] に移動し、ドキュメントに従ってアプリケーションを Runtime Fabric にデプロイします。
[Ingress (イングレス)] を選択します。
[Host (ホスト)] ドロップダウンリストからアプリケーションのホストを選択します。
ホスト名にワイルドカードが使用されている場合、[Subdomain (サブドメイン)] 項目でサブドメインを追加します。
[Subdomain (サブドメイン)] 項目はホスト名にワイルドカードが使用されている場合のみ使用できます。
[Path (パス)] 項目で、アプリケーションのエンドポイントに URL パスを追加します。
エンドポイントをプレビューするには、生成されたプレビューリンクをクリックします。
別のエンドポイントを追加するには、[+ Add Endpoint (+ エンドポイントを追加)] をクリックします。
準備ができたら、[Deploy application (アプリケーションをデプロイ)] をクリックします。
アプリケーションをデプロイすると Runtime Manager は、アプリケーションにトラフィックを転送するルートを、指定されたテンプレートに従って作成します。
パススルー TLS 終端を含めるようにイングレスリソーステンプレートを設定できます。
パススルー TLS 終端を使用するパスの設定については、 Red Hat OpenShift ドキュメントを参照してください。
イングレスリソーステンプレートを作成する手順は、次のとおりです。
テンプレートで、次のアノテーションを追加します。
route.openshift.io/termination: passthrough
テンプレートで、次のパラメーター値を設定します。
path: ''
(空の文字列)
pathType: ImplementationSpecific
Runtime Manager で、Mule アプリケーション用のイングレスを設定するときに、Path 項目に /
を含めます。
アプリケーションエンドポイントに、パススルー TLS 終端の HTTPS が表示されます。
route.openshift.io/termination:reencrypt
アノテーションをテンプレートに追加することで、ingress リソーステンプレートに再暗号化の終了を含めるように設定できます。
再暗号化の終了を設定する手順は、次のとおりです。
対象 CA 証明書 (自己署名証明書またはチェーン) を保持するシークレットオブジェクトを作成します。
次の mule-app.cert ファイルには、対象 Mule アプリケーションのキーストアで使用されるリーフ証明書を PEM エンコードした証明書 (チェーンまたは自己署名証明書) が含まれています。
kubectl -nrtf create secret generic ah-destination-tls \ --from-file=tls.crt=mule-app.cert
シークレットに表示ラベルを追加して、Mule アプリケーションの名前空間に伝搬させます。
kubectl -n rtf label secret ah-destination-tls "rtf.mulesoft.com/synchronized=true""
route.openshift.io/destination-ca-certificate-secret:
アノテーションを追加して、Runtime Fabric 名前空間にイングレステンプレートを作成するか、または一度削除して再作成します。
> cat ingress-reencrypt.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: route.openshift.io/termination: "reencrypt" route.openshift.io/destination-ca-certificate-secret: "ah-destination-tls" name: rtf-ingress namespace: rtf labels: spec: ingressClassName: rtf-openshift tls: - hosts: - app-name.andrew.com secretName: ah-tls rules: - host: app-name.andrew.com http: paths: - path: / pathType: Prefix backend: service: name: service-name port: name: service-port
[Runtime Manager] > [Application settings (アプリケーションの設定)]で、イングレスエンドポイントを選択します。同じ名前のイングレスエンドポイントがすでに存在する場合は、削除してから変更を適用し、新しいイングレスエンドポイントを選択して、再び変更を適用します。
Mule アプリケーションの名前空間にイングレス、シークレット、ルートが存在することを確認します。これで要求は成功するはずです。
kubectl -n <application_namespace> get ingress kubectl -n <application_namespace> get routes kubectl -n <application_namespace> get secret
例:
> kubectl -n 82e05f0d-21d7-4808-8088-2dd132095326 get ingress NAME CLASS HOSTS ADDRESS PORTS AGE ah-app-1-rtf-ingress <none> ah-app-1.andrew.com router-default.apps.ah-rtf-rosa-1.9esk.p1.openshiftapps.com 80, 443 7m30s > kubectl -n 82e05f0d-21d7-4808-8088-2dd132095326 get route NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD ah-app-1-rtf-ingress-6vhpq ah-app-1.andrew.com / ah-app-1 http reencrypt/Redirect None > kubectl -n 82e05f0d-21d7-4808-8088-2dd132095326 get secret | grep -i tls ah-destination-tls Opaque 1 52m ah-tls kubernetes.io/tls 2 131m