dashboard 镜像源_使用 tekton 做 CI/CD
项目源码:The Tekton Pipelines project provides k8s-style resources for declaring CI/CD-style pipelines.Tekton管道项目为声明CI/ cd风格的管道提供了k8风格的资源。安装Install Tekton Pipelineskubectl apply --filename https://storage
项目源码:
The Tekton Pipelines project provides k8s-style resources for declaring CI/CD-style pipelines.
Tekton管道项目为声明CI/ cd风格的管道提供了k8风格的资源。
安装
Install Tekton Pipelines
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
Install Tekton CLI (tkn)
curl -LO https://github.com/tektoncd/cli/releases/download/v0.7.1/tkn_0.7.1_Linux_x86_64.tar.gz
# Change destination directory as needed
tar xvzf tkn_0.7.1_Linux_x86_64.tar.gz -C ~/bin
Install Tekton dashboard 仪表盘
kubectl apply --filename https://github.com/tektoncd/dashboard/releases/download/v0.5.1/tekton-dashboard-release.yaml
更改镜像源
默认镜像源安装时的问题解决:
两个yaml 中创建资源时,pull 镜像用的镜像库是国外的,gcr.io 需要替换成国内的镜像源:gcr.azk8s.cn
如果使用原来的gcr.io , 资源创建成功后在启动的过程中,pod状态一直是 imagepullbackoff , 查看pod 内部,是无法pull 镜像所致。get pods --namespace tekton-pipelines --watch
get pods --namespace describe pod
解决方法:#将资源删除
kubectl delete--filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
kubectl delete --filename https://github.com/tektoncd/dashboard/releases/download/v0.5.1/tekton-dashboard-release.yaml
# 下载yaml 文件
# 注意如果因为我们下面要替换的国内源不是即时更新的,有一个同步时间差。
# 如果下载latest release 可能会遇到下载到昨天发布的最新版本,而使用国内源时会出现找不到最新镜像ID. 所以在更新之前可以在官网看一下最新版本是不是昨天才更新的版本,如果是建议选上一个版本
# 如果latest 是几天之前的,则没有问题。
# 官网release : https://github.com/tektoncd/pipeline/releases
# https://storage.googleapis.com/tekton-releases/pipeline/previous/vx.xx.x/release.yaml
wget https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
wget https://github.com/tektoncd/dashboard/releases/download/v0.5.1/tekton-dashboard-release.yaml
#修改yaml 里面的镜像库
vi release.yaml
:%s/gcr.io/gcr.azk8s.cn/g
:wq
vi tekton-dashboard-release.yaml
:%s/gcr.io/gcr.azk8s.cn/g
:wq
#重新创建资源
kubectl apply -f release.yaml
kubectl apply -f tekton-dashboard-release.yaml
#查看pods 运行状态
kubectl get pods --namespace tekton-pipelines --watch
NAME READY STATUS RESTARTS AGE
tekton-dashboard-7bb59dd55-x4q4q 0/1 ContainerCreating 0 10s
tekton-pipelines-controller-6f9dc7b8f9-99bd9 1/1 Running 0 10m
tekton-pipelines-webhook-69f557c7ff-pqml8 1/1 Running 0 10m
tekton-dashboard-7bb59dd55-x4q4q 0/1 Running 0 45s
tekton-dashboard-7bb59dd55-x4q4q 1/1 Running 0 50s
HelloWork TaskRun
准备好 Resource
task : task-hello-world.yaml
taskrun : taskrun-hello-world.yaml
kustomization : 配置以上资源
实例:root@vm1:~/k8s/tekton/helloworld# ll
total 20
drwxr-xr-x 2 root root 4096 Apr 15 11:25 ./
drwxr-xr-x 3 root root 4096 Apr 15 11:23 ../
-rw-r--r-- 1 root root 67 Apr 15 11:25 kustomization.yaml
-rw-r--r-- 1 root root 196 Apr 2 13:23 task-hello-world.yaml
-rw-r--r-- 1 root root 134 Apr 2 13:23 taskrun-hello-world.yaml
root@vm1:~/k8s/tekton/helloworld# cat task-hello-world.yaml
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: echo-hello-world
spec:
steps:
- name: echo
image: ubuntu
command:
- echo
args:
- "hello world"
root@vm1:~/k8s/tekton/helloworld# cat taskrun-hello-world.yaml
apiVersion: tekton.dev/v1alpha1
kind: TaskRun
metadata:
name: echo-hello-world-task-run
spec:
taskRef:
name: echo-hello-world
root@vm1:~/k8s/tekton/helloworld# cat kustomization.yaml
resources:
- task-hello-world.yaml
- taskrun-hello-world.yaml
root@vm1:~/k8s/tekton/helloworld# kubectl apply -k .
常用检查命令tkn taskrun describe tkn taskrun logs
常见debug 命令
kubectl get pods --watch
kubectl descibe pod xxxxx
kubectl logs 查看所有steps
kubectl logs --container/-c
#持续观察pod状态的变化
kubectl get pods --watch
#当状态为error时,查看这个pod 的log
kubectl descibe pod
#在上面的describe 的详情页面找到发生Error的步骤:如step-build-and-push, 查看此阶段的log
kubectl logs --container step-build-and-push
#这个log的内容其实可以在执行的节点上找到对应的容器,为vm2上容器log
docker container logs fc7d1c46d52c --tail 10
应用一个 TaskRun创建一个 secret
创建各种资源: git , image, serviceaccout , taskgit: 指 代码库的资源 ,比如gitlab
image: 指定 docker build 的image 需要推送的镜像库registry
serviceAccount: 指定镜像库的认证信息,引用上面创建的secret
task: 指定 任务 的过程 ,比如使用 git 类型作为输入,image 类型作为输出,执行step 的步骤创建taskrun : 用来引用上面的创建的task 和其他各种资源。
kubectl create secret docker-registry regcred \
--docker-server=registry.gitlab.systems.com \
--docker-username=xxxx \
--docker-password=xxxx \
--docker-email=xxxxxx@china.com.cn
# 例子参见 官网
kubectl apply -f pipelineresource-ci-git-repo.yaml
kubectl apply -f pipelineresource-cointainer-registry.yaml
kubectl apply -f tekton-docker-cred-service.yaml
kubectl apply -f task-build-image.yaml
kubectl apply -f taskrun-build-docker-image.yaml
应用一个 pipelineRun创建一个 secret
创建各种资源: git , image, serviceaccout , task,clusterrole,clusterrolebinding ,pipelinegit: 指 代码库的资源 ,比如gitlab
image: 指定 docker build 的image 需要推送的镜像库registry
serviceAccount: 指定镜像库的认证信息,引用上面创建的secret
clusterrole:创建一个集群角色
clusterrolebinding:将集群角色和serviceaccout 绑定在一起
task: 指定 任务 的过程 ,比如使用 git 类型作为输入,image 类型作为输出,执行step 的步骤
task: 指定部署任务。
pipeline: 对各个task 编排,传参创建pipelinerun : 用来引用上面的创建的pipeline 和其他资源一起应用。
kubectl create clusterrole tekton-role \
--verb=get,list,watch,create,update,patch,delete \
--resource=deployments,deployments.apps,jobs
kubectl create clusterrolebinding tekton-binding \
--clusterrole=tekton-role \
--serviceaccount=default:docker-cred-service
# 例子参见 官网
# https://github.com/tektoncd/pipeline/blob/master/docs/pipelineruns.md
kubectl apply -f pipelineresource-ci-git-repo.yaml
kubectl apply -f pipelineresource-cointainer-registry.yaml
kubectl apply -f tekton-docker-cred-service.yaml
kubectl apply -f task-build-image.yaml
kubectl apply -f task-deploy-using-kubectl.yaml
kubectl apply -f pipeline.yaml
kubectl apply -f pipelinerun.yaml
部署 tekon 仪表盘
下载 dashboard 的yaml
修改 yaml 文件中的镜像库为国内镜像
gcr.azk8s.cn/tekton-releases/github.com/tektoncd/dashboard/cmd/dashboard修改service 的类型为NodePort
在yaml 文件的tekton-dashboard的定义下,spec 下加上type: NodePort应用yaml , 安装dashboardkubectl apply -f dashboard.yaml 查看服务的nodeport , 30910kubectl get svc --all-namespaces
tekton-pipelines tekton-dashboard NodePort 10.111.144.179 9097:30910/TCP 31s浏览器访问,使用集群节点ip加nodeport 30910
比如http://vm1:30910
更多推荐
所有评论(0)