I need just one option to paraphrase your sentence naturally in Chinese: 总结了IaC相关的工具
Background
在广义上,基础设施即代码(IaC)有很多不同的形式。
Ansible/Terraform/Cloudformation/Helm/Kubernetesなど、
横並びにするにはレベル感もごちゃごちゃだし、どういう使い分けするの?
というふとした疑問からIaC関連ツールの全体像と関係性まとめてみた。
试着将其分成三个层次。
容器的繁荣扩大了基础设施即代码的定义,并且从Jenkins 2.0开始引入了Jenkinsfile,使得CI/CD也成为了基础设施即代码的一部分。
-
- 基础设施即服务(IaaS)层(狭义的基础设施即代码)
-
- 容器层
- 持续集成/持续交付(CI/CD)层
第一个层级:基础设施即服务层(狭义的基础设施即代码)
历史和概要
ChefとPuppetの2つを覚えておけばOK。と思っていたら、時代が随分と進んできて、Ansibleではエージェントレスになったり、随分と便利になったなと。
《木偶》(2005年)- 《主厨》(2009年)- 《自动化运维工具》(2012年)- 《庭园》(2014年)
1. 例子1:Ansible的代表性。
无代理的基础设施即代码工具
用漫画讲解红帽子Ansible自动化。
代表例2:Terraform
以10分钟内理解Terraform
这是一个被归类为基础设施定义工具的工具,它可以在云上将资源生成和操作为定义文件状态。
由于对基础设施即代码疲倦不堪,我们整理了我们原本想要做的事情。
Terraform 注册表
可以重用某人制作的模块。
一个典型的例子是用于AWS或OpenStack的工具。
个别工具专用的IaC也越来越流行。
-
- CloudFormation:AWSの構築自動化
- OpensStack Heat: OpenStackの構築自動化
第二层:容器层
这个层次可以再细分为3层。重要的是,管弦乐的管弦乐将进一步出现。
2-1 容器/虚拟化
-
- Docker
- VMWare
2-2 コンテナオーケストレーション(仮想含む)
-
- Docker Compose
-
- Kubernetes(EKS/IKS/GKE)
-
- ECS
- Vagrant
2-3 コンテナオーケストレーションのオーケストレーション
- Helm
Helm
Kubernetes是一种集中管理应用程序的机制,类似于yum或apt等软件包管理工具。
使用Helm来简化Kubernetes的运用。
KubernetesでつらいYAML地獄を脱却するYAML生成ツール
第三层:CI/CD层
只要记住Jenkins就可以了的时代已经结束了。首先要有使用YAML编写构建流程的概念。
Kubernetes系列
基于Kubernetes的持续集成/持续交付(CI/CD)框架
范例1:泰克顿
「Tekton」は、KubernetesネイティブなCI/CDツールです。KubernetesのCRD(Custom Resource Definitions)やControllerとして動作し、Kuberentes環境にデプロイするアプリケーションとの相性が良いのが特徴です。元々サーバレスツールである「Knative」のbuild-pipelineとして開発されていましたが、その後Cloud Delivery Foundation(CDF)のツールの一つとなっています。
代表例2:ArgoCD
「Kubernetes Native」なGitOpsベースのCDツール
Kubernetesに気軽にインストールして使える
Gitリポジトリをサポート
WebのUIとコマンドライン(CLI)を提供
YAMLでデプロイを記述でき、Gitリポジトリで管理できる
KustomizeやHelmと連携可能
変更検出によるデプロイではなく差分検出によるデプロイ
例子3:JenkinsX 的代表
不用Kubernetes?
旋涡筛
多云CD工具
-
- 「継続的デリバリ」(CD)を実現できるコンテナクラスタ管理ツール「Spinnaker」
- Immutable Infrastructureを強制する
建立管道
步骤函数
其他
-
- SCCM
クライアント系ツールの配布
まとめ(ここまで書いておきながら逆のことを言う、、、)
说实话,这是我的感觉,就算将这类工具层次化了,功能还是会渗透到相互的层次之间。
分层只是源头和擅长的层次的区分而已。
所以,要选择适合自己的工具,可能需要参考具体的个别事例。另外,选择自己想要尝试的工具并全心投入是不错的选择。即使工具不太好用,只要对工具有爱,努力和毅力也能克服一切(应该)。