https://blogs.oracle.com/developers/build-and-deploy-a-helidon-microservice-using-oracle-developer-cloud
Oracleは最近、Project Helidonを展開しました。Project Helidonはマイクロサービスを開発する新しい方法を提供します。このブログではOracle Developer Cloudを使ってあなたの最初のHelidonベースのマイクロサービスを作成し、Oracle Container Engine for Kubernetesにデプロイする方法をご説明します。
始める前に、いくつかのポイントを確認しておきましょう:
Helidonとはなにか?
Project Helidonはマイクロサービスを開発するためのJavaライブラリの集合です。Helidonはふたつのプログラミングモデルをサポートしており、ひとつはMicroProfile 1.2ベースのHelidon MPで、もうひとつはスモールでファンクショナルスタイルAPIであるHelidon SEです。
どちらを選んだとしても、Java SEベースのアプリケーションを開発することになります。Helidonはオープンソースであり、コードはGitHubで利用可能です。Project Helidonについてもっと知りたい場合は、次のリンクを見てみてくださいね:
始めてみよう
Helidonは単品でダウンロードするような機能を提供しておらず、代わりにMavenリリースを使う必要があります。これはつまり、Mavenアーキタイプを使ってHelidonマイクロサービスプロジェクトを使い始めるということになります。このブログでは、Helidon SEプロフラグラミングモデルを使っていきます。
Helidonで開発を行うにあたり、以下の基本的な前提ソフトウェアをマシンにインストールしておく必要があります:
- Maven
- Java 8
- Gitcli (コードをOracle Developer Cloud Gitリポジトリにプッシュするため)
Mavenを使ってHelidonのサンプルマイクロサービスプロジェクトをダウンロード
Windowsマシンを使っているなら、コマンドプロンプトを開きましょう。そしてサンプルHelidonマイクロサービスプロジェクトを作成したいフォルダに移動し(あるいは作成し)、以下のMavenコマンドを実行してください。
mvn archetype:generate -DinteractiveMode=false \
-DarchetypeGroupId=io.helidon.archetypes \
-DarchetypeArtifactId=helidon-quickstart-se \
-DarchetypeVersion=1.1.0 \
-DgroupId=io.helidon.examples \
-DartifactId=helidon-quickstart-se \
-Dpackage=io.helidon.examples.quickstart.se
実行すると、このMavenコマンドはhelidon-quickstart-seフォルダを作成します。
マイクロサービスのアプリケーションコード、ビルドファイル、およびデプロイメントファイルはすべてこのhelidon-quickstart-seフォルダに格納されています。
以下がそれらのファイルとフォルダです:
- srcフォルダ – マイクロサービスのアプリケーションソースコードを格納
- app.yml – Kubernetesデプロイメントを定義
- Dockerfile – Dockerイメージ作成方法を定義
- Dockerfile.native – GraalVMを使ってのDockerイメージ作成方法を定義
- Pom.xml – Mavenビルドのプロジェクト記述子
- README.md – プロジェクトの説明が記載されたファイル
ではGitリポジトリを使うOracle Developer Cloudプロジェクトを作成しましょう。このGitリポジトリのことをここではHelidon.gitと呼びます。
コマンドプロンプトでhelidon-quickstart-seフォルダに移動し、以下のGitコマンドでHelidonマイクロサービスアプリケーションコードを作成したGitリポジトリにプッシュしましょう。
Note: You need to have gitcli installed on your development machine to execute Git commands.
注意:Gitコマンドを実行するには、あなたの開発マシンにgitcliがインストールされている必要があります。
git init
git add --all
git commit -m "First commit"
git remote add origin <git repository url>
git push origin master
あなたのHelidon.gitリポジトリは以下のような構成になったかと思います。
ビルドジョブの構成
Developer Cloudで、左側のナビゲーションバーからBuildsを選択することでBuildsページに移動し、+Create Jobボタンをクリックします。
New Jobダイアログでは、NameにBuildHelidonと入力して、Dockerランタイムを持っているTemplateを選択し、Createボタンをクリックします。このビルドジョブはGitリポジトリにあるHelidonマイクロサービスコードのDockerイメージをビルドし、DockerHubレジストリにプッシュします。
Gitタブでは、Add GitのドロップダウンからGitを選び、GitリポジトリはHelidon.gitを選択し、Branchはmasterを選択しましょう。
Stepsタブでは、Add StepドロップダウンからDocker login、Docker buildおよびDocker pushステップを追加します。
Docker loginステップには、DockerHubのユーザー名とパスワードを入力します。DockerHubをレジストリにするため、Registry Hostは空のままにしておきましょう。
Docker buildステップでは、<DockerHubユーザー名>/helidonmicroをImage Nameとして入力し、Version Tagには1.0を入力します。フルのイメージ名は<DockerHubユーザー名>/helidonmicro:1.0と表示されます。
Docker pushステップでは、<DockerHubユーザー名>/helidonmicroをImage Nameとして入力し、Version Tagには1.0を入力します。そうしたらSaveボタンをクリックしましょう。
HelidonマイクロサービスDockerコンテナをデプロイするビルドジョブを作成する前に、app.yamlファイルを編集し、Dockerイメージ名を修正しておく必要があります。編集するにはGitページに移動し、Helidon.gitリポジトリを選択し、app.yamlファイルリンクをクリックしましょう。
鉛筆のアイコンをクリックして編集します。
イメージ名を<DockerHubユーザー名>/helidonmicro:1.0に更新し、Commitボタンをクリックしてコードの変更をmasterブランチにコミットします。
別のジョブを作成するため、Buildsページに移動して+Create Jobボタンをクリックします。
New Jobダイアログで、NameにDeployHelidonと入力し、Kubectlを持ったTemplateを選択してCreateボタンをクリック。このビルドジョブはBuildHelidonビルドジョブでビルドされたDockerイメージをKubernetesクラスターにデプロイします。
DeployHelidonビルドジョブを設定するにあたりまずやることは、コードの所在するリポジトリを指定して、作業しているブランチを選択することです。Gitタブで、ドロップダウンからGitを追加し、Helidon.gitをGitリポジトリとして選択し、ブランチにはmasterを選択しましょう。
StepsタブではAdd StepドロップダウンからOCIcliとUnix Shellを選んでください。このブログリンクからOCIcliの設定値をどのように決めればいいかを参照してください。その後、Unix Shellビルドステップで、次のスクリプトを入力してください。Kubernetes Cluster IDはOracle Cloud Infrastructureコンソールから入手できます。
1
2
3
4
5
6
7
8
9
10
| mkdir -p $HOME/.kube oci ce cluster create-kubeconfig --cluster-id <oracle cluster= "" container= "" engine= "" for = "" kubernetes= "" ocid= "" > --file $HOME/.kube/config --region us-ashburn-1 export KUBECONFIG=$HOME/.kube/config kubectl create -f app.yaml sleep 30 kubectl get services helidon-quickstart-se kubectl get pods kubectl describe pods </oracle> |
終わったら、Saveボタンをクリックします。
ビルドパイプラインの作成
BuildsページのPipelinesタブに移動し、+Create Pipelineボタンをクリックします。
Create Pipelineダイアログでは、NameにHelidonPipelineといったように入力し、Createボタンをクリック。
BuildHelidonとDeployHelidonビルドジョブをドラッグアンドドロップして連結します。
ビルドジョブ間を結合しているリンクをダブルクリックし、Result ConditionとしてSuccessfulを選択したらApplyボタンをクリック。
以下のようにBuildボタンをクリックして、ビルドパイプラインを実行してみます。BuildHelidonビルドジョブがまず実行され、成功すれば、DeployHelidonビルドジョブが次に実行されてOracle Cloud上のKubernetesクラスターにコンテナがデプロイされます。
ビルドパイプライン内のジョブの実行が終了したら、Jobsタブに移動してDeployHelidonビルドジョブのリンクをクリックします。次にビルド実行のlogアイコンをクリックすると、サービスとデプロイメントが成功したことを示すメッセージが表示されるでしょう。ここでは以下のように、helidon-quickstart-seサービスとデプロイメントがKubernetes上で作成されたログを検索して、マイクロサービスにアクセスするためのパブリックIPアドレスとポート番号を探しましょう。
ログから見つけたIPアドレスとポート番号を以下のフォーマットのURLでブラウザに入力します:
http://<retrieved IP address>:<retrieved port>/greet
すると、ブラウザに”Hello World!”のメッセージが表示されるでしょう。
というわけで、Oracle Developer CloudがあなたのHelidonベースのマイクロサービスの一連のDevOpsライフサイクル管理をどのように手助けしてくれるのか、また、ビルドとOracle Container Engine for Kubernetesへのデプロイがどれほど簡単にできるのかがおわかりいただけたでしょう。
To learn more about other new features in Oracle Developer Cloud, take a look at the What's Newin Oracle Developer Cloud Service document and explore the links it provides to our product documentation. If you have any questions, you can reach us on the Developer Cloud Slack channel or in the online forum.
Oracle Developer Cloudの新しい機能についてもっと知りたい場合は、ドキュメントのWhat's Newをチェックしてそのリンク先のドキュメントを読んでみてください。質問があればDeveloper Cloud Slack channelか、オンラインフォーラムでどうぞ。
Happy Coding!