OKE上でのIDCSカスタム・ログイン・ウィジェットの実行:パート2 - Dockerize (2021/10/01)
OKE上でのIDCSカスタム・ログイン・ウィジェットの実行:パート2 - Dockerize (2021/10/01)
https://www.ateam-oracle.com/post/running-idcs-custom-login-widget-on-oke-part-2-dockerize
はじめに
この記事では、IDCSカスタムログインウィジェットをdockerizeするための正確な手順を説明したいと思います。
パート1をご参照ください。IDCSカスタム・ログイン・ウィジェットをOKE上で動かす:概要」を参照して、全体の流れを理解してください。
必要となるもの :
1) gitクライアントとGitHubアカウント
2) 開発マシンへのDockerのインストール
3) OCIテナンシーと、OCIRリポジトリを作成する権限を持つユーザーアカウント
ステップ1: - GitHubリポジトリをフォーク
チュートリアルでは、GitHubリポジトリからCustom Sign-In APIウェブアプリケーションをダウンロードして解凍し、コンピュータの一時フォルダに置くことを提案しています。代わりに、リポジトリをフォークすることもできます。フォークすると、リポジトリのコピーが作成され、元のプロジェクトに影響を与えることなく自由に変更を試すことができます。 リポジトリをフォークして独自の変更を加えたり、プルリクエストを作成して修正点を貢献/提出したりすることをお勧めします。
次に、フォークしたリポジトリを開発マシンにクローンします。
git clone https://github.com:USERNAME/YOUR-FORKED-REPO
ステップ2:Dockerfileの作成
同じディレクトリに、Dockerfileという名前の新しいファイルを作成します。
IDCSカスタム・ログイン・ウィジェットは、Node JSアプリケーションです。そのため、dockerfileは他のNodeJSアプリケーションと非常によく似ています。
以下は私のサンプルDockerfileです。
FROM node:alpine
# Create app directory WORKDIR /usr/src/app # Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
EXPOSE 3000
# "npm start" is how this would normally be started
CMD [ "npm", "start" ]
ステップ3:Dockerイメージの構築
dockerfileからdockerイメージを構築します。イメージの名前は自由に決めてください。
docker build -t $IMAGE_NAME $PATH_TO_DOCKERFILE
dockerイメージを確認するために、イメージをリストアップします。
docker images
ステップ4:OCIRにイメージをプッシュ
OCIRに任意のdockerイメージをプッシュする方法については、このチュートリアルを参照してください。より簡単にするために、いくつかのスクリーンショットを追加しています。
A. OCIのユーザプロファイルに認証トークンを設定するには
OCIコンソールにログインして、ユーザープロファイルに移動してください -> Auth Tokens and generate a new auth token
あなたのAuth tokenを安全に保管してください。後でこのAuthトークンの値を見たり取得したりすることはできません
B. あなたの開発マシンから、以下を実行してOCIRにログイン
docker login <region-key>.ocir.io
例えば、私のOCIRリージョンはAshburnなので、次のように使います。
docker login iad.ocir.io
Usernameを聞かれたら、auth tokenを持つユーザーの名前を<tenancy-namespace>/<username>の形式で入力します。
または、IDCSユーザーの場合は、<tenancy-namespace>/oracleidentitycloudservice/<username>の形式で入力します。
パスワードの入力を求められたら、ユーザーのOracle Cloud Infrastructure auth tokenを入力します。
C. 前のステップで作成したdockerイメージをタグ付けしてOCIRにプッシュ
手順2で作成したdockerイメージをタグ付けします。OCIコンテナレジストリに新しいリポジトリを作成するか、既存のリポジトリを使用することができます。タグのフォーマットは - <region-key>.ocir.io/<tenancy-namespace>/<repo-name>:<version> です。
docker tag idcslogin:latest iad.ocir.io/mytenancy/myrepo/idcslogin:latest docker push iad.ocir.io/mytenancy/myrepo/idcslogin:latest
Kubernetesのマニフェストファイルは、ポッドをデプロイする際にこのイメージを使用します。
カスタム・ログイン・アプリでは、IDCS_URL、IDCS_CLIENT_ID、IDCS_SECRETなどの必須の環境変数を設定する必要があります。また、IDCS_SELFREGPROFILESで自己登録プロファイルをログイン・ウィジェットに渡したり、DEBUG_LOGIN=trueでNodeJSのデバッグ・ログを有効にしたりするなど、その他のオプションの環境変数を設定することもできます。本番環境では、NODE_ENV=production変数も設定する必要があります。
これらの値を保存するためにKubernetesのシークレットを使用し、マニフェストファイルでこれらを渡すことになります。
まとめ
この投稿では、ログインウィジェットイメージをdockerizeしてOCIRにプッシュする方法を簡単に紹介しました。これにより、次のステップであるOKE上でのウィジェットのデプロイと実行に向けた準備が整いました。
コメント
コメントを投稿