虚拟化运维
未读Istio 可观察性前面我们学习了 Istio 中的流量管理功能,本节我们来学习如何配置 Istio来自动收集网格中的服务遥测。Istio为网格内所有的服务通信生成详细的遥测数据,这种遥测技术提供了服务的可观察性,使运维人员能够排查故障、维护和优化应用程序,而不会给服务的开发人员带来任何额外的负担。通过 Istio,运维人员可以全面了解到受监控的服务如何与其他服务以及Istio组件进行交互。 网站会自动生成以下类型的遥测数据,以提供对整个服务网格的可观察性: 指标:Istio 基于 4 个监控的黄金标识(延迟、流量、错误、饱和)生成了一系列服务指标,Isti 还为网格控制平面提供了更详细的指标,除此以外还提供了一组默认的基于这些指标的网格监控仪表板。 延迟表示服务一个请求所需的时间。这个指标应该分成成功请求(如 HTTP 200)和失败请求(如 HTTP 500)的延迟。 流量是衡量对系统的需求有多大,它是以系统的具体指标来衡量的。例如,每秒的 HTTP 请求,或并发会话,每秒的检索量,等等。 错误用来衡量请求失败的比率(例如 HTTP 500)。 饱和度衡量一个服务中最紧张的资源 ...
实例架构该应用由四个单独的微服务构成。 这个应用模仿在线书店的一个分类,显示一本书的信息。 页面上会显示一本书的描述,书籍的细节(ISBN、页数等),以及关于这本书的一些评论。 Bookinfo 应用分为四个单独的微服务: productpage. 这个微服务会调用 details 和 reviews 两个微服务,用来生成页面。 details. 这个微服务中包含了书籍的信息。 reviews. 这个微服务中包含了书籍相关的评论。它还会调用 ratings 微服务。 ratings. 这个微服务中包含了由书籍评价组成的评级信息。 reviews 微服务有 3 个版本: v1 版本不会调用 ratings 服务。 v2 版本会调用 ratings 服务,并使用 1 到 5 个黑色星形图标来显示评分信息。 v3 版本会调用 ratings 服务,并使用 1 到 5 个红色星形图标来显示评分信息。 Bookinfo 是一个异构应用,几个微服务是由不同的语言编写的。这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:它由多个服务、多个语言构成,并且 review ...
Ingress Gateway简介传统上,Kubernetes使用Ingress控制器来处理从外部进入集群的流量。使用Istio时,情况不再如此。 Istio已用新的Gateway和VirtualServices资源替换了熟悉的Ingress资源。它们协同工作,将流量路由到网格中。在网格内部,不需要Gateway,因为服务可以通过集群本地服务名称相互访问。 Istio流量分发控制环境准备 主机名 IP 角色 k8s-master eth0:10.1.1.100、docker:172.17.100.0/24 K8S-master k8s-node1 eth0:10.1.1.120、docker:172.17.120.0/24 K8S-node k8s-node2 eth0:10.1.1.130、docker:172.17.130.0/24 K8S-node nginx-proxy eth0:10.1.1.11 代理节点 场景模型图目前我们实现了后台服务层面,前端front调用后端service的流量策略,现在实现下客户访问前端的流量 ...
虚拟化运维
未读Envoy简介什么是Envoy envoy 是作为微服务服务架构中以独立进程方式实现高级网络功能的,轻量级的7层服务代理程序,通常以sidecar的方式运行在应用程序的周边,也可以作为网络的边缘代理来运行。 envoy 的特性 进程外体系结构 ,L3/L4过滤器体系结构,HTTP L7过滤器体系结构, 一流的HTTP/2支持, HTTP/3支持(目前为alpha),HTTP L7路由,gRPC支持,服务发现和动态配置,健康检查,高级负载平衡,前端/边缘代理支持, 一流的可观察性 服务网格细节剖析宏观分析执行的操作: 使用istioctl为pod注入了sidecar 创建了virtualservice和destinationrule 如何最终影响到了pod的访问行为? 宏观角度nginx的配置中,可以提供类似如下的配置片段实现按照权重的转发: 因为nginx是代理层,可以转发请求,istio也实现了流量转发的效果,肯定也有代理层,并且识别了前面创建的虚拟服务中定义的规则。 1$ istioctl kube-inject -f front-t ...
虚拟化运维
未读Istio使用场景 在业务更新迭代快速发展时代,更新版本只靠Kubernetes实现简单的更新发布是不行的,如果想要实现对业务流量访问限制还需要借用Istio的能力,比如升级到v2版本,将v2版本接入流量占比要到10%,Kubernetes是无法实现。下面就是整个实现过程。 快速入门环境准备 主机名 IP 角色 k8s-master eth0:10.1.1.100、docker:172.17.100.0/24 K8S-master k8s-node1 eth0:10.1.1.120、docker:172.17.120.0/24 K8S-node k8s-node2 eth0:10.1.1.130、docker:172.17.130.0/24 K8S-node 场景一模型图 创建资源配置清单Front-tomcatBill-service-V1Service12345678910111213141516171819202122232425cat > front-tomcat-dpl-v1.yaml <<EOFapiV ...
Istio简介Istio:一个连接,管理和保护微服务的开放平台。 按照isito文档中给出的定义: Istio提供一种简单的方式来建立已部署的服务的网络,具备负载均衡,服务到服务认证,监控等等功能,而不需要改动任何服务代码。简单的说,有了Istio,你的服务就不再需要任何微服务开发框架(典型如Spring Cloud,Dubbo),也不再需要自己手动实现各种复杂的服务治理功能(很多是Spring Cloud和Dubbo也不能提供的,需要自己动手)。只要服务的客户端和服务端可以进行简单的直接网络访问,就可以通过将网络层委托Istio,从而获得一系列的完备功能。可以近似的理解为: Istio = 微服务框架 + 服务治理。 Istio的关键功能HTTP/1.1,HTTP/2,gRPC和TCP流量的自动区域感知负载平衡和故障切换。 通过丰富的路由规则,容错和故障注入,对流行为的细粒度控制。 支持访问控制,速率限制和配额的可插拔策略层和配置API。 集群内所有流量的自动量度,日志和跟踪,包括集群入口和出口。 安全的服务到服务身份验证,在集群中的服务之间具有强大的身 ...
Web服务
未读前言最近有一个需求,如何禁用ssl证书,只用于Nginx 443端口转发流量?https服务器A和B 有 https 服务并提供两个 IP 以实现高可用。 例如https服务器 A[ip1:443] 和 B[ip2:443] 被路由到Nginx代理服务器上。 Nginx代理服务器没有 ssl_certificate 和 ssl_certificate_key使用 Nginx 代理模块将请求代理到实际的https服务器上。如何在没有SSL验证的情况下将443端口流量简单转发到后端。 使用nginx的stream、 stream_ssl_preread模块参考资料 Module ngx_stream_ssl_preread_module Module ngx_stream_core_module 准备工作 nginx版本1.11.5及以上 由于stream和stream_ssl_preread模块非默认引入,需要在编译安装nginx时引入;编译时添加配置参数 --with-stream 、--with-stream_ssl_preread_module。 配置stream 惊为天人的 ...
简介之前写的Spinnaker自动化部署,部署复杂,依赖环境多,所以才有这一篇比较轻量级的自动化持续集成,需要用到的环境有Kubernetes-1.23、harbor、Jenkins、Helm、gitlab都是devops常见组件。 文中如有错误或能优化的地方,还望各位大佬在评论区指正。 资产信息: 主机名 角色 IP k8s-master.boysec.cn K8s-master 节点 10.1.1.100 k8s-node01.boysec.cn node-1节点 10.1.1.120 k8s-node02.boysec.cn node-2节点 10.1.1.130 gitlab.boysec.cn Gitlab Harbor NFS 服务器 10.1.1.150 了解发布流程 流程: 拉取代码 git checkout 编译代码 mvn clean 打包镜像 并上传镜像仓库 使用yaml 模板文件部署用镜像仓库中的镜像,kubectl 命令部署pod 开发测试 使用 Harbor 作为镜像仓库部署Harbor作为镜像仓库部署方式: 采用方式dock ...
简介本文讲述的是使用Helm3和Harbor v2.3.1的经验,使用Harbor作为Chart仓库服务。来实现更高效、便捷的DevOps运维管理,学习如何撰写自己的Chart应用。文中如有错误的地方,还望各位大佬在评论区指正。 开发自己的Chart:Java应用为例先创建模板1helm create demo 修改默认Chart.yaml12345678# cat > Chart.yaml <<EOFapiVersion: v2appVersion: 0.1.0description: wangxiansen demoname: demotype: applicationversion: 1.16.0EOF 删除默认配置文件1234[root@k8s-master demo]# cd templates/[root@k8s-master templates]# lsdeployment.yaml _helpers.tpl ingress.yaml NOTES.txt serviceaccount.yaml service.yaml tests[roo ...
Helm Chart概述Helm最核心的就是模板,即模板化的K8S manifests文件。 它本质上就是一个Go的template模板。Helm在Go template模板的基础上,还会增加很多东西。如一些自定义的元数据信息、扩展的库以及一些类似于编程形式的工作流,例如条件语句、管道等等。这些东西都会使得我们的模板变得更加丰富。 helm 项目提供了命令行工具 helm 来进行部署包的管理,并且支持接入 chart 仓库,如果你用过 linux 各大发行版的源,或者 docker 的镜像仓库,相信可以迅速 Get 到这种方案理念。目前官方的中央仓库为 artifacthub。 构建一个Helm Chart使用helm create 可以创建一个初始 chart,文件结构如下: 12345678910111213# helm create mychartCreating mychart# tree mychart/mychart/├── charts├── Chart.yaml├── templates│ ├── deployment.yaml│ ├── _helpers.tp ...
macOS下如何优雅的使用Burp Suite众所周知国内我们使用的Burp Suite大多数是大佬们分享出来的专业破解版的Burp Suite,每次启动的时候都得通过加载器来启动Burp Suite,那有没有更加优雅的方式呢?下面就开始水这一篇文章了,告诉大家如何在macOS下配置基本的渗透测试环境。(我也是刚换macOS) 在2020 年 12 月 2 日 Burpsuite 专业版和企业版已经开放下载了。历届 BP 版本的官方下载地址:https://portswigger.net/burp/releases 所以之后我们破解的思路就是下载官方包正常安装,然后使用注册机激活就可以拉。注册机的 Github 项目地址:TrojanAZhen/BurpSuitePro-2.1下面就使用官方的 2022.8 版本破解激活为例: 首先下载官方官方的 DMG 数据包,正常安装即可。 安装完后,在应用程序中打开显示包内容 将burp-keygen-scz.jar和burp-loader-x-Ai.jar 放入到 BP 的如下图的目录下: 另外编辑 vmoptions.tx ...
虚拟化运维
未读Helm 介绍每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器,可以很方便的将之前打包好的yaml文件部署到kubernetes上。 本章我们将讨论为什么需要 Helm,它的架构和组件,以及如何使用 Helm。 Helm有两个重要概念: helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。 Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。 Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象。 此外Helm还经常与CI\CD配置使用,在这个过程中用于维护应用程序的安装、升级、回滚等操作。 Helm解决那些问题 Helm 到底解决了什么问题?为什么 Kubernetes 需要 Helm? 答案是:Kubernetes 能够很好地组织和编排容器,但它缺少一个更高层次的应用打包工具,而 ...