はじめに
前回の記事では、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との連携設定を行います。