DevOps:详细计划,日拱一卒,知识图谱打造中,可能涉及技术限制,不会分享于此
最佳实践:现有的实践,目录结构(即架构)列于各个工具文章内。
实践案例及经验总结(开始按照案例整理每个案例的经验和分析):
案例二:某美国公司(见文章“美国公司实践”),基于多云的一次实践(尚未整理)
案例三:中国it巨头(见文章“自建公有云平台实践”),基于类似aws的平台的开发经验(尚未整理)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
现有架构案例(未完成):清楚每一个工具的搭建及使用方式,优缺点。
安全:Hashicorp Vault(密码等敏感信息),Veracode(漏洞扫描),Blackduck(开源代码扫描),Docker,Cloud Account Auditing(what???)
自动化测试:selenium(框架),cucamber,robotframework
CI/CD:Jenkins,Docker
监控:
代码管理:gtihub(搭建及使用??),sourcetree(),git(自建的git server,整个搭建过程?),
存储:docker镜像,文件
网络:DNS
服务器:
k8s:
日志:ELK(elastic search,logstash,kibana),sumologic
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Devops一百问:
1.k8s环境下是否需要主机管理平台?估计不需要了……看体量?这也是k8s牛逼的地方
2.k8s环境下,jenkins的执行日志持久化怎么处理的?同样,其他的文件及数据的持久化是怎么处理的?具体实现方式?
3.一个k8s环境可以容纳多少个服务?入门k8s应该就明了了
4.当前的部署方式?灰度?蓝绿?金丝雀?百分比?
5.各种脚本的意义:会用,一切以自动化为核心。
1.https???未完成
2.git部署??未完成
3.各种sql??未完成
4.AWS VPC subnet,routetable
5.计算机网络
6.vault-2019/01/23,有技术图谱,
7.LDAP: 已完成https://blog.csdn.net/weixin_42578481/article/details/80863890 https://www.cnblogs.com/wilburxu/p/9174353.html
8.python爬虫
9.jira
10.confluence
方法论:架构图搭建后,针对每一个工具:why(为什么用这个,相似的工具还有哪些?),how(怎么集成?怎么安装?怎么配置?),需要补充每一个工具的这些信息
1.项目人员提供业务架构,是否是微服务?服务间调用顺序?数据库?
2.根据具体业务,生成一张图标,每一组件备注 对应的实现方式(比如数据库是否使用aws上的)(考验功底的时候到了)
3.梳理2中的关系图,网络,生成矩阵表
4.脚本开发
5.验收
当务之急:jenkins,k8s,docker,terraform
Iaas,Paas,Saas演进:I 是基础机构,P是平台级,S是服务级。http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html
披萨论:I 是拿了工具,自己做披萨,P 是有了现成的材料,直接烤。S是直接买来披萨贴logo,涵盖了产品的开发,客户只提出产品级的需求(这个是不是比较扯?版权归谁?)
hubspot???
openshift???
集群管理:docker,k8s
CI:gradle,jenkins
CD:ansible
存储:AWS的EFS,EBS,S3
构建包存储:Artifactory(有的也用nexus),具体见artifactory篇
部署方式:蓝绿,百分比部署,金丝雀部署,怎么实现?
iaas:terraform,ansible
平台: AWS,google,Azure
集成平台:cloudbees,jenkins
测试:gauge(类似robotframework,接口测试),jmeter(性能测试)
日志: sumologic
代码管理 sourcetree(拉取,比对和commit),类似于git图形界面,优点??
语言:groovy,python
边缘技术:
nodejs 的包安装软件npm
python 的软链接
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<具体搭建方法>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Artifactory: 是一个库,类似于nexus,jenkins与artifactory的衔接,首先安装这个插件,在jenkins的manage里的sys config进行配置,里面有一项是artifactory,具体参数值一目了然。对于multibranch类型,需要在项目里进入manage jenkin然后设置,jenkins内调用artifactory的语法,请见https://www.jfrog.com/confluence/display/RTF/Working+With+Pipeline+Jobs+in+Jenkins
Jenkins:旧有是运行于实体机,新的方案是通过k8s进行管理并实例化,而且用的是cloudbees。不再是免费的jenkins
ansible操作aws:在ansible中传递参数key和secret后就可以操作aws,当环境变量中有AWS_ACCESS_KEY_ID
之类的内定变量时,即可直接引用,不必在yaml内显示引用。比如在jenkins内使用withcredential引用了aws的证书,即可直接使用ansible操作aws。针对aws的主机经常变化的问题,可以使用ec2.py那个脚本获取主机(google可搜索到,也可以https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html#inventory-script-example-aws-ec2),与ec2.py配合,当只想取出某个账户下或某个区的主机列表时,可以使用--profile profile,这里的profile是一个文件,里面可以像定义主机和主机组一样赋值aws账户和密码,这样就获取该区的主机列表。
》〉》〉》〉》〉》〉》〉》〉》〉》〉》〉》〉》〉》
思维反推大法:作为devops,原则是以实现最终业务为核心,所以,当绘制一个框架流程图的时候,首先画出来的应该是“客户”的最终要实现的目标,比如部署后的目录结构。依次往前推。拿到目标后才能向前梳理,比如哪个文件采用什么部署方式,监控方式,日志处理方式,敏感信息的传递方式等等。包括选择什么样的server也是很重要的事情
》》》》》》》》》》》》》》》》》》》》》》》
devops实操技巧(落地经验):
1.多个shell脚本使用共同的方法,在shell脚本的开头使用source xxx.sh 类似于java的import。然后就可以直接使用了,在shell中直接使用方法名调用即可,如果两个共同shell中的方法重名怎么办???鬼他妈知道,哇咔咔咔。 共同方法里怎么写??语法是怎样的?举个栗子:shell内 function xxx() {要实现的内容 }
2.Jenkins内调用共同方法,使用groovy脚本写共同方法,然后通过一顿猛如虎的配置(jenkins需要配置啥???)(实际使用就是使用@Library('xxxx@vxxxxx') _类似import导入,在jenkinsfile内直接使用groovy里的方法)。