目次
前回の振り返り
アイデンティティユーザーを作成する
ポリシーを作成する
OCIレジストリの設定
作業用インスタンスの準備
DockerイメージをOCIRへPush
今回のまとめ
前回の振り返り
前回は稼働させるWebアプリケーションとして、ASP.NET Core Webアプリケーション (MVC)を使用してファイルをアップロードするサービスを作成しました。今回はOCIリポジトリに作成したアプリを登録していきます。
- Webアプリケーションを開発する(完了)
- アイデンティティユーザーを作成しポリシーを設定する ←今回
- OCIレジストリにDockerイメージを登録する ←今回
- File Storage Serviceを設定する
- OKEを設定する
- 稼働!完成!
アイデンティティユーザーを作成する
OKE用にまずはアイデンティティユーザーを作成しトークンを発行します。
続いて、作成したOKE用のユーザーで「認証トークン」を生成します。OKEがOCIRへアクセスするためには認証トークンが必要になります。
生成しましたらトークンの内容をコピーしておきます。トークンの内容は1度しか表示されないので、忘れないように注意します。(もし忘れた場合はトークンを新しく生成しなおす必要があります)
ポリシーを設定
OKEとOCIRを利用するためにポリシーを設定します。
本記事では、前提としてコンパートメント名は「itport」、ユーザー名は「itport-user」、グループ名は「itport-group」としております。
Allow service OKE to manage all-resources in tenancy Allow group itport-group to manage repos in tenancy
Allow group itport-group to manage cluster-family in compartment itport Allow group itport-group to manage virtual-network-family in compartment itport Allow group itport-group to manage instance-family in compartment itport Allow group itport-group to inspect compartments in compartment itport
※ 上記のポリシーはコンパートメント内のネットワーク管理権限などを与えておりますので、自身の環境に合わせてポリシーを調整ください。
ポリシーのリファレンスは公式ドキュメントに記載されております。
OCIレジストリの設定
前回作成したWebアプリケーションをDockerイメージとしてOCIRに登録するため作業環境を作ります。
まずは、OCIコンソールでリポジトリを作成しておきます。アクセスはプライベートを選択しておきます。
作業用インスタンスの準備
OCIのComputeで作業用インスタンスを起動します。
OCIではComputeを作成時に自分でキーペアを用意する必要があります。備忘録も兼ねてSSH用キーペア作成のコマンドを記載しておきます。手元の端末がWindowsの場合、Windows Subsystem for Linux を利用すると便利です。
ssh-keygen -t rsa -N "" -b 2048 -C "<key_name>" -f <path/root_name>
では イメージをOracle Linux 7.7 にしてComputeを起動しておきます。
インスタンスが作成されたら、SSHで接続して、必要な物をどんどん入れていきます。
まずはdotnet-sdk-3.1をインストールします。(2020年3月時点の最新バージョンとなります)
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm sudo yum install dotnet-sdk-3.1
dotnet-sdkがインストールできたら、Webアプリケーションが動くか確認してみます。
ソリューションごとソースをサーバーへアップロードし、プロジェクトフォルダー(.cspojがある階層)で以下のコマンドで実行します。
dotnet run
問題なく実行できました。dotnet runはフォアグラウンドで実行されます。Ctrl + c で実行が終了されます。
次にDockerのインストールに進みます。
# docker-ce sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce -y sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker opc
Dockerをインストールしたらビルドしイメージを作成します。Dockerfileがある場所まで移動し以下のコマンドでビルドします。(Dockerfileの場所は前回の記事を参考ください)
docker build -t file_upload_web_app .
ビルドが成功したら次はkubectlをインストールしておきます。
# kubectl curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl mkdir ~/.kube
DockerイメージをOCIRへPush
ビルドしたイメージをOCIRへPushします。レジストリに登録したイメージは後々OKEで利用します。
# OCIRにログインする docker login nrt.ocir.io #ビルドしたイメージのIDを確認します docker images #イメージにタグを付けます docker tag <IMAGE ID> nrt.ocir.io/<tenancy-namespace>/file_upload_web_app:v01 #イメージをOCIRへPushします docker push nrt.ocir.io/<tenancy-namespace>/file_upload_web_app:v01
OCIコンソール上のOCIRサービスの画面でアップロードしたイメージが反映されておりました。
今回のまとめ
ASP.NET CoreアプリケーションをDockerのイメージにし、OCIRにPushするところまで出来ました。
docker build コマンドがうまくいかない場合は、dotnet-sdkのバージョンの違いや、ビルド実行時のカレントディレクトリが誤っており、Dockerfile内に記載されたコマンドが通っていない場合もありますので、ご自身の環境に合わせてご確認ください。