自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1576)
  • 收藏
  • 关注

原创 Jnekins Active动态参数 集成Gitlab实践

参数化构建这里可以添加选项参数,一些字符串的参数,非常的多。这些参数在流水线执行的时候,它会加入到流水线里面去,最终在流水线运行的时候调用这些参数,选完参数之后再去构建。写一段groovy脚本,然后返回一个列表,其实也就是数组,之后就可以展示出来了。所以上面就两种类型,一种是普通类型,一种是带有动作的。最终可以看到参数是需要去写脚本的。这里面有三种类型,使用前面两种就足够了,都是动态类型的选项参数,都支持去运行一组脚本。这里面写怎么样复杂的groovy脚本都是可以的,最终你将选项返回出来就可以了。上面就是普

2022-12-06 10:51:20 7155

原创 Terraform 华为云最佳实践

之后在network下面创建其backend。}}配置好backend之后就去init一下。init完之后就去模块化资源,然后创建vpc和安全组。(反正就是注意使用variable去定义模块需要传入的参数和output模块需要输出的参数)注意vpc里面需要设置gateway的IP,这是一个特殊的地方。}}接下来就是创建安全组和规则了。网络这块是单独使用state进行存储的,后面在创建ecs和service的时候,需要使用到这里的输出,所以需要将vpc和subnet的id都得拿出来。

2022-11-28 14:36:36 9230

原创 Terraform 初始化慢~配置本地离线源

在.terraformrc 中添加filesystem_mirror}}

2022-11-25 18:14:39 9619

转载 Shell while 循环详解

while 循环是 Shell 脚本中最简单的一种循环,当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环。表示判断条件,statements表示要执行的语句(可以只有一条,也可以有多条),do和done都是 Shell 中的关键字。每一次执行到 done 的时候都会重新判断 condition 是否成立,如果成立,就进入下一次循环,继续执行 do 和 done 之间的语句,如果不成立,就结束整个 while 循环,

2022-11-23 18:57:10 4171

原创 Jenkins 流水线语法进阶 Groovy 05 异常处理

在流水线里面一定要做异常处理,如果不做异常处理就会导致流水线直接报错,有些报错可以容忍,那么就可以去捕获异常,避免它报错。try是去测试语句有没有报错,如果报错了就会将其错误打印出来,如果没有报错就会执行finally。

2022-11-17 13:32:01 3126

原创 Terraform 内置函数 Functions

现在学习terraform语言其实就是HCL这样的语言,它是由hashcrop创造的这门语言,它是专门用来定义基础设施即代码的语言。join两个参数,第一个参数是以什么符号进行拼接,然后后面就是参数值。只要掌握这门语言,在写基础设施的时候,以及编排的时候就容易一些。可以取list里面最大值,以...结尾,注意这里的值必须是数值。这语言包含了输入输出变量,语句,以及运算符,循环,遍历等等。一些内置的值可以通过函数来进行处理。split最后返回的是list。

2022-11-08 10:36:14 2949

原创 基础知识:HTTP协议以及GET请求和POST请求的区别

在HTTP协议中,我们最常用的是GET和POST请求,对于这两个方法,应该是最基础的东西。但是,两者的区别以及使用场景一直是大家经常讨论的问题,也是在面试中经常被问到的问题。username=xx&password=x,请求参数会暴露在浏览器中,所以是一种不安全的请求方式,多用来获取数据。一般浏览器规定GET请求的时候,HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,非常适用于分布式超媒体信息系统。GET方法的请求的时候,参数暴露在浏览器中,用户可以明显的看到参数,这是不安全的请求方式。

2022-11-04 18:04:21 3213

原创 Terraform expressions 表达式

在写region的时候,定义ecs这些属性的时候,都会使用到特定的语句,比如说循环,遍历,条件判断。上面也就是如果我这个值不为空,我们采用的是这个var.region的值。这是一个动态的表达式,尤其是VPC,镜像的id也会使用到这些。可以便利的对象一个是list,还有一个是map,还有一个set集合。学习表达式就是为了以后在写tf的时候,能够顺利,简化的去写。上面就是条件表达式的一个用法。上面第一行是遍历集合,或者列表,另外一个是遍历map。调试,进入console的时候,是在项目的根模块进去。

