https://blogs.oracle.com/developers/deploy-containers-on-oracle-container-engine-for-kubernetes-using-developer-cloud
前回のエントリでは、Oracle Developer Cloudを使ってビルドし、Node.jsマイクロサービスのDockerイメージをDockerHubにプッシュする方法をご紹介しました。
Build and Deploy Node.js Microservice on Docker using Oracle Developer Cloudこのエントリでは、Oracle Developer Cloudを使ってDockerHubにプッシュしたDockerイメージをContainer Engine for Kubernetes(OKE)にデプロイする方法をご紹介します。
https://blogs.oracle.com/developers/build-deploy-nodejs-microservice-on-docker-using-oracle-developer-cloud
DockerHub
https://hub.docker.com/
Container Engine for Kubernetes
Container Engine for Kubernetes(OKE)はOracle Cloud Infrastructure(OCI)のもつ管理、セキュリティ、予測可能なパフォーマンスを備えた、高可用性クラスタを実行するためのdeveloper-friendlyでcontainer-nativeかつenterprise-readyなマネージドKubernetesサービスです。以下のリンクでOKEの紹介をしています。Container Engine
https://cloud.oracle.com/containers/kubernetes-engine
Prerequisites for Kubernetes Deployment
- Oracle Cloud Infrastructure (OCI) アカウントにアクセス
- OCIにKubernetesクラスタを構成
以下のチュートリアルでOCI上にKubernetesクラスタを構成する手順を説明しています。
Creating a Cluster with Oracle Cloud Infrastructure Container Engine for Kubernetes and Deploying a Sample App
https://www.oracle.com/webfolder/technetwork/tutorials/obe/oci/oke-full/index.html
Set Up the Environment:
Create and Configure Build VM Templates and Build VMsビルドジョブ実行のために必要なソフトウェアを含むBuild VMテンプレートおよびBuild VMを作成する必要があります。
ユーザーのアバターをクリックして、メニューからOrganizationを選択します。

Click VM Templates をクリックすると New Template 作成ダイアログが出ますので、テンプレート名(例えばKubernetes Template)を入力し、プラットフォームに”Oracle Linux 7"を選択して、Createボタンをクリックしましょう。

テンプレート生成完了後、Configure Softwareをクリックします。

構成時に利用可能なソフトウェアバンドルから、kubectlとOCIcliを選択(Python3 3.6も追加するように尋ねられることでしょう)し、+をクリックしてこれらのソフトウェアバンドルをテンプレートに追加します。

Done をクリックして、Build VMテンプレートのためのソフトウェア構成を完了します。

Virtual Machinesのページで+New VM をクリックし、現れるダイアログにて作成したいVMの個数と先ほど作成したVMテンプレート(Kubernetes Template)を選択します。

Add をクリックしてVMを追加します。

Kubernetes deployment scripts
Projectページで + New Repository をクリックして新たなリポジトリを追加します。
リポジトリ作成後、Developer CloudはCodeページに移動し、NodejsKubernetesリポジトリが表示されます。 +Fileボタンをクリックすると、リポジトリに新しいファイルが作成されます(リポジトリ内のREADMEファイルは、プロジェクトの作成時に作成されたものです)。

以下のスクリプトをテキストエディタにコピーし、nodejs_micro.yamlという名前でファイルに保存します。
Commit ボタンをクリックしてファイルを作成し、コード変更をコミットします。apiVersion: apps/v1beta1 kind: Deployment metadata: name: nodejsmicro-k8s-deployment spec: selector: matchLabels: app: nodejsmicro replicas: 1 # deployment runs 1 pods matching the template template: # create pods using pod definition in this template metadata: labels: app: nodejsmicro spec: containers: - name: nodejsmicro image: abhinavshroff/nodejsmicro4kube:latest ports: - containerPort: 80 #Endpoint is at port 80 in the container --- apiVersion: v1 kind: Service metadata: name: nodejsmicro-k8s-service spec: type: NodePort #Exposes the service as a node port ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nodejsmicro

Commit changesダイアログ内のCommit ボタンをクリックします。

以下のスクリーンショットのように、 nodejs_micro.yaml ファイルがNodejsKubernetes.git リポジトリのファイルリストに現れるはずです。

