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

可信网站多少钱太原关键词网站排名

可信网站多少钱,太原关键词网站排名,奉贤专业网站建设,wordpress电商优秀Devops简介 k8s助力Devops在企业落地实践 传统方式部署项目为什么发布慢#xff0c;效率低#xff1f; 上线一个功能#xff0c;有多少时间被浪费了#xff1f; 如何解决发布慢#xff0c;效率低的问题呢#xff1f; 什么是Devops#xff1f; 敏捷开发 提高开发效率效率低 上线一个功能有多少时间被浪费了 如何解决发布慢效率低的问题呢 什么是Devops 敏捷开发 提高开发效率及时跟进用户需求缩短开发周期。 敏捷开发包括编写代码和构建代码两个阶段可以使用git或者svn来管理代码用maven对代码进行构建。 持续集成(CI) 持续集成强调开发人员提交了新代码之后立刻自动的进行构建、(单元)测试。根据测试结果可以确定新代码和原有代码能否正确地集成在一起。持续集成过程中很重视自动化测试验证结果对可能出现的一些问题进行预警以保障最终合并的代码没有问题。 常见的持续集成工具 Jenkins Jenkins是用Java语言编写的是目前使用最多和最受欢迎的持续集成工具使用Jenkins可以自动监测到git或者svn存储库代码的更新基于最新的代码进行构建把构建好的源码或者镜像发布到生产环境。Jenkins还有个非常好的功能它可以在多台机器上进行分布式地构建和负载测试 TeamCityTravis CIGo CDBambooGitLab CICodeship 它的好处主要有以下几点 较早的发现错误每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证哪个环节出现问题都可以较早的发现快速的发现错误每完成一部分代码的更新就会把代码集成到主干中这样就可以快速的发现错误比较容易的定位错误提升团队绩效持续集成中代码更新速度快能及时发现小问题并进行修改使团队能创造出更好的产品防止分支过多的偏离主干经常持续集成会使分支代码经常向主干更新当单元测试失败或者出现bug如果开发者需要在没有调试的情况下恢复仓库的代码到没有bug的状态只有很小部分的代码会丢失 持续集成的目的是提高代码质量让产品快速的更新迭代。它的核心措施是代码集成到主干之前必须通过自动化测试。只要有一个测试用例失败就不能集成。 Martin Fowler说过“持续集成并不能消除bug而是让它们非常容易发现和纠正。” 持续交付 持续交付在持续集成的基础上将集成后的代码部署到更贴近真实运行环境的“类生产环境”中。交付给质量团队或者用户以供评审。如果评审通过代码就进入生产阶段。 如果所有的代码完成之后一起交付会导致很多问题爆发出来解决起来很麻烦所以持续集成也就是每更新一次代码都向下交付一次这样可以及时发现问题及时解决防止问题大量堆积。 持续部署 持续部署是指当交付的代码通过评审之后自动部署到生产环境中。持续部署是持续交付的最高阶段。 k8s在Devops中的核心作用 docker和k8s的出现使devops变得更加普及更加容易实现。在传统运维中我们服务时需要针对不同的环境去安装不同的版本部署方式也杂、多。那么有了docker之后一次构建、到处运行只需要构建一次镜像那么只要有docker的主机就可以基于镜像把应用跑起来。 在至多微服务中每天可能需要去处理各种服务的崩溃而服务间的依赖调用关系也极其复杂这队解决问题带来了很大的复杂度。要很好的解决这个问题就需要用到容器编排工具。 kubernetes的出现主宰了容器编排的市场也进化了过去的运维方式将开发与运维联系的更加紧密。而且让devops这一角色变得更加清晰它是目前可用的很流行的容器解决方案之一。 自动化 敏捷开发----持续集成----持续交付----持续部署 多集群管理 可以根据客户需求对开发测试生产环境部署多套kubernetes集群每个环境使用独立的物理资源相互之间避免影响。 多环境一致性 kubernetes是基于docker的容器编排工具因为容器的镜像是不可变的所以镜像把OS、业务代码、运行环境、程序库、目录结构都包含在内镜像保存在我们的私有仓库只要用户从我们提供的私有仓库拉取镜像就能保证环境的一致性。 实时反馈和智能化报表 每次集成或交付都会第一时间将结果通过多途径的方式反馈给你也可以定制适合企业专用的报表平台。 前情提要 我的节点以及k8s版本 主从的ip ipwentaomaster1192.168.184.10wentaonode1192.168.184.20 安装nfs存储 #安装nfs并设置开机自启动主从都需要安装 [rootwentaomaster1 ~]#yum install -y nfs-utils [rootwentaomaster1 ~]#systemctl enable nfs --now [rootwentaonode1 ~]#yum install -y nfs-utils [rootwentaonode1 ~]#systemctl enable nfs --now#配置nfs存储目录仅在master节点配置 [rootwentaomaster1 ~]# vim /etc/exports /data/v2 *(rw,no_root_squash) #使nfs配置生效 [rootwentaomaster1 ~]# exportfs -arv创建数据存储挂载 创建项目所用的名称空间 [rootwentaomaster1 jenkins-k8s]# kubectl create namespace jenkins-k8s namespace/jenkins-k8s created创建存储用的pv [rootwentaomaster1 jenkins-k8s]# cat pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: jenkins-k8s-pv spec:capacity:storage: 10GiaccessModes:- ReadWriteManynfs:server: 192.168.184.10path: /data/v2[rootwentaomaster1 ~]# kubectl apply -f pv.yaml创建pvc [rootwentaomaster1 jenkins-k8s]# cat pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata:name: jenkins-k8s-pvcnamespace: jenkins-k8s spec:resources:requests:storage: 10GiaccessModes:- ReadWriteMany[rootwentaomaster1 ~]# kubectl apply -f pvc.yaml创建serviceaccount并RBAC授权 创建一个服务账号sa并对其授权 [rootwentaomaster1 ~]# kubectl create sa jenkins-k8s-sa -n jenkins-k8s #对sa服务账号授予系统角色cluster-admin的权限【RBAC】 [rootwentaomaster1 ~]# kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s --clusterrolecluster-admin --serviceaccountjenkins-k8s:jenkins-k8s-sa准备项目需要的镜像 在工作节点上从dockerhub上拉取jenkins镜像(我用的2.418) #用于安装jenkins用 [rootwentaonode1 ~]# docker pull jenkins/jenkins:2.418 创建一个dockerfile构建镜像jenkins-slave-latest:v1 [rootwentaomaster1 slave]# cat dockerfile FROM jenkins/jnlp-slave:4.13.3-1-jdk11 USER root # 安装Docker RUN apt-get update apt-get install -y \docker.io # 将当前用户加入docker用户组 RUN usermod -aG docker jenkins RUN curl -LO https://dl.k8s.io/release/stable.txt RUN curl -LO https://dl.k8s.io/release/$(cat stable.txt)/bin/linux/amd64/kubectl RUN chmod x kubectl RUN mv kubectl /usr/local/bin/ ENV DOCKER_HOST unix:///var/run/docker.sock #k8s中装好jenkins后是有主从的构建jenkins时候会在集群里再创建一个jenkins从我用jenkins-slave-latest这个镜像来构建jenkins从 [rootwentaomaster1 slave]# docker build -tjenkins-slave-latest:v1 . 安装jenkins 给nfs的数据目录/data/v2做下权限 [rootwentaomaster1 ~]# chown -R 1000.1000 /data/v2 使用deployment控制器创建jenkins pod [rootwentaomaster1 ~]# cat jenkins-deploy.yaml kind: Deployment apiVersion: apps/v1 metadata:name: jenkinsnamespace: jenkins-k8s spec:replicas: 1selector:matchLabels:app: jenkinstemplate:metadata:labels:app: jenkinsspec:serviceAccount: jenkins-k8s-sacontainers:- name: jenkinsimage: docker.io/jenkins/jenkins:2.418imagePullPolicy: IfNotPresentports:- containerPort: 8080name: webprotocol: TCP- containerPort: 50000name: agentprotocol: TCPresources:limits:cpu: 2000mmemory: 2Girequests:cpu: 500mmemory: 512MilivenessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 60timeoutSeconds: 5failureThreshold: 12readinessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 60timeoutSeconds: 5failureThreshold: 12volumeMounts:- name: jenkins-volumesubPath: jenkins-homemountPath: /var/jenkins_homevolumes:- name: jenkins-volumepersistentVolumeClaim:claimName: jenkins-k8s-pvc [rootwentaomaster1 ~]# kubectl apply -f jenkins-deploy.yaml 给jenkins pod前端加上service对外部提供网络访问 [rootwentaomaster1 ~]# cat jenkins-service.yaml apiVersion: v1 kind: Service metadata:name: jenkins-servicenamespace: jenkins-k8slabels:app: jenkins spec:selector:app: jenkinstype: NodePortports:- name: webport: 8080targetPort: webnodePort: 30002- name: agentport: 50000targetPort: agent [rootwentaomaster1 ~]# kubectl apply -f jenkins-service.yaml #通过kubectl get svc -n 看到对外提供的端口是30002 登录jenkins web页面 浏览器网址栏输入192.168.184.10:30002 可以看到提示为初始密码在跑jenkins的pod里面的/var/jenkins_home/secrets/initialAdminPassword文件中 将密码复制后点击继续 选择“安装推荐的插件” 安装完成之后创建管理员用户 实例配置不改用默认url 更新kubernetes插件 点击安装后下滑到最下面勾选安装后重启 安装完成后再安装jenkins自动化部署的ui界面Blue Ocean 输入之前设置的用户、密码选择保持登录状态 jenkins对接kubernetes自动生成jenkins从节点 新增一个云kubernetes 填写云kubernetes配置内容 名称kuberneteskubernetes地址https://192.168.184.10:6443 6443是kubernetes apiserver的端口 kubernetes命名空间jenkins-k8s Jenkins UI界面配置访问Dockerhub凭据 添加dockerhub凭据 jenkinsk8s自动化发布项目 准备好各个环境的命名空间 #创建开发、生产、测试的命名空间 [rootwentaomaster1 ~]# kubectl create ns devlopment [rootwentaomaster1 ~]# kubectl create ns production [rootwentaomaster1 ~]# kubectl create ns qatest 创建流水线自动化发布任务左侧栏点击新建任务 node(testtan) {stage(Clone) {echo 1.Clone Stagegit url: https://github.com/twttwttwt/jenkins-sample/script {build_tag sh(returnStdout: true, script: git rev-parse --short HEAD).trim()}}stage(Test) {echo 2.Test Stage}stage(Build) {echo 3.Build Docker Image Stagesh docker build -t twttwt/jenkins-demo:${build_tag} .}stage(Push) {echo 4.Push Docker Image StagewithCredentials([usernamePassword(credentialsId: dockerhub, passwordVariable: dockerHubPassword, usernameVariable: dockerHubUser)]) {sh docker login -u ${dockerHubUser} -p ${dockerHubPassword}sh docker push twttwt/jenkins-demo:${build_tag}}}stage(Deploy to dev) {echo 5. Deploy DEVsh sed -i s/BUILD_TAG/${build_tag}/ k8s-dev.yamlsh sed -i s/BRANCH_NAME/${env.BRANCH_NAME}/ k8s-dev.yaml // sh bash running-devlopment.shsh kubectl apply -f k8s-dev.yaml --validatefalse} stage(Promote to qa) { def userInput input(id: userInput,message: Promote to qa?,parameters: [[$class: ChoiceParameterDefinition,choices: YES\nNO,name: Env]])echo This is a deploy step to ${userInput}if (userInput YES) {sh sed -i s/BUILD_TAG/${build_tag}/ k8s-qa.yamlsh sed -i s/BRANCH_NAME/${env.BRANCH_NAME}/ k8s-qa.yaml // sh bash running-qa.shsh kubectl apply -f k8s-qa.yaml --validatefalsesh sleep 6sh kubectl get pods -n qatest} else {//exit}}stage(Promote to pro) { def userInput input(id: userInput,message: Promote to pro?,parameters: [[$class: ChoiceParameterDefinition,choices: YES\nNO,name: Env]])echo This is a deploy step to ${userInput}if (userInput YES) {sh sed -i s/BUILD_TAG/${build_tag}/ k8s-prod.yamlsh sed -i s/BRANCH_NAME/${env.BRANCH_NAME}/ k8s-prod.yaml // sh bash running-production.shsh cat k8s-prod.yamlsh kubectl apply -f k8s-prod.yaml --record --validatefalse}} } 点击保存后回到dashboard可以看到已经多出来了一条任务,点击构建 [rootwentaomaster1 ~]# kubectl get pod -n production [rootwentaomaster1 ~]# kubectl get pod -n devlopment [rootwentaomaster1 ~]# kubectl get pod -n qatest #通过上面可以看到jenkins对接k8s可以把应用发布到k8s集群的开发、测试、生产环境了。 访问github中index配置的web页面 devops自动化版本更新 修改上图web页面的index文件 此时访问web页面暂时没有改动 回到dashboard重新执行一次pipeline文件 可以看到已成功更新 Devops自动化版本回滚 新建任务 node(testtan) {stage(git clone) {git url: https://github.com/twttwttwt/jenkins-rolloutsh ls -alsh pwd }stage(select env) {def envInput input(id: envInput,message: Choose a deploy environment,parameters: [[$class: ChoiceParameterDefinition,choices: devlopment\nqatest\nproduction,name: Env]] ) echo This is a deploy step to ${envInput} sh sed -i s/namespace/${envInput}/ getVersion.sh sh sed -i s/namespace/${envInput}/ rollout.sh sh bash getVersion.sh // env.WORKSPACE pwd() // def version readFile ${env.WORKSPACE}/version.csv // println version }stage(select version) {env.WORKSPACE pwd()def version readFile ${env.WORKSPACE}/version.csvprintln versiondef userInput input(id: userInput,message: 选择回滚版本,parameters: [[$class: ChoiceParameterDefinition,choices: $version\n,name: Version]] )sh sed -i s/version/${userInput}/ rollout.sh }stage(rollout deploy) {sh bash rollout.sh } } 保存后回到首页
http://www.zqtcl.cn/news/697528/

