1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜認証設定編〜

Last updated at Posted at 2024-01-18

はじめに

前回の記事では、Red Hat Developer Hub(RHDH)やGolden Pathで利用する各種ツール群のインストールを行いました。
ここではGolden Pathの登録前に必要な設定の投入や、各種ツールとRHDHの連携を行います。

実現する環境

今回は以下の環境を構成します。
ScreenShot.png

章項目

今回のテーマは6つの記事で構成されています。

前提条件

以下の記事の実行が完了していること

  1. Red Hat Developer Hub (Backstage) でGolden Pathを作ろう〜環境導入編〜

前提知識〜RHDH(Backstage)の設定方法〜

RHDHは、基本的に4つの方針で設定を行います。そのため、RHDHに設定を行う際はいろんなファイルを編集してそれをRHDH Podに反映させて、、、を繰り返すので、できる限りGUIではなくCLIもしくはコードエディタで作業できるような環境を構築するべきです。

  1. Helmのvaluesに追加の設定を記載の上、helm upgradeを実行する
  2. app-config.yamlというファイルに各種設定を記載の上、ConfigmapでPodにアタッチする
  3. app-config.yamlにGithub上のファイルパスを記載し、GitHub上から設定情報を取得してくる
  4. ConfigmapSecretで設定ファイルや環境変数をマウントし、それを読み込む

では、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を選択します。
ScreenShot.png

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

必要事項を記入してNextを選択します。

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

OAuth Appの作成

Organizationが作成できたので、そのまま上部のSetttingsを選択し、Developer settingsOAuth Appsを選択します。

Register an applicationを選択します。
ScreenShot 128.png

各項目に必要な情報を入力していきます。

  • 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を作成します。

app-config-rhdh.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を作成し、そこから環境変数として読み込みます。

この先このConfigmapSecretは更新して反映してを繰り返すことになります。またConfigmapで渡されるapp-config-rhdh.yamlはRHDH Podの起動時に読み込まれるため、Podへ設定を反映させるにはPodの再起動が必要になります。
そのため、SecretについてはスクリプトでSecret削除→Secret作成→Pod再起動を自動化しておきます。

create-secret.sh
#/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は作成されたConfigmapSecretを参照してくれません。
なのでこれらをちゃんと参照してもらうようにhelmのvalues.yamlを書き換えます。

upstream.backstage配下にextraEnvVarsSecretsextraAppConfigを追記して、作成したSecretConfigmapを参照するようにします。

values.yaml
____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になるまで待ちましょう。
ScreenShot 132.png

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

ポップアップがでるのでAuthorizeをすると...

無事にアクセスできました!
ScreenShot.png

これで認証設定は完了です。
今回はOrganizationのOAuth Appを登録したので、該当のOrganizationのユーザーなら同様の手順でRHDHにアクセスできるようになります。

おわりに

この記事ではRHDHへのログイン方法についてまとめました。
次回の記事では、Golden Pathの実行に向けた事前準備としてGitHubとの連携設定を行います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?