某某公司网站建设论文,兰州网站建设推荐q479185700上快,商洛网站开发公司,济南网络营销外包写在前面随着微服务架构的流行#xff0c;日志也需要由专门的分布式日志组件来完成这个工作#xff0c;我们项目使用的是 ExceptionLess 这个组件#xff0c;它是前后端分离的#xff1b;这篇文章我们就来实践容器化 ExceptionLess 的前端#xff0c;并为其包含一个 nginx… 写在前面随着微服务架构的流行日志也需要由专门的分布式日志组件来完成这个工作我们项目使用的是 ExceptionLess 这个组件它是前后端分离的这篇文章我们就来实践容器化 ExceptionLess 的前端并为其包含一个 nginx 的宿主形成一个能够独立运行的、自包含的环境这样当我们使用k8s集群的时候就可以使用这个开箱即用的镜像任意伸缩滚动更新按需扩容等等。ExceptionLess UI 是使用Angular开发的一个纯前端 Web UI首先我们需要安装环境(git、npm、bower、grunt etc.)请参考详细步骤。安装完成后使用 grunt 发布项目这样一个纯静态的前端网站就生成了然后将刚刚生成的所有静态文件以tar.gz格式压缩成归档文件如 exceptionless.ui.gkb.tar.gz。构造镜像原理一个Linux版本的镜像本质上就是带有某种环境的Linux系统。比如镜像nginx:1.13.12就是安装了nginx 1.13.12 的linux系统然后打包成的一个镜像。理解了镜像的本质我们就可以从零构造一个带有指定配置的、任意版本的nginx镜像(其实我们接下来就是要在做这件事情)。同理现在我们需要将包含静态文件的纯前端宿主到一个web服务器和传统的方法是一样的先安装一个web服务器然后将其作为静态资源的宿主。不同的是当我们用容器化的思想来做这件事情时候把所有的流程编排进Dockerfile即可就是这么简单。示例说明我已经使用k8s部署了一个nginx 1.13.12环境现在以交互模式进入容器kubectl -n k8s-ecoysystem-appsexec -it nginx-deployment-6c45fc49cb-zdlfb /bin/bash看到了吗这就一个安装了nginx 1.13.12的linux环境。如何编写Dockerfile引导其实当我们安装完成nginx时它已经配置好了一个静态资源的例子如下所以我们可以通过浏览器访问到如下的界面这个界面就是静态文件/usr/share/nginx/html/index.html被浏览器渲染的效果。编排步骤把部署静态资源的步骤编排进Dockerfile(这个步骤也可以从零构建FROM SCRATCH条条道路通罗马大家下去自己实战)FROM nginx:1.13.12MAINTAINER justmine
WORKDIR /usr/share/nginx/html
ADD [exceptionless.ui.tar.gz,.]FROM nginx:1.13.12 从一个带有nginx:1.13.12环境的linux开始构建MAINTAINER justmine 说明作者WORKDIR /usr/share/nginx/html 设置工作目录ADD [exceptionless.ui.tar.gz,.] 将静态资源拷贝到nginx宿主对外提供静态资源的目录下。这里也可以使用copy命令来完成但是需要我们提前解压好归档文件。注意WORKDIR工作目录指的是当前命令执行的工作目录所以ADD第二个参数直接用点(.)代替即可这样操作起来相对来说比较便利。但是ADD第一个参数的工作目录和这个没有关系指的是docker build时传递的工作目录所以需要注意如果在传递的目录下找不到这个归档文件最后一步生成镜像就会报错Forbidden path outside of the build context。Dockerfile生成镜像并上传到DockerHubdocker build -t justmine/nginx-hosted-exceptionless-ui:1.0 .
docker push justmine/nginx-hosted-exceptionless-ui:1.0千万注意docker build最后的一个点(.)这是归档文件的上下文目录。k8s集群deployment.ymlapiVersion: apps/v1kind: Deploymentmetadata: name: nginx-hosted-exceptionless-ui namespace: k8s-ecoysystem-appsspec: replicas: 1 selector: matchLabels: app: nginx-hosted-exceptionless-ui template: metadata: labels: app: nginx-hosted-exceptionless-ui spec: containers: - image: justmine/nginx-hosted-exceptionless-ui:1.0 imagePullPolicy: Always name: nginx-hosted-exceptionless-ui ports: - containerPort: 80 protocol: TCPservice.ymlapiVersion: v1kind: Servicemetadata: name: nginx-hosted-exceptionless-ui namespace: k8s-ecoysystem-appsspec: type: NodePort selector: app: nginx-hosted-exceptionless-ui ports: - nodePort: 32003 port: 80 targetPort: 80浏览器(firefox)查看效果日志总结本篇分析了镜像的本质镜像的构建原理并一步一步地引导大家容器化一个开箱即用的纯前端UI这也是微服务架构实行前后端分离后容器化前端的一个典型例子。可以说容器化后使用k8s就可以为所欲为真正的让k8s成为微服务应用平台的一大利器啊。这也是我在容器化微服务路上落实的一个案例希望分享给大家更希望把整个思绪过程分享给大家。项目参考https://github.com/justmine66/k8s.ecoysystem.apps/tree/master/k8s/ExceptionLess相关文章:免费开源分布式系统日志收集框架 Exceptionless使用 Exceptionless 作为 Log Server 搭配 NLog 记录系统日志使用Elasticsearch 与 NEST 库 构建 .NET 企业级搜索为elasticsearch集成一些实用 插件以及配置的开箱即用的版本Exceptionless 本地部署ExceptionLess新玩法 — 记日志.NET Exceptionless 日志收集框架本地环境搭建原文地址 https://www.cnblogs.com/justmine/p/8908482.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com