2022-11-04 15:40:48 2750

原创 Terraform 语法 module模块 简介/封装/实践

一个目录下就是一个模块,只不过它叫做根模块。在生产环境代码下都是根模块下面有很多子模块,甚至子模块里面还有子模块。(之前所有文件在一起,其实就已经是一个模块了,之前是大模块,里面没有子模块,现在需要做的就是添加子模块)建议就是根模块和子模块,不易套太深,套太深那么可读性和维护性都会变的很差了,到时候不方便去管理。一个目录下所有.tf文件组成的就是一个模块。这些模块写的资源的语法都是一致的。如果你是json语法,那么会有很多.json结尾的文件组成模块。

2022-11-04 09:30:19 2810

原创 Kubernetes 高可用的APIServer

之前的apiserver其实讲解的差不多了,其实就是认证,鉴权,准入,以及限流。这是apiserver里面最核心的能力,当然还有一些比如watch的缓存,除了承担上面的职责之外,它还承担的了重要的角色就是保护etcd,apiserver是唯一一个可以访问etcd这样一个组件,因为我可以收敛从外面过来的请求,从apiserver同一个客户端以长连接连接到etcd里面,有效的减小etcd的压力。

2022-11-02 21:50:09 2609

原创 Terraform 华为云实践 项目初始化

这个架构就是DNS加上负载均衡加ecs,最后vpc的架构。网络这块是DNS和VPC,对象存储是用来做terraform的后端来配置。

2022-10-31 14:19:29 2699

原创 Terraform Output 变量输出

比如在写esc代码的时候,创建两台ecs,总不能定义两个ecs资源吧,定义一次,改改参数就行了,或者直接引用。这样就可以在模块里面加上output,将IP打印出来,一个是打印,另外一个是另外模块调用它的IP。比如有两个模块,一个模块a,一个模块b。比如要想返回ecs的IP,那么提供为另外一个模块去引用。output可以理解为它是一个变量,只不过它是输出变量。它主要的是帮我们打印变量。其实每一个目录都可以理解为一个模块,最外层的模块叫做根模块。如果是私密的消息,那么就可以让其不打印。

2022-10-29 16:28:14 2777

原创 Terraform 语法 本地变量

可以通过locals关键子,语句块里面去声明我所需要的变量。在引用的时候是local.变量名。上面就是本地变量的使用方法。本地变量都是通过locals语句块来操作的。本地变量是方便我们测试,或者默认值初始化的时候是非常好用的。本地变量声明和使用就和我们之前定义的变量就不太一样了。变量分为局部变量和全局变量,上面是局部变量。

2022-10-29 15:24:26 2730

原创 Kubeconfig 切换上下文

【代码】Kubeconfig 切换上下文。

2022-10-28 15:29:01 2767

原创 Terraform 语法 variable变量 local本地变量的使用

在执行tf部署的时候,传递一个变量是region,可以通过-var,如果是传递很多变量,那么就写多个-var,变量类型有很多,比如list类型,注意使用单引号引用起来。变量参数类型还是很多的,之前在其他语言里面声明了变量,可能是字符串,或者是一个数值,或者是一个布尔值,甚至是any包含了下面的任意对象。之前在写tf的模板文件的时候用了很多变量,比如在写认证信息的时候,定义的变量存放了阿里云的ak和sk,最后就是region的信息。上面图片注意,一个是声明变量,另外一个是定义变量,那么tf才能读取进来。

2022-10-28 14:24:18 3341

原创 Terraform 语法 DataSource 数据源

通过data定义数据源,然后里面的属性是帮助我们去筛选数据的,因为镜像有很多种类型,可能来自于公共市场,也有可能自己定义的,还有系统,阿里这边提供的。provider里面有很多很多的数据源,我们都可以去使用,这里语法是以data关键字开头的,然后后面是它的类型,最后语句块里面就是筛选的条件参数了。这里的镜像就是创建ecs的时候我们选择的镜像,我们在选镜像的时候也不知道镜像对应的ID是多少,这个其实可以通过provider里面去查到。可以看到所有镜像的id都可以拿到,这些镜像都是我们筛选的结果。

