はじめに
前回の記事では、Red Hat Developer Hub(RHDH)やGolden Pathで利用する各種ツール群のインストールを行いました。
ここではGolden Pathの登録前に必要な設定の投入や、各種ツールとRHDHの連携を行います。
実現する環境
章項目
今回のテーマは6つの記事で構成されています。
- Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜環境導入編〜
- Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜認証設定編〜 この記事
- Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜GitHub Integration編〜
- Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜Golden Path作成編①〜
- Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜Golden Path作成編②〜
- Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜Component UI改善編〜
前提条件
以下の記事の実行が完了していること
- Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜環境導入編〜
前提知識〜RHDH(Backstage)の設定方法〜
RHDHは、基本的に4つの方針で設定を行います。そのため、RHDHに設定を行う際はいろんなファイルを編集してそれをRHDH Podに反映させて、、、を繰り返すので、できる限りGUIではなくCLIもしくはコードエディタで作業できるような環境を構築するべきです。
- Helmのvaluesに追加の設定を記載の上、
helm upgradeを実行する -
app-config.yamlというファイルに各種設定を記載の上、ConfigmapでPodにアタッチする -
app-config.yamlにGithub上のファイルパスを記載し、GitHub上から設定情報を取得してくる -
ConfigmapやSecretで設定ファイルや環境変数をマウントし、それを読み込む
では、RHDHに設定を行っていきます。
認証の設定
まずはRHDHへのログインに必要な設定を行います。RHDHはデフォルト状態ではGuest UserでのアクセスかGitHubによる認証の2つのログイン方法を選択できます。
プラグインを追加することでKeycloakでの認証も可能になりますが、今回はGitHubを利用していきます。
GitHubの設定
GitHubでの認証を実現するために、GitHub側でOAuth Appの作成を行います。
ここでGitHubの個人アカウントでOAuth Appを設定するとそのユーザーのみ認証可能になりますが、Organizationで登録することで、そのOrganization配下のユーザー全員が認証可能になります。
RHDHは複数の開発メンバーでの利用を想定されるケースが多いので、ここでは新たにOrganizationを作成してそのOAuth Appを登録してみます。
GitHub Organizationの作成
こちらにアクセスし、右上のNew Organizationを選択します。

OrganizationのPlanを聞かれるのでFreeを選択します。

適宜必要なメンバーを追加してComplete setupを選択します。

OAuth Appの作成
Organizationが作成できたので、そのまま上部のSetttingsを選択し、Developer settings→OAuth Appsを選択します。
Register an applicationを選択します。

各項目に必要な情報を入力していきます。
-
Application name: 任意の値でOKです。 -
Homepage URL: RHDHのRouteのURLを記載します。以下のコマンドで取得できます。
echo "https://$(oc get route -n rhdh developer-hub -o jsonpath={.status.ingress[0].host})"
-
Authorization callback URL:RHDHのRouteのURL+/api/auth/github/handler/frameを記載します。以下のコマンドで取得できます。
echo "https://$(oc get route -n rhdh developer-hub -o jsonpath={.status.ingress[0].host})/api/auth/github/handler/frame"
入力に問題なければRegister applicationを選択します。
するとClient IDが払い出されます。そのままGenerate a new client secretを選択します。

するとClient Secretが払い出されます。この画面でしか表示されないので注意しましょう。

この2つの値を環境変数に格納しておきます。
export AUTH_GITHUB_CLIENT_ID="<Client ID>"
export AUTH_GITHUB_CLIENT_SECRET="<Client Secret>"
RHDHの設定
ではこのOAuthの情報をRHDHに渡していきます。
OAuthの情報は先述した設定方法のうち。app-config.yamlでの設定になります。
app-configについては公式ドキュメントに記載の通りapp-config-rhdhという名前の ConfigMapを作成してRHDH Podに連携する形になります。なのでまずはconfigmapのyamlを作成します。
kind: ConfigMap
apiVersion: v1
metadata:
name: app-config-rhdh
namespace: rhdh
data:
app-config-rhdh.yaml: |
app:
title: Red Hat Developer Hub
auth:
environment: development
providers:
github:
development:
clientId: ${AUTH_GITHUB_CLIENT_ID}
clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
ここではauthを追記して、先ほど作成したGitHub OAuth Appの情報を渡します。
OAuth Appの情報(特にClient Secret)は機密情報のためConfigmapに直書きすることは推奨されません。そのためSecretを作成し、そこから環境変数として読み込みます。
この先このConfigmapとSecretは更新して反映してを繰り返すことになります。またConfigmapで渡されるapp-config-rhdh.yamlはRHDH Podの起動時に読み込まれるため、Podへ設定を反映させるにはPodの再起動が必要になります。
そのため、SecretについてはスクリプトでSecret削除→Secret作成→Pod再起動を自動化しておきます。
#/bin/bash
# 古いSecretを削除
oc delete -n rhdh secret rhdh-secrets
# Secret作成
oc -n rhdh create secret generic rhdh-secrets \
--from-literal=AUTH_GITHUB_CLIENT_ID="${AUTH_GITHUB_CLIENT_ID}" \
--from-literal=AUTH_GITHUB_CLIENT_SECRET="${AUTH_GITHUB_CLIENT_SECRET}" \
# Configmapの更新
oc apply -f ./app-config-rhdh.yaml
# Configmap/Secretの変更を反映させるためにPodを再起動
oc rollout restart deploy developer-hub -n rhdh
こうすることでSecretに必要な情報を追加したら毎回Podが再起動するようにしておきます。
Secretの各変数に渡す値は環境変数をもとに書き換える状態にしておきます。
先ほどGitHub OAuth Appの作成時に環境変数に設定してあるはずなので、以下のコマンドでSecretをデプロイします。
cat create-secret.sh | envsubst | bash
これでConfigmap/SecretのデプロイとPodの再起動が完了しました。
しかしこのままではRHDH Podは作成されたConfigmapやSecretを参照してくれません。
なのでこれらをちゃんと参照してもらうようにhelmのvalues.yamlを書き換えます。
upstream.backstage配下にextraEnvVarsSecretsとextraAppConfigを追記して、作成したSecretとConfigmapを参照するようにします。
____omit____
upstream:
nameOverride: developer-hub
backstage:
# ここから
extraEnvVarsSecrets:
- rhdh-secrets
extraAppConfig:
- configMapRef: app-config-rhdh
filename: app-config-rhdh.yaml
# ここまで
____omit____
ではhelm upgradeで反映します。
helm upgrade -i developer-hub -n rhdh -f values.yaml openshift-helm-charts/redhat-developer-hub
するとRHDH Podが再起動されます。Runningになって準備完了が1/1になるまで待ちましょう。

実際にRHDHにアクセスしてSign in using GitHubを行います。

これで認証設定は完了です。
今回はOrganizationのOAuth Appを登録したので、該当のOrganizationのユーザーなら同様の手順でRHDHにアクセスできるようになります。
おわりに
この記事ではRHDHへのログイン方法についてまとめました。
次回の記事では、Golden Pathの実行に向けた事前準備としてGitHubとの連携設定を行います。



