本帖最后由 FYIRH 于 2021-12-24 23:55 编辑
( z' f$ e# H9 J! C& ^- R6 W' S3 m# M' ~2 ?
. y q. ~, k3 r8 m. {( r0 P( t7 r" Y7 z8 Q
5 O3 S; _9 l: I# v+ x1 G
/ y+ t" ` c: z+ n( s) X传统开发和运维之间存在着难以调和的矛盾:开发希望尽快地创建更多新功能,满足客户需求,这是他们的本职工作;但对运维来说,新功能意味着变化,变化意味着不稳定,这又和自己的工作背道而驰。 这种矛盾会导致大量的资源和时间的浪费,所以, DevOps 诞生了。DevOps 的理念就是希望能打破这种屏障,让研发(Development)和运维(Operations)一体化,让团队从业务需求出发,向着同一个目标前进。 随着容器、Kubernetes 等云原生技术的落地,DevOps 工程师越发成为一个热门工种。今天我们就来介绍 5 种好用的 DevOps 工具,让你的工作事半功倍! DevOps 的概念在软件开发行业中逐渐流行起来。越来越多的团队希望实现产品的敏捷开发,DevOps 使一切成为可能。有了 DevOps ,团队可以定期发布代码、自动化部署管道、并将持续集成 / 持续交付作为发布过程的一部分。
# \& _6 J. i' ^% l" o3 l* Q9 P$ x& Z6 ]3 o5 k+ n2 H
0 Q5 n6 g7 x" E* }6 q
$ \$ W) d3 Y, r4 Z4 I , ~+ v# u4 \, `" ?& p! g. p
0 h% [8 t7 K2 a) w; P: n
虽然 DevOps 背后有各种各样的概念,但幸好有一些工具可以让你更容易地理解和实现这些它。
$ z8 c; u+ r# |0 r3 O7 U3 d8 b$ T! I& ^, h
在本文中,你将了解这些工具,最好能将它们作为软件发布 / 维护工具包工作的一部分开始使用。
6 [. ?( g1 G7 F2 n3 x' i
) O) S$ Q; {* t( v- z( {DevOps 有很多可使用的工具,在一篇文章中几乎不可能介绍完它们。本文将介绍五种最流行、功能最强大的 DevOps 工具: + j$ F, h) V2 F, C( ?
, W# N$ ]1 x0 [3 b; x
- e2 Y0 B+ w( H. l- O8 x
# q: X; E) _) e
Terraform 8 E% S+ B* {. p
0 q' h- a, U7 V4 C" ]$ c, @
, }) m* p7 h, p: [$ S( h
4 L1 {# F* @+ ?, a, _0 @$ r9 C8 Y( P1 h
6 P k: j7 R/ b( s9 p/ }$ W
类型:配置
: p! U& j$ b ~5 T% n! w2 k语言: Go
* T9 t+ Y6 c6 V7 Z5 ~. E V9 R$ Q; X2 o& w! ]
推荐的第一个 DevOps 工具是来自 Hashicorp 的 Terraform。Terraform 是一个基础设施管理工具,允许您正确地构建、更改和管理基础设施。您可以将 Terraform 视为一种供应工具。它帮助您设置服务器、数据库和其他支持全面应用程序的基础设施。 2 P0 ` V+ v$ ]* C! u# x
* S; d& O2 M0 q" S
Terraform 并不局限于任何特定的云服务提供商,它可以与多个云提供商和环境协同工作。云服务提供商如 AWS、Microsoft Azure、谷歌云都与 Terraform 无缝集成。版本控制系统托管提供商,如 Github 和 Bitbucket,都可以很好地使用它。 6 G2 M& t0 d3 [$ N, t# A0 k
. C9 r, a4 u8 z3 ]$ V7 l
Terraform 有一个企业版和开源版,还可以安装在 macOS、Linux 和 Windows 系统上。
& U5 `% T8 T- D3 i) c0 A
& M$ E' z! g3 B+ J0 k" vAnsible ) l. |% r) r- {0 K4 H6 m
, X. O" y6 w) @ F" `; H6 L
, ?5 N5 S) T) k; g
* {) J4 b) J1 o0 t- I类型:配置
, R4 U( f" P. M1 u: g8 t语言:Python、PowerShell、Shell 和 Ruby
/ J& I- x/ d/ q9 r9 R
, Z* ~) Z2 N8 \) `! s' g8 J8 V# M f与 Terraform 类似,Ansible 也是一个基础设施管理工具。Ansible 可以帮助你部署应用程序,供应和配置管理的服务器。Ansible 是用 Python 构建的,由 RedHat 维护,但它仍然是免费和开源的。 - W0 d8 x- j& x( u0 {3 D0 i
# F% P o U; z+ A! w& v- B. Q作为一个配置管理系统,您可以使用 Ansible 来设置和构建多个服务器。你可以在控制机器上安装 Ansible,而不需要 Ansible 在其他服务器上运行,这些服务器可以从 web 到应用程序再到数据库服务器。 " X: e% A6 B1 O7 L/ O
5 S6 L: P. n: O, u) S) a与 Terraform 不同,Ansible 不使用 HCL 作为它的代码。相反,配置是写在 Ansible 剧本,这是 YAML 文件。Ansible 使用声明性和程序性模式的混合。这与 Terraform 不同,后者仅仅是声明性的。
% t# F0 a$ g* R% }: L" b' R( T( A$ F! \" j/ s
Linux 是安装 Ansible 最合适的操作系统。不过,它在 macOS 上也运行良好。对于 Windows 用户,可以通过 Linux 的 Windows 子系统的 bash shell 使用 Ansible。
9 }8 t7 N8 Y4 t3 X5 d; ^. S6 [" L/ z* H- z8 y+ h& D9 q4 K; m
Packer
+ u, Q1 X8 \2 C0 |3 A* o# y7 ~6 N( n3 k3 |# F8 q3 H4 B+ u
5 m' p; d& F: S" W
8 L8 ^+ E) z) I
9 X3 Y" Y% W7 G
类型:配置 % U' G3 ]0 l' J) z& O, j
语言: Go
9 }5 E9 g: A% F& B" N3 K1 K; r7 @+ b& [
Packer 是另一个来自 Hashicorp 的 DevOps 工具。用 Golang 编写的 Packer 可以帮助你自动创建虚拟镜像。手动构建镜像的过程可能令人沮丧,因为它容易出错,但 Packer 消除了所有这些。 4 K( _6 i' t' H) I
2 y& A) z# g) w$ y
对于单个 JSON 文件,可以使用 Packer 创建多个镜像。当它第一次工作时,由于没有任何东西会干扰它的自动化过程,因此可以保证它能百分百地工作。许多云服务提供商都使用镜像,您可以无缝地与这些提供商合作,因为 Packer 标准化了用于云环境的镜像的创建。 6 V; C2 a6 G' r- k3 [ _; B
g8 e' C% ^1 W0 A/ `/ l& X# f1 w- n gPacker 不是一个独立的工具。您可以将其与 Ansible、Chef 和 Jenkins 集成,以便在部署管道中进一步使用这些映像。安装过程并不复杂,您可以学习如何开始使用该工具。 5 a% ]; N8 Z2 E1 J3 ^
0 V+ L W/ D) s
Docker 7 x! ]0 V7 N1 G; }0 j* }; D
7 A0 v, y- ^2 r
! G: c- q! f3 c+ B- M$ I
7 O, M `. q" I, N; `类型:容器 % x) \/ J1 |! J( t2 |% F% o
语言: Go - ^7 d2 q Y2 p5 g# r0 q3 I8 B6 }
# m6 r t- [1 `* ?( c* a1 K( O3 n7 o1 hDocker 是一种容器技术,可让您在特殊环境中隔离应用程序。容器化与虚拟化类似,不同之处在于容器不会启动完整的操作系统。
- ~: w: e1 F) c" P5 X0 u
! c' p9 Y# K: B4 x* b4 F) w9 C5 J& r: u使用 Docker 容器,您可以在这些自定义环境中开发和部署应用程序,从而不必担心兼容性问题。您的应用程序可以在任何位置运行,只要它们位于容器中即可。 0 p B' [* z+ X
# N9 d0 g: Z5 o8 ~1 e
要启动 Docker 容器,您必须通过 Dockerfiles 创建 Docker 映像。从 Docker 映像启动时,Dockerfile 包含 Docker 容器中所需的规范。您不必总是构建自己的 Docker 映像,因为 Docker Hub 上可以使用官方映像。 9 D) l6 y& \, L8 t( Z. A3 N
6 n( \$ U% D3 I I8 n J
通常情况下,你可能会使用多个 Docker 容器,这就引出了本文中的最后一个 DevOps 工具。 ; v8 x0 D K% ]
3 m. w, s; \" u- `/ h. }9 L
Kubernetes , G& c& m; [2 A0 {) U9 b
) i' T/ S8 F. ~9 p$ K3 a5 [' j/ s. U. K! C' l8 N
1 d' R/ W3 s$ M
8 q7 b5 q% K! ?4 U i* a
类型:容器 # a, d# b. J, f
写于: Go
6 J. ]- I% h0 C5 @9 ^4 L4 Z) a" }! c
Kubernetes (K8s) 是一个谷歌开源工具,它可以让你管理 Docker 容器。由于在生产中经常有大量的容器在运行,因此,Kubernetes 使编排这些容器成为可能。 2 Z% W+ T6 c; q% ^
$ p u* L/ w6 n7 W0 T# K
首先要了解编排 Docker 容器的原因。当有许多容器在运行时,很难手动监视这些容器,并使它们彼此通信;另外,这种扩展以及负载平衡也变得困难。使用 Kubernetes,可以控制所有这些容器,因此可以将这组机器作为一台机器进行管理。与 Docker Compose 相比,Kubernetes 是不同的,因为它使部署,扩展和监视容器变得更加容易。当它们中的任何一个崩溃时,它们都可以自愈,而 Kubernetes 可以制造新的来代替。 + u+ G1 ?7 L2 d% `) b! g. x
9 Q' z/ v! w( t' ?3 y, |使用 K8s,可以轻松地进行存储编排、服务发现和负载平衡。 . P0 A! t1 G( f+ D3 J
7 t9 P- }( i0 ` T4 c
您可以在 macOS,Linux 和 Windows 上安装 Kubernetes,并通过Kubernetes 命令行工具使用它。Docker 本身可以在 Linux 上运行,并且在 macOS 上也可以正常运行,因为它类似于 Unix。对于 Windows 用户,也可以通过Docker 工具箱来使用 Docker。 - a$ i: n6 Z6 j1 c' H5 w7 ~4 x+ w
- N. N1 y4 V! W
结论
. B7 [" |+ X. B' E& O
( D6 W! [ Q2 b$ B7 ~. rDevOps 的概念对于使大型应用程序在不同负载或流量下保持高性能是非常有益的。它还使软件部署管道易于管理。 / J/ O2 B1 ~" Q0 e
4 Q! }. @/ B* w! W. n/ |: _如果没有可用的工具,DevOps 概念很难实现。这个领域有很多工具,每个公司都有不同的选择。尽管如此,Terraform、Ansible、Packer、Docker、Kubernetes 都是拥有大量用户社区的工具,能够在各种软件项目中实现 DevOps 的工具。如果您打算使用它们,可以做进一步的研究。(转自DashMagazine)
) @* j7 o& g# Q& c( V; c6 k. F# {5 U3 @+ f' {, [9 c0 o1 B+ c. P* q
5 p, t( _& n9 m% |7 R
! ?3 I* k9 t) x4 }0 U* M( y
: m9 N! S- h: I$ r, ^4 _% W
0 C% q% D- @5 x" b0 M |