2022-10-27 14:24:19 3229

原创 Terraform 语法 resource

首先你得知道在哪个区域创建ecs,创建的时候选择镜像,操作系统,然后是系统盘多大,cpu,内存这些规格大小。resource是我们的资源,一般在terraform里面定义的都是资源,是个非常重要的角色。第一个是可用区,第二个是安全组,之前创建过安全组,然后加了两条安全组的规则,80和22。关键字resource+资源类型(比如dns,ecs,vpc,交换机)+资源的名称。对于资源我们只需要了解它的主体,它的结构,接下来就可以开始定义ecs。分配公网IP,带宽,安全组,弹性网卡,ipv6。

2022-10-26 16:45:51 3274

原创 Terraform 语法 provider插件

语法是terraform最重要的一点,有两个部分来讲解,第一部分是基础,第二部分是更加高级的扩展。后面各种实践其实就是对terraform语法编写。第一部分是provider插件,provider提供了资源和数据源,插件,资源,数据源都是三个比较重要的内容。其次是变量和输出。

2022-10-26 15:35:41 3125

原创 Terraform 基础 云计算概述 基础设施即代码

之前机器在数据中心,现在不是了,现在统一放到了云供应商那边,也就是说由云供应商帮我们统一的去管理,比如数据库,还有我们的机器,还有存储,网络这些,这些都交给了云供应商去维护,我们不需要维护它了,而基于这些,形成了云计算的服务,这样就形成了按需购买,需要多少就支付多少,这样就降低了很高的成本。使用云计算,也有了弹性,根据业务的抖动,来实现动态的扩缩容。将私有云和公有云打通了,通过两个云共享数据。在资源的使用上面,就需要在机房里面管理哪些机器了,而是给你一个控制台让你操作。

2022-10-26 09:26:31 3150

原创 Terraform 基础 申请阿里云资源

stat文件是状态文件,第一次tf创建了资源,会将当前的状态记录下来,第二次再定义的时候会去拿这个状态和我的期望状态做对比,有哪些差异,然后去变更这些差异。申请这些资源就需要使用terraform的命令行了,开始初始化后端,后端是有存储文件的,默认情况下是在本地存储的,然后会多一些文件。上面都是交互需要输入yes,如果你确定没有问题了,那么加上自动的选项,-auto-approve,就不会输出信息了,就直接申请就行了。可以看到VPC ID,网段信息,region信息,用户网段,创建时间,状态。

2022-10-25 16:05:10 2980

原创 Terraform 基础 定义阿里云资源 VPC、安全组

其实你对照控制台上面的字段,就可以看到非常简单,都代码化了。上面全部就是定义阿里云的资源。

2022-10-24 15:58:55 1748

原创 Shell [[]]详解:检测某个条件是否成立

有了 [[ ]],你还有什么理由使用 test 或者 [ ],[[ ]] 完全可以替代之,而且更加方便,更加强大。但是 [[ ]] 对数字的比较仍然不友好,所以我建议,以后大家使用 if 判断条件时,用 (()) 来处理整型数字,用 [[ ]] 来处理字符串或者文件。

2022-10-23 15:13:39 911

原创 Terraform基础 配置阿里云Provider

既然要操作阿里云,那么就需要使用阿里云的provider其实和阿里云这块在调用API,其实就是terraform里面的一个插件,tf里面是通过provider来管理这些基础设施的,所以terraform其实也是通过各个云供应商它的api来进行交互的。每个provider里面都包含了很多的资源,资源就是阿里云上面看到的云产品,如api-gateway,还有ecs,dns,等等这些产品可以理解为是资源。所以provider里面都包含了阿里云里面所有的资源。

2022-10-22 16:04:51 1360

原创 Terraform 配置阿里云RAM账户

这里以阿里云为例,这里需要去阿里云上开一个账号,RAM是访问控制的一个账号,专门管理用户账号的,在企业里面不建议使用root账号去操作,一般开通具有固定资源操作权限的子账号给大家去使用。在tf里面使用的是provider,它最后调用的也是云供应商提供的api接口,所以账号也需要授予open api的访问。用户添加之后有个注意事项,就是需要在这里设置权限。因为后面要操作的是阿里云上面的资源,比如要管理安全组,vpc,那么需要添加权限。上面就是用户的配置,就是创建用户,然后将key保存下来,最后授予权限。

