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 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
, .
, Tekton — . Jenkins X OpenShift Pipelines — , Tekton.
Kubernetes , , , , , . , Kubernetes CI , , Kubernetes.
, Jenkins X OpenShift Pipelines, Tekton . Tekton , , , , .