相关文章:

  • 万州网站制作公司阳江市网站建设
  • 下载建设网站软件投资公司注册资金多少
  • 如何创建一个论坛网站免费域名解析平台
  • 国外经典手机网站设计单位做网站有哪些
  • 网站备案 优帮云百度提交入口网址截图
  • 广州五羊建设官方网站富阳区住房和城乡建设局网站
  • 网站代理怎么做的wordpress有什么缺点
  • 哪些网站可以做免费外贸Wordpress首图自动切换
  • 建网站几个按钮公司黄页企业名录在哪里查
  • 网站建设类外文翻译游戏开科技软件免费
  • 黄山家居网站建设怎么样济南在线制作网站
  • 东莞电子产品网站建设营销型网站推广方式的论文
  • 如何寻找做网站的客户聚名网查询
  • 甘肃制作网站凡科快图官网登录入口在线
  • discuz网站建设教学视频教程哪些大型网站有做互联网金融
  • jquery动画特效网站物流网站前端模板下载
  • 上海集团网站建设网站都是用什么语言写的
  • 地铁公司招聘信息网站网站推广页面 英语
  • 廊坊做网站的企业哪家好做网站app价格多少钱
  • wap网站制作当阳网站建设电话
  • 服装电子商务网站建设3000字中装建设有限公司
  • 河南卓越建设工程有限公司网站怎么做垂直门户网站
  • 接单做网页的网站手机端app开发公司
  • 古田路9号设计网站在线制作图片拼图
  • 深圳网站开发ucreator售后服务 网站建设
  • 做网站的语北京比较好的it公司
  • 长春建站模板制作php项目开发案例源码
  • 绍兴seo外包公司山东网站建设优化
  • php做网站知乎境外网站icp备案
  • 做seo网站图片怎么优化地坪漆东莞网站建设技术支持