搞定AWS!
1.SA认证
2.公司业务
认证考试:
https://blog.csdn.net/robertlee32/article/details/69949159
https://www.csdn.net/article/2015-10-12/2825891
https://aws.amazon.com/cn/certification/certified-solutions-architect-associate/
重点:Amazon EC2 || Amazon S3 || Amazon VPC || Amazon Route 53 || Amazon RDS || Amazon SQS
***aws architecture https://aws.amazon.com/architecture/
aws blog:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
实战
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ECS:EC2集群管理,和k8s有一拼,是aws的集群管理的一种方式,后台aws上线了k8s,叫EKS!!
ecs与gcp上的k8s之战http://dockone.io/article/955
eks vs gke有相关的文
EC2:采用xen技术生成的虚拟机,这是一台虚拟机。并不是单一的物理机。
相关概念:
AMI:虚拟机(EC2使用的镜像)
ELB:负载均衡
ALB:
NLB:
EBS:永久性存储
VPC:定义一个局域网络
AUTO SCALLING:自动扩展ec2的容量
USER:在IAM内创建和设置,还有group和role
ARN:aws上资源的名称,有独一无二的名称,可以通过该名称识别该资源,比如arn:aws:iam::123456789012:user/David
Route53:一个DNS服务,通过它可以注册一个域名,并进行维护
EFS: ECS的同步的地方,docker重启时加载的地方 。具体使用方法:创建一个efs,点击后会看到有个命令集合,登录到要绑定的instance上(可能运行着一个docker),执行那个命令集合(其中注意要安装那个utils),然后就mount上去了。mount后可以在那个机器上查看是否mount上(mount命令???)。如果想自动:在ec2界面下,找到一个叫configuration的地方配置userdata,那个configuration里有个类似linux的界面可以写入命令,表示该ec2初始化时会执行这些东东。在其中配置上mount命令行。然后在autoscalling里选择这个configuration,在每次机器自动挂了的时候,就可以自动启动一个ec2并使用这个userdata。
EBS:和EFS的区别就是EFS是基于集群,而EBS是基于一个主机,当容器在其他node上生成时,就拿不到数据了
ACM:AWS Certificate Manager,证书管理?
ARN:https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html。到这里去查
Unbound:在aws上绑定DNS到用户本地的集群
aws学习进度:
01/07——VCP, ELB, ALB
01/08——VCP:几个关键词,CIDR(Classless Inter-Domain Routing)。
网络配置的四大要素:IP + Netmask + Gateway + DNS https://blog.csdn.net/yuanbinquan/article/details/52963845
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
以下列出留用的内部私有地址
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
EC2和ECS的区别,比如在部署一个app时。ECS是直接拉取镜像还是
IAM:只是一种用户管理方法,下面的user和group和rule才是实际的服务,这个概念很重要,所有的平台管理思维https://blog.csdn.net/whatnamecaniuse/article/details/78104189
可以把任何一个登陆账户想象成一个平台:
1.user:像一个个单独的用户,又像linux下的一个个用户
2.group:组的概念,把哪个用户加到这个组即拥有这个组的全部权限,比如分成某某项目组,或者某某权限组(admin,operate……),单独创建的组是没有权限的,需要配置policy
3.policy:
4,roles:类似于用户,但是不需要用户那样的一些key和secret。具体咋用?我也母鸡,首先创建一个role,然后绑定甲方乙方。类似这样
5,permission:
3.roles:一文读懂https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html?icmpid=docs_iam_console最主要的功能意义:account之间的权限配置,(步骤:先在一个账户内创建role,增加trust entities。再绑定一个policy,policy定义了这个/这些个trust entities所能具备的这个账户下的权限),role可以获取assume role(一种临时的credential,由sts分配的)。这种role的credential配置的时候除了key和id之外还需要security token。
6.sts: AWS Security Token Service (AWS STS) https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html.一种临时的token,有生命周期和权限限制,可以访问aws上的指定资源的一种credential。这种token叫临时token,在使用的时候除了要有secretkey和id外,还需要security token。
7.assume role:一种临时获取资源之间的权限的方式,只能通过user或者role获取,无法通过root账户获取。
AWS+ ECS + docker部署一个服务:https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/
在aws的ECS上搭建jenkins的架构https://garbe.io/blog/2018/07/26/jenkins-on-ecs-overview/ 和https://wiki.jenkins.io/display/JENKINS/Amazon+EC2+Container+Service+Plugin
即master和slave全都托管在aws的ecs上:
问题点:
1.jenkins master 的状态的持久化,当一个pod瘫了后重新生成的新的pod如何保证宕机前的状态?AWS的解决方案是配置在EFS上进行同步,GCP上是配置在哪儿???即容器的同步的实现。
2.
步骤:
1.首先把jenkins搭建在aws上,并配置域名(通过Route53);
2.这个jenkins master要架设ALB和NLB(NLB用于当master重启时agent能找到master,即一个网络的负载均衡)
3.在jenkins master上安装一个插件叫aws ecs (全名),并且要重启jenkins
4.在jenkins的配置里点击增加cloud,下拉可见aws的ECS,开始配置各种参数,其中的slave template中的label就是jenkin怎么识别哪个slave,比如在普通pipeline里的jenkinsfile里即可使用node进行查找,在multibranch pipeline里即可使用node调这个slave,重要提示:如果添加多个cloud,只要slave的label不一样即可。一样会发生啥事儿?鬼知道。。
5.EFS怎么绑定到指定的master???这是一个遗留问题
6.在repo内的jenkinsfile内通
VPC篇>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
VPC: Amazon Virtual Private Cloud,加载一个实例到VPC时,会自动分配一个私有ip到eth0上并默认分派一个DNS和一个hostsname到这个实例上。
VPN: 是一个通道,aws用于VPC之间,VPC与外网之间的通道。
subnet:隶属于VPC,VPC是一个局域网,subnet就是一个网段
routetable:subnet通过这个routetable的规则确认了这个subnet可以通过哪个gateway收发请求。
virtual private gateway:私有的gateway,类似于私有ip或者网关。默认网关,默认的那个静态路由
customer gateway:创建的时候需要一个目标ip,即要去连接到哪个ip。对外的。类似于弹性ip,外网ip,相当于添加一个静态路由。
VPC的通讯方式:对外VPN,AWS内部和跨用户之间用VPC peering,或者给VPC绑定公网ip
在远程安装aws CLI命令行程序,yum或者pip或者??
aws命令行使用方法:
https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html
https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-services-ec2-instances.html
具体步骤:
1.安装aws,采用pip(sudo pip install --upgrade awscli
),或者采用解压安装的方式
2.配置,两种方法:命令行逐个输入或者创建一个config文件 .aws/config,下面是命令行的方式:
$
aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]: AKIAIOSFODNN7EXAMPLE
Default region name [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default output format [None]: us-west-2
json
3.然后就可以敲击命令了aws ****之类的
4,通过变量传入key和secret: export AWS_SECRET_ACCESS_KEY=xxx && export AWS_ACCESS_KEY_ID=xxx && export AWS_REGION=us-east-1
aws基本命令:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
VPC,subnet ,routetable之间的关系:https://blogzhoubo.iteye.com/blog/2373674 VPC是一个局域网,可以横跨aws多个区,一个VPC下可以有多个subnet,每个subnet对应一个routetable
>>>>>>>>>>>>>>>>>>>>>>>>
通过ansible操作aws:ec2_instance_facts,获取主机列表,还可以通过一个ec2.py脚本获取(-i ec2.py)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cloudwatch:https://aws.amazon.com/cn/cloudwatch/ https://blog.csdn.net/hangdongzhang/article/details/78327523
cloudwatch是aws的一个服务,使用cloudwatch的步骤:一般使用terraform 进行搭建https://stephenmann.io/post/setting-up-monitoring-and-alerting-on-amazon-aws-with-terraform/
1.首先安装awscli
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2019/01/30 EBS:
EFS VS EBS:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ECS+EFS+jenkins,实现集群生成jenkins master,解决jenkins master 状态同步的问题:
以往:使用docker 的volum功能可以把docker的文件同步到本地,然后共享于其他容器,但是当有多个主机时,就懵逼了。
新思路:使用aws的EFS功能:具体搭建方法https://medium.com/@opsline/persisting-jenkins-data-on-ecs-with-efs-6d260960c481
搭建步骤:
1.创建了ECS,搭载了jenkins master
一系列复杂而微妙的操作。回头再看
>>>>>>>>>>>>>>>>>>>>>>>>>>
efs:文件弹性存储,使用流程,登录到ec2上安装一个efs的插件,然后执行几条命令。在efs界面,在对应的sfe系统点进去就可以看到有三个指南,点击对应的指南就可以按其操作。其中,有一种场景是ECS中的容器使用efs进行存储,配置方式首先在ecs的task destination中的容器配置中先配置source volume和其他容器相关的绑定设置,然后再在ec2上执行命令绑定ec2到efs的。
使用方式可以参考,很明确:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bind-mounts.html
>>>>>>>>>>>>
postman 调用 aws api:
api doc https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html
>>>>>>>>>>
MFA: Multi-Factor Authentication ,类似于银行的那个数字钥匙。aws也有,只不过不是钥匙,是可以装在手机上的软件
ECS使用,cluster就是一个集群,task_defination 才会定义一个pod类的东东