2022-10-22 13:42:35 898

原创 Terraform 基础 开发环境配置

插件好了就是其语法了,tf现在支持两种语法,一种是使用官方的语言HCL这种配置语言,专门去写tf,它的特点是每个人看起来读起来好读。还有一种格式json,它是非常适用在做系统集成的时候,你写json字段来描述你所定义的资源。当然放在一个文件里面也是可以的,后面多了维护起来就比较臃肿,所以建议简单拆开。以tf文件的都会自动去加载,只不过为了方便区分,这里面定义的都是变量,都分离出来了,定义了云供应商版本信息。除了看到上面看到的资源之外,它还支持内置的函数,还有变量的输出,数据源等等。

2022-10-22 12:44:45 899

原创 iptables iptables实际操作之规则查询

图文并茂理解iptables如果你是一个新手,在阅读如下文章时,请坚持读到最后,读的过程中可能会有障碍,但是在读完以后,你会发现你已经明白了。在进行iptables实验时,请务必在测试机上进行。

2022-10-21 16:39:24 623

原创 Shell 字符串详解

字符串(String)就是一系列字符的组合。字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)。字符串可以由单引号' '包围,也可以由双引号" "包围,也可以不用引号。它们之间是有区别的,稍后我们会详解。下面我们说一下三种形式的区别:1) 由单引号' '包围的字符串:任何字符都会原样输出,在其中使用变量是无效的。2) 由双引号" "那么该变量会被解析(得到该变量的值)3) 不被引号包围的字符串。

2022-10-21 15:20:22 503

原创 Terrform 基础 工作流

了解k8s的知道,我们会去写一些yml类型的文件,写完yml之后,使用了kubectl这个工具去创建,其实这个工具调用的就是k8s的api,最后将我们的资源创建出来,它可能是个pod。tf根据我们的配置文件去操作provider,去操作每个云的插件,每个云的供应商都会提供对应的插件,比如aws可能就提供了aws插件,这个插件最后操作的就是云的api。tf核心工作流程,writer阶段,就是我们去写,去定义我们所需要的资源,这一块其实就是让我们去修改配置文件,写配置文件就是我们需要什么资源。

2022-10-21 10:09:39 1204

原创 Iptables扩展模块-connlimit 限制并发连接数

之前也学习过Nginx的限制,只不过它的限制是应用层面的限制,它还要将所有的请求经过网络层送到应用层做限制,而现在这个直接在内核层面做限制。如果请求的是目标的80端口,那么去调用connlimit模块,当超过2个连接并发数的时候那么就拒绝掉。示例使用脚本模拟DDOS攻击,然后检查网站是否异常,如果异常,则使用jptables限制并发连接数。可以看到有很多的状态为RECV状态,还没有被ACK掉,进入了半连接池队列。connlimit 扩展模块,限制每个客户端P地址到服务器的并行连接数。

2022-10-20 14:19:08 652

原创 Shell $[]:对整数进行数学运算

需要注意的是,不能单独使用 $[],必须能够接收 $[] 的计算结果。和 (())、let 命令类似,$[] 也只能进行整数运算。进行计算,并取得计算结果。中包含了变量,那么你可以加。

2022-10-20 13:17:53 588

原创 IPtables icmp模块

对方ping不通我,但是我为什么不能够去ping通别人呢?我去ping它的时候通过output出去了,它在返回的得从input链进来,input进来一匹配就是icmp被拒绝了,所以别人ping不通我,我也ping不通别人。ping的过程当中会发送请求,然后对端回复响应,请求类型为request,响应类型为reply。指定ICMP类型,echo-request(8请求)、echo-reply(O回应)但是我希望别人ping不通我,我可以ping通别人。我们只拒绝request,不拒绝reply的。

2022-10-13 14:21:22 613

原创 应用层 HTTP 请求头 请求与响应的上下文

