第5章 Kubernetes での TLS 接続を使用した RHDH インスタンスの設定
Azure Red Hat OpenShift (ARO) クラスター、サポートされているクラウドプロバイダーからのクラスター、または適切な設定を持つ独自のクラスターなど、Kubernetes クラスター内の Transport Layer Security (TLS) 接続を使用して、RHDH インスタンスを設定できます。Transport Layer Security (TLS) は、サードパーティーアプリケーションや外部データベースなどの他のエンティティーを使用して RHDH インスタンスの安全な接続を確立します。ただし、Kubernetes クラスターを設定するには、パブリック認証局 (CA) によって署名された証明書を使用する必要があります。
前提条件
- パブリック CA によって署名された証明書を使用して Azure Red Hat OpenShift (ARO) クラスターをセットアップした。CA 証明書の取得の詳細は、ベンダーのドキュメントを参照してください。
namespace を作成し、リソースに対する適切な読み取り権限を持つサービスアカウントを設定した。
例: ロールベースアクセス制御のための Kubernetes マニフェスト
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: backstage-read-only rules: - apiGroups: - '*' resources: - pods - configmaps - services - deployments - replicasets - horizontalpodautoscalers - ingresses - statefulsets - limitranges - resourcequotas - daemonsets verbs: - get - list - watch #...- サービスアカウントに関連付けられたシークレットとサービス CA 証明書を取得した。
いくつかのリソースを作成し、それらにアノテーションを追加して、Kubernetes プラグインでそれらのリソースを検出できるようにした。適用できる Kubernetes アノテーションは、次のとおりです。
-
コンポーネントにラベルを付けるための
backstage.io/kubernetes-id -
namespace にラベルを付けるための
backstage.io/kubernetes-namespace
-
コンポーネントにラベルを付けるための
手順
dynamic-plugins-rhdh.yamlファイルで Kubernetes プラグインを有効にします。kind: ConfigMap apiVersion: v1 metadata: name: dynamic-plugins-rhdh data: dynamic-plugins.yaml: | includes: - dynamic-plugins.default.yaml plugins: - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes-backend-dynamic disabled: false1 - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes disabled: false2 # ...注記backstage-plugin-kubernetesプラグインは、現在 テクノロジープレビュー機能 です。代わりに、一般提供 (GA) 機能である./dynamic-plugins/dist/backstage-plugin-topology-dynamicプラグインを使用することもできます。Kubernetes クラスターの詳細を設定し、
app-config.yaml設定ファイルでカタログ同期オプションを設定 します。kind: ConfigMap apiVersion: v1 metadata: name: my-rhdh-app-config data: "app-config.yaml": | # ... catalog: rules: - allow: [Component, System, API, Resource, Location] providers: kubernetes: openshift: cluster: openshift processor: namespaceOverride: default defaultOwner: guests schedule: frequency: seconds: 30 timeout: seconds: 5 kubernetes: serviceLocatorMethod: type: 'multiTenant' clusterLocatorMethods: - type: 'config' clusters: - url: <target-cluster-api-server-url>1 name: openshift authProvider: 'serviceAccount' skipTLSVerify: false2 skipMetricsLookup: true dashboardUrl: <target-cluster-console-url>3 dashboardApp: openshift serviceAccountToken: ${K8S_SERVICE_ACCOUNT_TOKEN}4 caData: ${K8S_CONFIG_CA_DATA}5 # ...- 1
- Kubernetes コントロールプレーンのベース URL。ベース URL は、
kubectl cluster-infoコマンドを実行して取得できます。 - 2
- このパラメーターの値を
falseに設定して、TLS 証明書の検証を有効にします。 - 3
- オプション: ARO クラスターを管理する Kubernetes ダッシュボードへのリンク。
- 4
- オプション:<
my_product_secrets> シークレットで定義したK8S_SERVICE_ACCOUNT_TOKEN環境変数を使用してサービスアカウントトークンを渡します。 - 5
- <
my_product_secrets> シークレットで定義した環境変数を使用して CA データを渡します。K8S_CONFIG_CA_DATA
- 設定変更を保存します。
検証
RHDH アプリケーションを実行してカタログをインポートします。
kubectl -n rhdh-operator get pods -w- Pod ログに設定に関するエラーが表示されていないことを確認します。
- Catalog に移動し、Developer Hub インスタンスのコンポーネントページをチェックして、クラスター接続と作成したリソースの存在を確認します。
証明書の問題や権限などに関する接続エラーが発生した場合は、コンポーネントページのメッセージボックスを確認するか、Pod のログを表示してください。