Tekton Pipeline의 on GKE Autopilot을 터치했습니다.
개시하다
CI/CD 도구Tekton Pipeline가 있습니다.원래KNative Build로 개발됐던 k8s 로컬리스트의 CI다.
또KNative는 구글이 발기한 OSS 프로젝트이자 구글클라우드런 등의 프로토타입 제품이었다.그래서인지 테크톤도 자꾸 닮았다Cloud Build.K8s가 있다면 시사회부터 구름, 지방 환경 등 어디서나 이동할 수 있고 규모가 간단해 보이는 것이 가장 큰 매력이다.
늘 숙련된 클라우드 빌드와 비슷하고 흥미가 있어서 먼저 GKE Autopilot로 환경을 구축했습니다.
GKE Autopilot 구축
환경 준비
그러면 Autopilot으로 GKE를 구축합니다.그나저나 수중에 있는 환경은 윈도11+WSL2+Ubuntu입니다.
우선 여기 설치Cloud SDK를 참고하세요.
다음으로kubectl을 설치합니다.
sudo apt-get install kubectl
현재 로컬 환경이 준비되어 있기 때문에 GCP에서 GKE 그룹을 만들 준비를 합니다.gcloud services enable container.googleapis.com
gcloud services enable containerregistry.googleapis.com
클러스터 구축
집단명
mycluster
, 지역us-central1
.마음에 드는 이름을 고르시면 됩니다.clusters create-auto
autopilot입니다.노드는 구글의 관리 수업에 활용되기 때문에 팟 수 등에 따라 자동으로 최적화된다.PROJECT_ID=$(gcloud config configurations list | grep True | awk '{print $4}')
CLUSTER=mycluster
REGION=us-central1
gcloud container clusters create-auto mycluster --create-subnetwork name=gke --region us-central1
gcloud container clusters get-credentials $CLUSTER --region $REGION --project $PROJECT_ID
gcloud auth configure-docker
어쨌든 나는 먼저 적당한 컨테이너를 개발할 것이다.$ kubectl create deployment mycluster --image=hello-world
$ kubectl get pods -w
NAME READY STATUS RESTARTS AGE
mycluster-64d6548b76-9m4b4 0/1 Pending 0 10s
$ $ kubectl get nodes
NAME STATUS ROLES AGE VERSION
gk3-mycluster-default-pool-293f6faa-ccqv Ready <none> 4m1s v1.21.6-gke.1500
gk3-mycluster-default-pool-8c110b9e-fgpw NotReady <none> 3s v1.21.6-gke.1500
gk3-mycluster-default-pool-8c110b9e-lqsw Ready <none> 4m1s v1.21.6-gke.1500
노드가 어떻게 하는지 알지?Pod의 상태가 Completed
로 변경되면 로그를 확인합니다.$ kubectl logs pod/mycluster-64d6548b76-9m4b4
Hello from Docker!
This message shows that your installation appears to be working correctly.
~ 略
Hello World를 안전하게 출력합니다.이로써 GKE Autopilot의 빌드 및 기본 동작이 완료되었습니다.Tekton 설치
Tekton에는 여러 제품이 있는데 이번에 주로 설치Tekton Pipeline와 관리 도구Tekton CLI, 웹 UITekton Dashboard를 설치했다.
Piperline 설치
먼저 다음을 참조하여 Pipeline을 설치합니다.
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
Tekton Pipeline 설치는 여기서 마치겠습니다!간단하네.그렇긴 하지만 1분 정도는 오토파일럿이 노드를 늘리거나 줄이는데 시간이 걸리니 아래의 지령Running
까지 기다리세요.$ kubectl get pods --namespace tekton-pipelines --watch
NAME READY STATUS RESTARTS AGE
tekton-pipelines-controller-598cbbf84d-wnh7r 1/1 Running 0 4m5s
tekton-pipelines-webhook-7bcc5b9b69-9z5qf 1/1 Running 0 4m5s
Tekton CLI 설치
그런 다음 관리 명령 Tekton CLI를 설치합니다.참고Setup CLI.
WSL2+Ubuntu입니다. 그래서 appt-get으로 가져왔습니다.
sudo apt update;sudo apt install -y gnupg
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3EFE0E0A2F2F60AA
echo "deb http://ppa.launchpad.net/tektoncd/cli/ubuntu eoan main"|sudo tee /etc/apt/sources.list.d/tektoncd-ubuntu-cli.list
sudo apt update && sudo apt install -y tektoncd-cli
이렇게 하면 돼!이렇게 생각하면서 집행을 했는데 뭔가 잘못된 것 같아...$ tkn version
tkn: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by tkn)
tkn: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by tkn)
GLBC 버전이 잘못된 것 같습니다.내가 가지고 있는 환경 버전을 확인해 볼게.$ ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9.2) 2.31
2.3.1 맞죠.WSL2에 기본적으로 설치된 Ubuntu는 20.4 버전이므로 적합하지 않을 수 있습니다.최신 Ubuntu 21.10으로 업그레이드할 수 있지만 번거로워서 다음과 같은 개발 환경용 Dookcerfile을 만들었습니다.이쪽을 구축하고 아래처럼 컨테이너 실행을 시작하면 됩니다.
$ docker run -it -v $HOME:/home/user -v /var/run/docker.sock:/var/run/docker.sock koduki/env-dev4tekton
user@5297fd802e46:~$ tkn version
Client version: 0.22.0
Pipeline version: v0.32.1
이렇게 하면 $HOME을 덮어 마운트하여 로컬 환경과 동시에 사용할 수 있습니다.또한 /var/run/docker.sock
도 마운트되어 있어 Docker 명령과kubectl을 실행하고 호스트와 용기에서 공유할 수 있습니다.보안상 호스트에 영향을 미치기 때문에 추천하지 않지만 이번에는 호스트에 영향을 주고 싶어서 문제없습니다.이 방법은 개발 환경 전체를 포장할 수 있어 매우 편리하기 때문에 추천합니다.Tekton Dashboard 설치
관리 도구는 Tekton CLI만으로도 충분하지만 웹 UI를 원하십니까?바로 Tekton Dashboard입니다.
도입은 K8s에서만 디자인할 수 있기 때문에 간단합니다.
kubectl apply --filename https://github.com/tektoncd/dashboard/releases/latest/download/tekton-dashboard-release.yaml
이렇게 하면 됩니다.그리고 Pod의 상태를 관찰하고 depro의 완성을 기다립니다.$ kubectl get pods --namespace tekton-pipelines --watch
NAME READY STATUS RESTARTS AGE
tekton-pipelines-controller-598cbbf84d-wnh7r 1/1 Running 0 7h4m
tekton-pipelines-webhook-7bcc5b9b69-9z5qf 1/1 Running 0 7h4m
tekton-dashboard-757d97b48d-8xxzc 0/1 Pending 0 0s
tekton-dashboard-757d97b48d-8xxzc 0/1 Pending 0 0s
일어서kube-proxy로 그룹 IP에 접근합니다.이것은 방금 제작한 개발 환경용 용기가 아니라 WSL2에서 직접 수행한다.$ alias open="/mnt/c/Progra~2/Microsoft/Edge/Application/msedge.exe"
$ kubectl proxy --port=8080
$ open http://localhost:8080/api/v1/namespaces/tekton-pipelines/services/tekton-dashboard:http/proxy/
웹 UI 떴죠?이렇게 준비하면 완성된다.
Tekton으로 구축
Hello World
먼저 베껴쓰기자습서를 한 다음 Tekton을 실행합니다.
task-hello.yaml
는 다음과 같이 제작하고 응용한다.apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: echo-hello-world
spec:
steps:
- name: echo
image: ubuntu
command:
- echo
args:
- "Hello World"
$ kubectl apply -f task-hello.yaml
task.tekton.dev/echo-hello-world created
tekton-cli로Task의 사과 결과를 볼게요.$ tkn task describe echo-hello-world
Name: echo-hello-world
Namespace: default
🦶 Steps
∙ echo
Task는 echo-hello-world
라는 이름으로 등록되어 Stepecho
로 등록되었습니다.YAML을 보면 알 수 있듯이 echo-step에서 매개 변수를 Hello World
로 설정해서 echo를 실행합니다.이 Task 제작은 Jenkins 같은 표현으로'숙제의 제작'이다.계속 실행하세요.다음과 같이 YAML을 애플 작업에 쓰십시오.
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
name: echo-hello-world-task-run
spec:
taskRef:
name: echo-hello-world
$ kubectl apply -f taskrun-hello.yaml
taskrun.tekton.dev/echo-hello-world-task-run created
taskRef에서 echo-hello-world
를 지정하고 실행할 작업을 지정합니다.tekton-cli의 결과를 봅시다.$ tkn task describe echo-hello-world
Name: echo-hello-world
Namespace: default
🦶 Steps
∙ echo
🗂 Taskruns
NAME STARTED DURATION STATUS
echo-hello-world-task-run 35 minutes ago 1 minute Succeeded
실행 결과는 다음과 같은 Pod 로그를 통해 확인할 수 있습니다.$ tkn taskrun logs echo-hello-world-task-run3
[echo] Hello World
계기판도 다음과 같이 확인할 수 있다.총결산
어쨌든 이렇게 하면 환경을 구축할 수 있다.앞으로 나는 아래의 항목을 총결하고 싶다.
그럼 해피해킹!
Reference
이 문제에 관하여(Tekton Pipeline의 on GKE Autopilot을 터치했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/koduki/articles/d48745919373a0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)