http的请求与响应都有一些表示上下文常用的头部,所谓上下文就是指请求从哪里来,或者说请求 为了响应希望对后续的响应或者请求产生哪些影响。请求的上下文: User-AgentMozilla/5.0WOW64;rv:66.0)Gecko/20100101Firefox/66.0这个是Firefox发出的一个请求,中间包含三个部分,第一个部分是Mozilla/5.0,表示浏览器兼容Mozilla版本的,这是现在所有浏览器都遵循的一个结构,后面是comment,注释。

2022-10-09 11:40:33 747

原创 Kubernetes 将应用迁移至kubernetes

之前是要将应用迁移到k8s平台上面的时候,第一步做的就是应用容器化,做应用容器化的时候要对操作系统的一些资源做对接的时候所面临的挑战。完成了容器化之后面临的挑战就是要将应用迁移到k8s平台,这个时候考虑的问题就更加多了。下面就是如何将应用迁移到k8s平台上面去。

2022-09-25 10:46:20 1468

原创 Kubernetes 应用容器化

非容器化平台到容器平台中间我们需要面临的调整和解决方案。如何将应用迁移至k8s平台。

2022-09-22 14:54:32 1401

原创 应用层 HTTP 代理服务器转发消息时的相关头部 请求头 X-Forwarded-For

如果用户在家里,它的IP地址是192.168.0.x,它通过运营商进行拨号上网,运营商给它提供的公网地址为115.204.33.1,然后经过一个正向代理,这个正向代理的地址是1.1.1.1,然后再经历一个cdn,假设这个cdn的地址是2.2.2.2,然后再到后面的反向代理,如果反向代理需要拿到用户的IP地址用作负载均衡的话,115.204.33.1是一个合适的IP地址,但是反向代理是直接从tcp连接当中拿到的地址是2.2.2.2,要怎么样拿到115.204.33.1呢?,要怎么传递客户端的地址到原服务器?

2022-09-21 11:27:20 1785

原创 TCP 连接建立 故障排查

我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。

2022-09-18 16:02:53 1842

原创 Linux 查看某个端口的连接数

初步认为是服务器资源不⾜了,但经反复测试,⼀旦连接上,不断点击同⼀个页⾯上不同的链接,都能迅速打开,这种现象就是说明apache最⼤连接数已经满了,新的访客只能排队等待有空闲的链接,⽽如果⼀旦连接上,在keeyalive 的存活时间内(KeepAliveTimeout,默认5秒)都不⽤重新打开连接,因此解决的⽅法就是加⼤apache的最⼤连接数。然后wc -l统计。约8K个进程,⽀持2W⼈同时访问应该是没有问题的(能保证其中8K的⼈访问很快,其他的可能需要等待1、2秒才能连上,⽽⼀旦连上就会很流畅)

2022-09-18 15:22:54 3613

原创 应用层 HTTP消息在服务端的路由 请求头 Host

大部分web服务器在建立好TCP连接之后,在蓝色的部分会去读取请求头部,不包含message body,在这里会包含两个部分,一个是request line请求行,其次是header。形式出现,而不是相对url,绝对url当中必须包含shceme,就是HTTP,还有中间的域名,authorities user information这些信息。先必须存在uri-host,对于它的port是可选的,如果有需要加冒号分隔,在HTTP 1.1规范当中必须要传递host头部,否者会返回400错误响应码。

2022-09-18 15:22:12 1442

原创 传输层 SACK与选择性重传算法

当server连续发送4个报文给client,而第三个报文丢失的时候,而我们的server是在第七步收到ACK,这个ACK是说第三个报文没有收到,接下来server怎么处理,这就有两种方式,第一种采用保守和乐观的方式,所谓乐观就是认为第四个帧应该是被对方收到了,seq序号是用累计确认的方式的,所以client没有办法去告诉server其实第四个帧我是收到了,server尽量乐观,所以仅仅发送第三个部分。所以积极的将所有的段都发出去,带来的问题是可能浪费带宽,因为其实第4个报文是发送给client的。

2022-09-15 10:20:43 1446

转载 “too many open files”的原理和解决方案

Too many open files是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数。

2022-09-13 20:42:30 3131

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除