[Cloud, Kubernetes, Docker] Deploy containers on Oracle Container Engine for Kubernetes using Developer Cloud

原文はこちら。
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
https://blogs.oracle.com/developers/build-deploy-nodejs-microservice-on-docker-using-oracle-developer-cloud
DockerHub
https://hub.docker.com/
このエントリでは、Oracle Developer Cloudを使ってDockerHubにプッシュしたDockerイメージをContainer Engine for Kubernetes(OKE)にデプロイする方法をご紹介します。

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

  1. Oracle Cloud Infrastructure (OCI) アカウントにアクセス
  2. 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をクリックします。


構成時に利用可能なソフトウェアバンドルから、kubectlOCIcliを選択(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という名前でファイルに保存します。
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 ボタンをクリックしてファイルを作成し、コード変更をコミットします。


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 Cloud
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
Note: 下記スクリーンショット中の値はセキュリティ上の理由で難読化しています。


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


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


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
This このスクリプトはkubeディレクトリを作成し、OCIcliコマンドの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/message
Note: メッセージ出力は、コンテナ化されたNode.js RESTアプリケーションで作成したものに基づくため、ここで示したものと異なる結果を出力する場合があります。



Oracle Developer CloudがOKEでDockerコンテナの自動ビルドや自動デプロイの管理プロセスの合理化、簡素化する方法をご紹介しました。

Happy Coding!

**このエントリで記載している内容は原著者の意見であり、必ずしもOracleの意見を反映するものではありません。

0 件のコメント:

コメントを投稿