Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8960

Tektonを使ってAppsodyで作ったNodejsアプリケーションをK8sにデプロイする。

$
0
0

さて、
Tektonを使ってAppsodyで作ったNodejsアプリケーションをK8sにデプロイする。(Tekton準備編)で、Tekton Dashboadの用意ができたら、いよいよAppsodyで作ったNode.jsのモジュールをデプロイしていきます。

今回は私のリポジトリをクローンします。

$ git clone https://github.com/motuo1201/appsody-test-build.git
$ cd appsody-test-build/

一度、ローカルで動かしてみましょう。

こちらの記事にも書きましたが、下記のコマンドでローカルの稼働が確認できます。

$ appsody run
......
[Container] App started on PORT 3000

http://localhost:3000でアクセスが可能になります。文言自体は、app.jsに書かれています。

スクリーンショット
スクリーンショット 2020-01-24 9.05.35.png

app.jsの中身

constapp=require('express')()app.get('/',(req,res)=>{res.send("Hey! Hello Appsody!");});module.exports.app=app;

では、これをいよいよTekton経由でデプロイしてみましょう。

Docker Registoryとアクセスする情報を予め用意する。

Tektonはデプロイをする時に、Docker Registoryを使います。そのため、事前にDocker Hubなどに自分が操作できるDocker Registoryを用意しましょう!

こんな感じ。

スクリーンショット 2020-01-24 9.15.10.png

次に、Kubernetesにdocker hubの認証情報を登録します。
secret.yamlという名前(何でも良いのですが、、、)のファイルを作って、認証情報を作成します。

apiVersion:v1kind:Secretmetadata:name:my-nodejs-dockannotations:tekton.dev/docker-0:https://index.docker.io/v1/type:kubernetes.io/basic-authstringData:username:********password:********

このファイルを作成したら、Kubernetesに登録しましょう。

$ kubectl apply -f secret.yaml 
secret/my-nodejs-dock created

これによって、Tektonからもmy-nodejs-dockという認証情報が登録されたことが確認できます。
スクリーンショット 2020-01-24 9.21.19.png

Tektonを動かすための各種定義を行う。

1.appsodyで作成したモジュールをTektonでデプロイするためのサンプルが既に用意されています。これをCloneしましょう。

$ git clone https://github.com/appsody/tekton-example
$ cd appsody-tekton/tekton-example/

2.次にサービスアカウント作成と適切な権限を付けていきます。(特にファイルの修正はありません)

$ kubectl apply -f appsody-service-account.yaml
serviceaccount/appsody-sa created
$ kubectl apply -f appsody-cluster-role-binding.yaml
clusterrolebinding.rbac.authorization.k8s.io/appsody-admin created

3.登録されたサービスアカウントに、先ほど作成した認証情報を紐づけていきます。

$ kubectl edit serviceaccount appsody-sa

これをするとファイルの修正画面が出るので、secretに先ほど作成した認証のnameを設定
(ここでは最終行に- name: my-nodejs-dockを追加しています。)

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"ServiceAccount","metadata":{"annotations":{},"name":"appsody-sa","namespace":"default"}}
  creationTimestamp: "2020-01-24T00:24:36Z"
  name: appsody-sa
  namespace: default
  resourceVersion: "3056"
  selfLink: /api/v1/namespaces/default/serviceaccounts/appsody-sa
  uid: 257efc19-e7d4-400f-a32c-b758956172e6
secrets:
- name: appsody-sa-token-6tw82
- name: my-nodejs-dock

4.Tektonのパイプラインおよび、タスクの登録をします。(特にファイルの修正はありません)

$ kubectl apply -f appsody-build-task.yaml
task.tekton.dev/appsody-build-task created
$ kubectl apply -f appsody-build-pipeline.yaml
pipeline.tekton.dev/appsody-build-pipeline created

5.Tektonで使用するDockerとgitのリソースを登録します。

appsody-pipeline-resources.yamlにあるDockerのimageとgitのリポジトリを修正します。

apiVersion:v1items:-apiVersion:tekton.dev/v1alpha1kind:PipelineResourcemetadata:name:docker-imagespec:params:-name:urlvalue:index.docker.io/yenomoto1201/appsody-deploy-nodejs#ここを修正type:image-apiVersion:tekton.dev/v1alpha1kind:PipelineResourcemetadata:name:git-sourcespec:params:-name:revisionvalue:master-name:urlvalue:https://github.com/motuo1201/appsody-test-build#ここを修正type:gitkind:List

修正したら、この情報をKubernetesに登録

$ kubectl apply -f appsody-pipeline-resources.yaml
pipelineresource.tekton.dev/docker-image created
pipelineresource.tekton.dev/git-source created

この情報もTekton Dashboad上で確認可能です。
スクリーンショット 2020-01-24 9.33.30.png

docker-image
スクリーンショット 2020-01-24 9.34.07.png

git-source

スクリーンショット 2020-01-24 9.35.13.png

6.いよいよ、動かしてみましょう!

下記のコマンドを実行して、Tekton Pipelineを起動します。

$ kubectl apply -f appsody-pipeline-run.yaml 
pipelinerun.tekton.dev/appsody-manual-pipeline-run created

ダッシュボードのPipelineRunsで処理が実行されていることを確認できます。

スクリーンショット 2020-01-24 9.37.13.png

約5分くらいで処理が完了します。このように各ステップのログを確認することができます。

スクリーンショット 2020-01-24 9.43.57.png

Serviceを確認すると、きちんとデプロイできていることがわかります。

$ kubectl get svc
NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
appsody-test-build   NodePort    10.109.30.147   <none>        3000:32272/TCP   108s
kubernetes           ClusterIP   10.96.0.1       <none>        443/TCP          54m

ここで確認した、PORT:32272を元に、http://localhost:32272/にアクセスしてみます。
スクリーンショット 2020-01-24 9.46.48.png

良い感じですね。
これで、Appsodyを使ったCI/CD環境を構築することができました!


Viewing all articles
Browse latest Browse all 8960

Trending Articles