Configuring the Build Job
ナビゲーションバーの Build をクリックしてBuildページを表示します。+New Job ボタンをクリックして、新規ビルドジョブを作成します。このダイアログでは、ジョブ名として NodejsKubernetesDeploymentBuild を、Software TemplateのドロップダウンリストからSoftware Templateとして Kubernetes Template を選択します。その上で、Create Jobボタンをクリックしてビルドジョブを作成します。
ビルドジョブ作成後、構成画面に遷移します。タブをクリックしてリポジトリのドロップダウンリストからNodejsKubernetes.git を選択します。これはnodejs_micro.yaml ファイルを作成したのと同じリポジトリです。
Branchのドロップダウンリストからmasterを選択します。

In the Builders タブでAdd Builderドロップダウンをクリックし、ドロップダウンリストからOCIcli Builder を選択します。

OCIcli Builderフォームの各入力フィールドへの入力必要事項を確認し、これらの値の取得箇所を調べるには、以下のエントリもしくは以下のドキュメントの章をご覧ください。
Oracle Cloud Infrastructure CLI on Developer CloudNote: 下記スクリーンショット中の値はセキュリティ上の理由で難読化しています。
https://blogs.oracle.com/developers/oracle-cloud-infrastructure-cli-on-developer-cloud
Oracle® Cloud - Using Oracle Developer Cloud Service
Access Oracle Cloud Infrastructure Services Using OCIcli
https://docs.oracle.com/en/cloud/paas/developer-cloud/csdcs/manage-project-jobs-and-builds.html#GUID-DD932D11-2A66-4C45-9E0C-598E07984C9F

Add Builder ドロップダウンリストを再度クリックしてUnix Shell Builderを選択します。

Unix Shell Builderのテキスト領域に、Kubernetes構成ファイルをダウンロードし、以前のエントリに記載した手順に従って作成したOKE上のコンテナにデプロイするするためのスクリプトを追加します。
Build and Deploy Node.js Microservice on Docker using Oracle Developer CloudSaveボタンをクリックしてビルドジョブを保存します。
https://blogs.oracle.com/developers/build-deploy-nodejs-microservice-on-docker-using-oracle-developer-cloud

This このスクリプトはkubeディレクトリを作成し、OCIcliコマンドのmkdir -p $HOME/.kube oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaafrgkzrwhtimldhaytgnjqhazdgmbuhc2gemrvmq2w --file $HOME/.kube/config --region us-ashburn-1 export KUBECONFIG=$HOME/.kube/config kubectl config view kubectl get nodes kubectl create -f nodejs_micro.yaml sleep 120 kubectl get services nodejsmicro-k8s-service kubectl get pods kubectl describe pods
oci ce cluster
を使ってKubernetesクラスタ構成ファイルをダウンロードした上で、KUBECONFIG環境変数を設定します。kubectl configコマンドとkubectl get nodesコマンドは、クラスタ構成の表示とクラスタのノードの詳細を表示するものです。kubectl createコマンドは、実際にKubernetesクラスタにDockerコンテナをデプロイします。getサービスを実行し、get podsコマンドを実行して、デプロイ済みコンテナのIPアドレスとポート番号を取得します。 nodejsmicro-k8s-serviceという名称は、nodejs_micro.yamlファイルで事前に構成されていたことに注意してください。
Note: クラスタのOCIDは、上のスクリプトに記載してあるため、各々の環境に合わせて変更する必要があります。
Build NowボタンをクリックしてKubernetesのデプロイメント・ビルドを開始します。Build Logアイコンをクリックしてビルド実行ログを閲覧できます。

ビルドジョブ実行の成功後、ビルドログを確認してKubernetesクラスタにデプロイされたサービスのIPアドレスとポート番号を取得できます。IPアドレスとポート番号はYAMLファイルで構成したデプロイメント名よりも下で探す必要があります。

取得したIPアドレスとポート番号を以下の形式で使い、ブラウザで出力を確認してください。
http://<IP Address>:port/messageNote: メッセージ出力は、コンテナ化されたNode.js RESTアプリケーションで作成したものに基づくため、ここで示したものと異なる結果を出力する場合があります。

Oracle Developer CloudがOKEでDockerコンテナの自動ビルドや自動デプロイの管理プロセスの合理化、簡素化する方法をご紹介しました。
Happy Coding!
**このエントリで記載している内容は原著者の意見であり、必ずしもOracleの意見を反映するものではありません。
0 件のコメント:
コメントを投稿