当前位置: 首页 > news >正文

庆阳网站设计师招聘wordpress 添加微博

庆阳网站设计师招聘,wordpress 添加微博,网站专题制作软件,婚纱摄影网站开发的目的Knative 社区很早就在讨论用 Tekton 替换 Build 模块的事宜。Knative Build 官方已经正式说明不再建议使用 Knative Build 了。 如果你知道 Knative Build 是什么相信你理解起 Tekton 就是很容易的一件事了。 Knative Build 对自己的一句话概述是#xff1a;A Kubernetes-na… Knative 社区很早就在讨论用 Tekton 替换 Build 模块的事宜。Knative Build 官方已经正式说明不再建议使用 Knative Build 了。 如果你知道 Knative Build 是什么相信你理解起 Tekton 就是很容易的一件事了。 Knative Build 对自己的一句话概述是A Kubernetes-native Build resource.Tekton 对自己的一句话概述是 A K8s-native Pipeline resource. https://tekton.dev 可以看到两者的定位非常相近而且在功能上 Tekton 的设计更加的丰富、完整这也是社区最终采用 Tekton 的原因。接下来我们就看一下 Tekton 的核心概念。 Tekton 极速入门 Tekton 主要由如下五个核心概念组成 TaskTaskRunPipelinePipelineRunPipelineResource 这五个概念每一个都是以 CRD 的形式提供服务的下面分别简述一下这五个概念的含义。 Task Task 就是一个任务执行模板之所以说 Task 是一个模板是因为 Task 定义中可以包含变量Task 在真正执行的时候需要给定变量的具体值。Tekton 的 Task 很类似于一个函数的定义Task 通过 inputs.params 定义需要哪些入参并且每一个入参还可以指定默认值。Task 的 steps 字段表示当前 Task 是有哪些子步骤组成的。每一个步骤具体就是一个镜像的执行镜像的启动参数可以通过 Task 的入参使用模板语法进行配置。 apiVersion: tekton.dev/v1alpha1 kind: Task metadata:name: task-with-parameters spec:inputs:params:- name: flagstype: array- name: someURLtype: stringsteps:- name: buildimage: registry.cn-hangzhou.aliyuncs.com/knative-sample/alpine:3.9command: [sh, -c]args: [ echo ${inputs.params.flags} ; echo ${someURL}] TaskRun Task 定义好以后是不能执行的就像一个函数定义好以后需要调用才能执行一样。所以需要再定义一个 TaskRun 去执行 Task。TaskRun 主要是负责设置 Task 需要的参数并通过 taskRef 字段引用要执行的 Task。 apiVersion: tekton.dev/v1alpha1 kind: TaskRun metadata:name: run-with-parameters spec:taskRef:name: task-with-parametersinputs:params:- name: flagsvalue: --set- name: someURLvalue: https://github.com/knative-sample Pipeline 一个 TaskRun 只能执行一个 Task当需要编排多个 Task 的时候就需要 Pipeline 出马了。Pipeline 是一个编排 Task 的模板。Pipeline 的 params 声明了执行时需要的入参。 Pipeline 的 spec.tasks 定义了需要编排的 Task。Tasks 是一个数组数组中的 task 并不是通过数组声明的顺序去执行的而是通过 runAfter 来声明 task 执行的顺序。Tekton controller 在解析 CRD 的时候会解析 Task 的顺序然后依据设定的顺序依次去执行。Pipeline 在编排 Task 的时候需要给每一个 Task 传入必须的参数这些参数的值可以来自 Pipeline 自身的 params。 apiVersion: tekton.dev/v1alpha1 kind: Pipeline metadata:name: pipeline-with-parameters spec:params:- name: contexttype: stringdescription: Path to contextdefault: /some/where/or/othertasks:- name: task-1taskRef:name: buildparams:- name: pathToDockerFilevalue: Dockerfile- name: pathToContextvalue: ${params.context}- name: task-2taskRef:name: build-pushrunAfter:- source-to-imageparams:- name: pathToDockerFilevalue: Dockerfile- name: pathToContextvalue: ${params.context} PipelineRun 和 Task 一样 Pipeline 定义完成以后也是不能直接执行的需要 PipelineRun 才能执行 Pipeline。PipelineRun 的主要作用是给 Pipeline 设定必要的入参并执行 Pipeline。 apiVersion: tekton.dev/v1alpha1 kind: PipelineRun metadata:name: pipelinerun-with-parameters spec:pipelineRef:name: pipeline-with-parametersparams:- name: contextvalue: /workspace/examples/microservices/leeroy-web PipelineResource 前面已经介绍了 Tekton 的四个核心概念。现在我们已经知道怎么定义 task、执行 task 以及编排 task 了。但可能你还想在 Task 之间共享资源这就是 PipelineResource 的作用。比如我们可以把 git 仓库信息放在 PipelineResource 中。这样所有 Pipeline 就可以共享这份数据了。 piVersion: tekton.dev/v1alpha1 kind: PipelineResource metadata:name: wizzbang-gitnamespace: default spec:type: gitparams:- name: urlvalue: https://github.com/wizzbangcorp/wizzbang.git- name: revisionvalue: master 授权信息 git 仓库、镜像仓库这些都是需要鉴权才能使用的。所以还需要一种设定鉴权信息的机制。Tekton 本身是 Kubernetes 原生的编排系统。所以可以直接使用 Kubernetes 的 ServiceAccount 机制实现鉴权。 实例如下 定义一个保存镜像仓库鉴权信息的 secret apiVersion: v1 kind: Secret metadata:name: ack-cr-push-secretannotations:tekton.dev/docker-0: https://registry.cn-hangzhou.aliyuncs.com type: kubernetes.io/basic-auth stringData:username: cleartext non-encodedpassword: cleartext non-encoded 定义 ServiceAccount 并且使用上面的 secret apiVersion: v1 kind: ServiceAccount metadata:name: pipeline-account secrets: - name: ack-cr-push-secret PipelineRun 中引用 ServiceAccount apiVersion: tekton.dev/v1alpha1 kind: PipelineRun metadata:generateName: tekton-kn-sample- spec:pipelineRef:name: build-and-deploy-pipeline ... ...serviceAccount: pipeline-account Hello World https://github.com/knative-sample/tekton-knative 这是一个完整的 Tekton 的 Helle World。下面我们一起体验一下这个 Helle World。 在开始实战之前你需要有一个 Kubernetes 集群并还需要安装 Knative 和 Tekton。tekton-knative 中的 release-v0.5.2.yaml 直接提交到 Kubernetes 集群即可完成 Tekton 的安装。下面我们开始体验使用 Tekton 从源码到构建再到部署的自动化过程。 clone 代码 clone 代码到本地。 git clone https://github.com/knative-sample/tekton-knative创建 PipelineResource 主要内容在 resources/picalc-git.yaml 文件中。如下所示主要是把 https://github.com/knative-sample/tekton-knative 保存在 resource 中给其他资源使用。 apiVersion: tekton.dev/v1alpha1 kind: PipelineResource metadata:name: tekton-knative-git spec:type: gitparams:- name: revisionvalue: master- name: urlvalue: https://github.com/knative-sample/tekton-knative 创建 task 创建 task这个例子中我们创建两个 tasksource-to-image 和 deploy-using-kubectl source-to-image  主要内容在 tasks/source-to-image.yaml 文件中。此 task 的主要功能是把源代码编译成镜像。 主要是使用 kaniko 实现容器内编译 Docker 镜像的能力。此 Task 的参数主要是设置编译上下文的一些信息比如Dockerfile、ContextPath 以及目标镜像 tag 等。 apiVersion: tekton.dev/v1alpha1 kind: Task metadata:name: source-to-image spec:inputs:resources:- name: git-sourcetype: gitparams:- name: pathToContextdescription: The path to the build context, used by Kaniko - within the workspacedefault: .- name: pathToDockerFiledescription: The path to the dockerfile to build (relative to the context)default: Dockerfile- name: imageUrldescription: Url of image repository- name: imageTagdescription: Tag to apply to the built imagedefault: lateststeps:- name: build-and-pushimage: registry.cn-hangzhou.aliyuncs.com/knative-sample/kaniko-project-executor:v0.10.0command:- /kaniko/executorargs:- --dockerfile${inputs.params.pathToDockerFile}- --destination${inputs.params.imageUrl}:${inputs.params.imageTag}- --context/workspace/git-source/${inputs.params.pathToContext}env:- name: DOCKER_CONFIGvalue: /builder/home/.docker deploy-using-kubectl  主要内容在 tasks/deploy-using-kubectl.yaml 文件中。 如下所示这个 Task 主要的作用是通过参数获取到目标镜像的信息然后执行一条 sed 命令把 Knative Service yaml 中的 __IMAGE__ 替换成目标镜像。再通过 kubectl 发布到 Kubernetes 中。 apiVersion: tekton.dev/v1alpha1 kind: Task metadata:name: deploy-using-kubectl spec:inputs:resources:- name: git-sourcetype: gitparams:- name: pathToYamlFiledescription: The path to the yaml file to deploy within the git source- name: imageUrldescription: Url of image repository- name: imageTagdescription: Tag of the images to be used.default: lateststeps:- name: update-yamlimage: alpinecommand: [sed]args:- -i- -e- s;__IMAGE__;${inputs.params.imageUrl}:${inputs.params.imageTag};g- /workspace/git-source/${inputs.params.pathToYamlFile}- name: run-kubectlimage: registry.cn-hangzhou.aliyuncs.com/knative-sample/kubectl:v0.5.0command: [kubectl]args:- apply- -f- /workspace/git-source/${inputs.params.pathToYamlFile} 定义 Pipeline 现在我们已经有两个 Task 了现在我们就用一个 PIpeline 来编排这两个 Task apiVersion: tekton.dev/v1alpha1 kind: Pipeline metadata:name: build-and-deploy-pipeline spec:resources:- name: git-sourcetype: gitparams:- name: pathToContextdescription: The path to the build context, used by Kaniko - within the workspacedefault: src- name: pathToYamlFiledescription: The path to the yaml file to deploy within the git source- name: imageUrldescription: Url of image repository- name: imageTagdescription: Tag to apply to the built imagetasks:- name: source-to-imagetaskRef:name: source-to-imageparams:- name: pathToContextvalue: ${params.pathToContext}- name: imageUrlvalue: ${params.imageUrl}- name: imageTagvalue: ${params.imageTag}resources:inputs:- name: git-sourceresource: git-source- name: deploy-to-clustertaskRef:name: deploy-using-kubectlrunAfter:- source-to-imageparams:- name: pathToYamlFilevalue: ${params.pathToYamlFile}- name: imageUrlvalue: ${params.imageUrl}- name: imageTagvalue: ${params.imageTag}resources:inputs:- name: git-sourceresource: git-source 鉴权信息 如下所示定义一个 Secret 和 ServiceAccount。并且给 ServiceAccount 绑定执行 Knative Service 的权限。 首先创建一个 Secret 保存镜像仓库的鉴权信息如下所示: tekton.dev/docker-0 换成你要推送的镜像仓库的地址username 换成镜像仓库鉴权的用户名password 环境镜像仓库鉴权的密码 apiVersion: v1 kind: Secret metadata:name: ack-cr-push-secretannotations:tekton.dev/docker-0: https://registry.cn-hangzhou.aliyuncs.com type: kubernetes.io/basic-auth stringData:username: cleartext non-encodedpassword: cleartext non-encoded 下面这些信息保存到文件中然后使用 kubectl apply -f 指令提交到 Kubernetes --- apiVersion: v1 kind: ServiceAccount metadata:name: pipeline-account secrets: - name: ack-cr-push-secret---apiVersion: v1 kind: Secret metadata:name: kube-api-secretannotations:kubernetes.io/service-account.name: pipeline-account type: kubernetes.io/service-account-token---kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata:name: pipeline-role rules: - apiGroups: [serving.knative.dev]resources: [services]verbs: [get, create, update, patch]---apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata:name: pipeline-role-binding roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: pipeline-role subjects: - kind: ServiceAccountname: pipeline-account 定义 PIpelineRun ServiceAccount 对应的鉴权信息是通过和 PIpelineRun 绑定的方式执行的。参见 run/picalc-pipeline-run.yaml 文件 apiVersion: tekton.dev/v1alpha1 kind: PipelineRun metadata:generateName: tekton-kn-sample- spec:pipelineRef:name: build-and-deploy-pipelineresources:- name: git-sourceresourceRef:name: tekton-knative-gitparams:- name: pathToContextvalue: src- name: pathToYamlFilevalue: knative/helloworld-go.yaml- name: imageUrlvalue: registry.cn-hangzhou.aliyuncs.com/knative-sample/tekton-knative-helloworld- name: imageTagvalue: 1.0trigger:type: manualserviceAccount: pipeline-account 执行 HelloWorld 准备 PIpeline 的资源 kubectl apply -f tasks/source-to-image.yaml -f tasks/deploy-using-kubectl.yaml -f resources/picalc-git.yaml -f image-secret.yaml -f pipeline-account.yaml -f pipeline/build-and-deploy-pipeline.yaml 执行 create 把 pipelieRun 提交到 Kubernetes 集群。之所以这里使用 create 而不是使用 apply 是因为 PIpelineRun 每次都会创建一个新的kubectl 的 create 指令会基于 generateName 创建新的 PIpelineRun 资源。 kubectl create -f run/picalc-pipeline-run.yaml 查看一下 pod 信息可能是下面这样 └─# kubectl get pod NAME READY STATUS RESTARTS AGE tekton-kn-sample-45d84-deploy-to-cluster-wfrzx-pod-f093ef 0/3 Completed 0 8h tekton-kn-sample-45d84-source-to-image-7zpqn-pod-c2d20c 0/2 Completed 0 8h 原文链接 本文为云栖社区原创内容未经允许不得转载。
http://www.zqtcl.cn/news/201277/

