Docker
的口号是 Build,Ship,and Run Any App,Anywhere,在我们使用 Docker 的大部分时候,的确能感觉到其优越性,但是往往在我们 Build 一个应用的时候,是将我们的源代码也构建进去的,这对于类似于 golang 这样的编译型语言肯定是不行的,因为实际运行的时候我只需要把最终构建的二进制包给你就行,把源码也一起打包在镜像中,需要承担很多风险,即使是脚本语言,在构建的时候也可能需要使用到一些上线的工具,这样无疑也增大了我们的镜像体积。
阳明的博客
大家好,我叫阳明,前小米高级开发工程师,现在回到家乡成都,独立开发者一枚,一个有着产品思维的工程师,现在也在努力将自己的产品思维体系化,全栈工程师,现阶段专注 Kubernetes 和 AIGC,创建了「k8s技术圈」社区、「优点知识」知识付费网站以及「快课星球」AI全栈开发学习网站。我可以提供企业容器化方面的知识培训和咨询工作,感兴趣的可以通过微信 gitops 和我联系。
使用YAML 文件创建 Kubernetes Deployment
在之前的文章中,我们一直在讨论如何使用kubernetes
,很多时候我们知道怎么使用kubectl
命令行工具来启动一个POD
,也看到我们在安装kubernetes 过程中使用了一些 YAML 文件来创建,但是发现很多朋友对 YAML 文件来创建一个 POD 还是非常陌生。所以我们来简单看看 YAML 文件是如何工作的,并使用 YAML 文件来定义一个 kubernetes pod,然后再来定义一个 kubernetes deployment吧。
Kubernetes Helm 初体验
Helm
这个东西其实早有耳闻,但是一直没有用在生产环境,而且现在对这货的评价也是褒贬不一。正好最近需要再次部署一套测试环境,对于单体服务,部署一套测试环境我相信还是非常快的,但是对于微服务架构的应用,要部署一套新的环境,就有点折磨人了,微服务越多、你就会越绝望的。虽然我们线上和测试环境已经都迁移到了kubernetes
环境,但是每个微服务也得维护一套yaml
文件,而且每个环境下的配置文件也不太一样,部署一套新的环境成本是真的很高。如果我们能使用类似于yum
的工具来安装我们的应用的话是不是就很爽歪歪了啊?Helm
就相当于kubernetes
环境下的yum
包管理工具。
kubernetes PodPreset 的使用
最近在kubernetes
上安装 sentry 的时候,我将sentry
需要运行的3个服务放到同一个POD中的,WEB、Celery Worker、Crontab 分别用一个独立的容器来运行的,但是这三个容器需要用到环境变量基本上都是一样的,比如数据库的配置、消息队列的配置,这样就造成一个问题是我需要把完全一模一样的环境配置复制3份,因为3个容器都需要使用,这样如果需要更改的话也要改3个地方。幸好kubernetes
给我们提供了一种新的特性:PodPreset,该对象用来在 Pod 创建的时候向 Pod 中注入某些特定信息,可以包括 secret、volume、volume mount 和环境变量等。
为kubernetes dashboard访问用户添加权限控制
前面我们在kubernetes dashboard 升级之路一文中成功的将Dashboard
升级到最新版本了,增加了身份认证功能,之前为了方便增加了一个admin
用户,然后授予了cluster-admin
的角色绑定,而该角色绑定是系统内置的一个超级管理员权限,也就是用该用户的token
登录Dashboard
后会很强势,什么权限都有,想干嘛干嘛,这样的操作显然是非常危险的。接下来我们来为一个新的用户添加访问权限控制。
TDD开发容器化的Python微服务应用(二)
本节课我们将我们的项目拆分成3个工程,我们也会增加一些集成测试来确保每一个服务都能够正确的运行,引入持续集成概念,最后,我们还将添加一个ReactJS
的客户端。
Python 虚拟环境全知道
对于每个python
项目依赖的库版本都有可能不一样,如果将依赖包都安装到公共环境的话显然是没法进行区分的,甚至是不同的项目使用的python
版本都不尽相同,有的用python2.7
,有的用python3.6
,所以对于python
项目的环境进行隔离管理就成为一个必然的需求了。
更新django2.0的10条注意事项
备受期待的django 2.0已经发布了,最大的一个变化就是不再支持python2.x
版本了,这也为我们还在保守使用的2.x的同学们敲响了警钟,赶紧学习python3.x
吧,虽然大同小异,但是python3.x
还是提供了很多更高级的用法。
TDD开发容器化的Python微服务应用(一)
在这个课程中,你将学习如何使用Docker
快速创建开发环境、管理多个微服务,应用程序在本地运行后,您将学习怎样在生产环境部署应用。我们也会练习TDD
(测试驱动开发),在你的项目中测试先行,我们重点将放在服务端的单元测试、功能和集成测试以及端到端的测试上面,以确保整个系统按预期工作。
Prometheus报警AlertManager实战
在前面一文Kubernetes使用Prometheus搭建监控平台中我们知道了怎么使用Prometheus
来搭建监控平台,也了解了grafana
的使用。这篇文章就来说说报警系统的搭建,有人说报警用grafana
就行了,实际上grafana
对报警的支持真的很弱,而Prometheus
提供的报警系统就强大很多,今天我们的主角就是AlertManager
。
webpack3入门到放肆视频教程
前段时间花了点时间做了一个视频教学网站:海马学院,该产品的核心是围绕python
全栈(也会涉及到nodejs
、golang
等)相关的知识教学,基础的一些教学视频全免费的,但是也会推出很多付费的教学视频,付费的以实际的实战项目为主,如果你愿意的话,只需要花费一顿饭钱就可以学习到很多项目实战的经验。
更优雅的git log
对于码农来说git log
是自然熟悉不过的了,但是每天面对git log
原始的日志格式,你是不是觉得很烦人啊,因为上面的给的信息太不人性化了,而且我相信大部分的码农的提交日志都是随心所欲的