使用Tekton在Appsody上创建的Nodejs应用程序进行K8s部署

好的,

在使用Tekton通过Appsody创建的Node.js应用程序上,部署到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的内容

const app = require('express')()

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

module.exports.app = app;

现在,让我们最终通过Tekton来部署这个。

预先准备Docker存储库的访问信息。

在部署时,Tekton使用Docker Registry。因此,请提前准备一个可以操作的Docker Registry,比如Docker Hub!

差不多这样。

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

接下来,我们将在Kubernetes中注册Docker Hub的认证信息。
创建一个名为secret.yaml(任意名称)的文件,并生成认证信息。

apiVersion: v1
kind: Secret
metadata:
  name: my-nodejs-dock
  annotations:
    tekton.dev/docker-0: https://index.docker.io/v1/
type: kubernetes.io/basic-auth
stringData:
  username: ********
  password: ********

创建这个文件后,让我们把它注册到Kubernetes上去。

$ kubectl apply -f secret.yaml 
secret/my-nodejs-dock created
スクリーンショット 2020-01-24 9.21.19.png

进行各种定义以使用Tekton进行动作。

已经为使用Appsody创建的模块在Tekton中部署提供了示例。让我们克隆它。

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

接下来,我们将创建一个服务账号并为其添加适当的权限。(无需进行特定文件的修改)

$ 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: 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

使用Tekton时,需要注册Docker和git的资源。

修改appsody-pipeline-resources.yaml中的Docker镜像和Git仓库。

apiVersion: v1
items:
- apiVersion: tekton.dev/v1alpha1
  kind: PipelineResource
  metadata:
    name: docker-image
  spec:
    params:
    - name: url
      value: index.docker.io/yenomoto1201/appsody-deploy-nodejs #ここを修正
    type: image
- apiVersion: tekton.dev/v1alpha1
  kind: PipelineResource
  metadata:
    name: git-source
  spec:
    params:
    - name: revision
      value: master
    - name: url
      value: https://github.com/motuo1201/appsody-test-build #ここを修正
    type: git
kind: List

一旦修正完成后,将此信息注册到Kubernetes中。

$ kubectl apply -f appsody-pipeline-resources.yaml
pipelineresource.tekton.dev/docker-image created
pipelineresource.tekton.dev/git-source created
スクリーンショット 2020-01-24 9.33.30.png
スクリーンショット 2020-01-24 9.34.07.png

Git源码

スクリーンショット 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

通过检查服务,可以确定部署成功。

$ 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
スクリーンショット 2020-01-24 9.46.48.png

这感觉很不错。
成功搭建了一个使用Appsody的CI/CD环境!

bannerAds