相关文章:

  • 哪里接单做网站怎么个人网站设计
  • 乐陵seo网站优化网站后期维护是做什么
  • 网站导航html源码网站编辑的工作职能有哪些
  • 品牌网站建设网wordpress密码保护文章
  • 体彩网站开发网站建设备案流程图
  • 云南网站建设天度网页界面设计遵循的原则
  • dede多个网站怎么做wordpress+adsense主题
  • 如何做网站营销江苏网站建设系统服务
  • 公司网站需要备案网络设置怎么设置
  • 网站正在建设中中文模板廊坊网站优化
  • 8免费网站建站网页网站模板
  • 网站开发算法面试滨州建设工程备案网站
  • 扬州网站开发个人做美食视频网站
  • 网站建设属于技术服务吗关于网站建设
  • 网站建设推广好处西安工业设计公司
  • 深圳宝安p2p网站系统的建设百度广告联盟标识
  • 企业网站备案怎么填写东莞市场监督管理局官网
  • 网站建站网站91955内蒙古建设集团招聘信息网站
  • 巴中建设厅网站电话seo是网络优化吗
  • 中国做投资的网站做网站的公司怎么推广
  • 专业的广州微网站建设移动应用开发干什么的
  • 网站运营有什么用常熟智能网站开发
  • 如何组建做网站的团队绍兴网站建设推广
  • 资讯类响应式网站模板深圳网站建设培训机构
  • 电子商务网站功能设计3d动画制作过程
  • 随机网站生成器win7asp+sql server 2008做网站
  • 金本网站建设设计江苏建筑业网
  • 校园网站建设的作用淄博网站建设网站推广优化
  • 域名过期了怎么办怎么找回网站校友录网站开发设计
  • 医疗 企业 网站建设seo网络优化是什么工作