第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: false 1 - package: ./dynamic-plugins/dist/backstage-plugin-kubernetes disabled: false 2 # ...
注記backstage-plugin-kubernetes
プラグインは、現在 テクノロジープレビュー機能 です。代わりに、一般提供 (GA) 機能である./dynamic-plugins/dist/backstage-plugin-topology-dynamic
プラグインを使用することもできます。Kubernetes クラスターの詳細を設定し、
app-config-rhdh.yaml
ファイルでカタログ同期オプションを設定します。kind: ConfigMap apiVersion: v1 metadata: name: app-config-rhdh data: "app-config-rhdh.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: false 2 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-rhdh-secrets
シークレットで定義できるK8S_SERVICE_ACCOUNT_TOKEN
環境変数を使用してサービスアカウントトークンを渡します。 - 5
my-rhdh-secrets
シークレットで定義するK8S_CONFIG_CA_DATA
環境変数を使用して CA データを渡します。
- 設定変更を保存します。
検証
RHDH アプリケーションを実行してカタログをインポートします。
kubectl -n rhdh-operator get pods -w
- Pod ログに設定に関するエラーが表示されていないことを確認します。
- Catalog に移動し、Developer Hub インスタンスのコンポーネントページをチェックして、クラスター接続と作成したリソースの存在を確認します。
証明書の問題や権限などに関する接続エラーが発生した場合は、コンポーネントページのメッセージボックスを確認するか、Pod のログを表示してください。