Tektonパイプラインを最初に見る

Kubernetesは、Dockerオーケストレーションプラットフォームから汎用クラウドオペレーティングシステムへと急速に進化しています。オペレーターのおかげで、Kubernetesは最初に高レベルの概念とビジネスプロセスを管理できます。つまり、ビルディングモジュールブロック、サービス、デプロイを管理するのではなく、これらのビルディングブロックが作成できるものを説明することができます。 、Webサーバー、データベースデータ、継続的デプロイ、証明書管理など。







Tekton Pipelinesは、Kubernetesクラスターにデプロイされると、ビルドタスク、入力と出力を単純な値またはDockerイメージなどの複雑なオブジェクトの形式で定義および実行し、それらのリソースをパイプラインに結合する機能を提供します。これらの新しいKubernetesリソースとそれらを管理するコントローラーは、KubernetesクラスターでホストされるスタンドアロンのCI / CDプラットフォームになります。







この投稿では、MicroK8Sで実行されている単純なビルドパイプラインを見ていきます。







テストKubernetesクラスターの準備



この投稿では、MicroK8Sを使用してKubernetesクラスターを作成しています。MicroK8Sは、Dockerイメージレジストリの1つである公式アドオンの選択を提供するため、ここで役立ちます。パイプラインはDockerイメージを構築するため、どこかでホストする必要があります。MicroK8Sレジストリアドインは、次の1つのコマンドでこの機能を提供します。







microk8s.enable registry
      
      





また、MicroK8SクラスターからのDNSルックアップを有効にする必要があります。これは、DNSアドオンを有効にすることで実行されます。







microk8s.enable dns
      
      





Tektonパイプラインのインストール



Tekton Pipelinesのインストールは、次の1つのコマンドkubectl



(またはmicrok8s.kubectl



この場合)で実行されます。







microk8s.kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
      
      





これで、KubernetesクラスターにTektonリソースを作成できます。







「HelloWorld」タスク



, . , echo



Hello World



, ubuntu



.







YAML helloworldtask.yml



:







apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
  name: echo-hello-world
spec:
  steps:
    - name: echo
      image: ubuntu
      command:
        - echo
      args:
        - "Hello World"
      
      





Kubernetes :







microk8s.kubectl apply -f helloworldtask.yml
      
      





, , - . , Tekton .







YAML helloworldtaskrun.yml



:







apiVersion: tekton.dev/v1alpha1
kind: TaskRun
metadata:
  name: echo-hello-world-task-run
spec:
  taskRef:
    name: echo-hello-world
      
      





Kubernetes :







microk8s.kubectl apply -f helloworldtaskrun.yml
      
      





Docker



hello world, Tekton, Docker. , RandomQuotes.







. .







, , — Git, . , git, URL- , :







apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
  name: randomquotes-git
spec:
  type: git
  params:
    - name: revision
      value: master
    - name: url
      value: https://github.com/OctopusSamples/RandomQuotes-Java.git
      
      





Docker, . MicroK8S, Docker http://registry.container-registry.svc.cluster.local:5000.







image



, Docker, registry.container-registry.svc.cluster.local:5000/randomquotes



:







apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
  name: randomquotes-image
spec:
  type: image
  params:
    - name: url
      value: registry.container-registry.svc.cluster.local:5000/randomquotes
      
      





Docker, Docker .







Docker Docker . Kubernetes Docker, : Docker Docker?







, , Docker CLI , - Docker. , umoci Docker, Kaniko Buildah Docker Docker Podman Docker.







Kaniko Tekton, Docker Docker, Kubernetes. YAML :







apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
  name: build-docker-image-from-git-source
spec:
  inputs:
    resources:
      - name: docker-source
        type: git
    params:
      - name: pathToDockerFile
        type: string
        description: The path to the dockerfile to build
        default: /workspace/docker-source/Dockerfile
      - name: pathToContext
        type: string
        description:
          The build context used by Kaniko
          (https://github.com/GoogleContainerTools/kaniko#kaniko-build-contexts)
        default: /workspace/docker-source
  outputs:
    resources:
      - name: builtImage
        type: image
  steps:
    - name: build-and-push
      image: gcr.io/kaniko-project/executor:v0.17.1
      # specifying DOCKER_CONFIG is required to allow kaniko to detect docker credential
      env:
        - name: "DOCKER_CONFIG"
          value: "/tekton/home/.docker/"
      command:
        - /kaniko/executor
      args:
        - --dockerfile=$(inputs.params.pathToDockerFile)
        - --destination=$(outputs.resources.builtImage.url)
        - --context=$(inputs.params.pathToContext)
      
      





.







, , .







git



:







inputs:
    resources:
      - name: docker-source
        type: git
      
      





image



:







outputs:
  resources:
    - name: builtImage
      type: image
      
      





, , Docker:







spec:
  inputs:
    params:
      - name: pathToDockerFile
        type: string
        description: The path to the dockerfile to build
        default: /workspace/docker-source/Dockerfile
      - name: pathToContext
        type: string
        description:
          The build context used by Kaniko
          (https://github.com/GoogleContainerTools/kaniko#kaniko-build-contexts)
        default: /workspace/docker-source
      
      





, /workspace/docker-source



— , git



, docker-source



, .







, Docker. , gcr.io/kaniko-project/executor:v0.17.1



image, Kaniko:







spec:
  steps:
    - name: build-and-push
      image: gcr.io/kaniko-project/executor:v0.17.1
      # specifying DOCKER_CONFIG is required to allow kaniko to detect docker credential
      env:
        - name: "DOCKER_CONFIG"
          value: "/tekton/home/.docker/"
      command:
        - /kaniko/executor
      args:
        - --dockerfile=$(inputs.params.pathToDockerFile)
        - --destination=$(outputs.resources.builtImage.url)
        - --context=$(inputs.params.pathToContext)
      
      





, . docker-source



randomquotes-git



, builtImage — randomquotes-image



.







:







apiVersion: tekton.dev/v1alpha1
kind: TaskRun
metadata:
  name: build-docker-image-from-git-source-task-run
spec:
  taskRef:
    name: build-docker-image-from-git-source
  inputs:
    resources:
      - name: docker-source
        resourceRef:
          name: randomquotes-git
    params:
      - name: pathToDockerFile
        value: Dockerfile
      - name: pathToContext
        value: /workspace/docker-source
  outputs:
    resources:
      - name: builtImage
        resourceRef:
          name: randomquotes-image
      
      







Tekton . Tekton.







Tekton CLI , kubectl



, MicroK8S microk8s.kubectl



. kubectl



— , MicroK8S kubectl



:







sudo microk8s.kubectl config view --raw > $HOME/.kube/config
      
      





:







tkn taskrun logs build-docker-image-from-git-source-task-run
      
      











Tekton?



Docker, Tekton . Docker, .







Kubernetes . , , ?







, Tekton , . tkn



CLI , kubectl



, . kubectl create -f taskrun.yml



, .







, CI.













, Tekton — . Jenkins X OpenShift Pipelines — , Tekton.









Kubernetes , , , , , . , Kubernetes CI , , Kubernetes.







, Jenkins X OpenShift Pipelines, Tekton . Tekton , , , , .








All Articles