680 Views
May 31, 19
スライド概要
Rancher Meetup Tokyo #19で発表した資料です。
Concourseの紹介と活用例についてお話しました。
Senior Solutions Engineer @HashiCorp NTT Communications -> Pivotal -> VMware -> HashiCorp
Concourseで快適な 自動化の旅
Solutions Architect @ KAZUTO KUSAMA @jacopen
https://cloudnativedays.jp/cndt2019/
会場で質問してみました。大体半分くらいの人が手を上げ てくれました。 ただ、今回はConcourse知らない人、名前だけ知ってる 人向けのスライドになってます。 知ってる人?
DEMO
これがConcourseのWeb UIです。ごちゃごちゃしたメ ニューは無く、稼働しているパイプラインが分かりやすく表 示されています。
パイプラインをクリックすると、その詳細が表示されます。 これまたシンプルな画面ですね。このパイプラインはGitリ ポジトリをチェックしているので、変更をpushしてみます。
すると、自動でユニットテストが回り始めました。 ユニットテストが通ると、Cloud Foundryへのデプロイ と、Dockerイメージ作成⇒Kubernetesにデプロイという 処理が並行で走るようになってます。 よくある、CIの後CDするというデモでした。
Concourseの特徴
Simple Concourseの特徴として、まずシンプルであるという点が 挙げられます。 UIだけでなく、その設計思想に至るまでSimple is best を突き詰めています。
Scalable デモでは触れなかったのですが、スケーラブルな設計に なっています。パイプラインが数百になろうとも、worker の追加で対応できます。
Pipeline そしてなにより、パイプライン。 最近はパイプラインを取り入れるCIツールが増え てきましたが、Concourseは生まれたときから パイプライン第一の設計です。
YAML 最近増えてきてますが、パイプラインはYAMLで 定義します。 コードで定義することで再利用性が高まるし、レ ビューしやすいのです。
元々はCFの開発向けに作られたもの
複数のコンポーネントから成るアーキテクチャ PaaSであるCloud Foundryは、複数のコンポーネントからな る大規模なシステムです。
Buildpackによる複数の言語・FWサポート PaaSとして、複数の言語やフレームワークを 動かすことができます。
BOSHによるIaaSの運用自動化 そしてCFそのものを構築するため に、BOSHというライフサイクルマ ネジメントのツールを使っていま す。 このBOSHは、 AWS/Azure/GCP/vSphere/O penStackなど様々なIaaSの自動 化ができる強力なツールです。
複数の コンポーネント 複数の 言語・フレームワー クサポート 複数の IaaSサポート ⇒これらの組み合わせのテストをするとなると・・・ このプラットフォームをテストするとなると、まあ大変 だってのが分かりますよね
Why Concourse ● ● ● かつて、これほどの規模のCIを回していけるツールは無かった なので作った Cloud Foundryのような超大規模なプラットフォームを 作っていくために必須だったこと ○ ○ ○ パイプライン YAMLでの記述 ■ 再利用性を高められる 視認性の高いシンプルな UI
実際にCFの開発で動いているパイプラインの一例 です。すっごい
Cloud Foundryに限らず汎用的に使えます よく勘違いされますが、何にでも使えます。
リソース リソース リソース リソース ジョブ ジョブ ジョブ
git git git Docker image PaaS k8s
Gitから持ってきて ユニットテスト Gitから持ってきて イメージをビルド Gitから持ってきて Cloud Foundryにデプロイ GitからManifestを持っ てきて 編集して Kubernetesにapply
余談ですけど、Concourseのコンポーネントは ATC(航空管制)とかTSA(運輸保安庁)とか、空港に 関わる名称が使われてます。
はじめようConcourse
Concourse Tutorial
How to Install 一番かんたん Docker Compose $ wget https://concourse-ci.org/docker-compose.yml $ docker-compose up -d
How to Install 本気で運用するなら BOSH Kubernetes Helmのstable/concourseにChartあり Standalone 公式サイトのドキュメント参照
CLI fly $ fly -t ci pipelines name paused build-image no k8s-pipeline no blinker-ci yes lego-image-build no azure-ag-autoupdate no setup-azure no test-pipeline no combined-pipeline no nsxt yes public no no no no no no no no no ConcourseのUIから ダウンロード可能
活用しようConcourse
DEMO
アプリ開発におけるCI/CD・・・だけでなく
TerraformでAzureの プロビジョニング OpsManagerの 初期設定 デプロイ BOSH Directorの 設定 Pivotal Application Serviceの設定 Pivotal Application Serviceのデプロイ自動化。IaaSプロビジョニン グからPASのコンフィグ、デプロイまで全部やっちゃいます。 https://github.com/making/pas-pipeline-azure
Pivotal Application Serviceの新バージョンがあるか Pivotal Networkをチェックし、あれば自動で適用するパ イプライン https://github.com/pivotal-cf/pcf-pipelines (※注: 現在はdeprecated)
Pivotal Application Serviceのバックアップを取り、S3 に保存するパイプライン https://github.com/pivotal-cf/bbr-pcf-pipeline-tasks
Let’s Encryptで証明書を発行した後、pfx形式に変換、そし てAzure Application Gatewayに適用するパイプライン。 これで3ヶ月に1回の更新作業も自動です。 https://github.com/jacopen/azure-ag-autoupdate
NSX-Tのインストールも自動化 VMwareが配布している、NSX-Tのインストールを自動化す るパイプライン https://github.com/vmware/nsx-t-datacenter-ci-pipelines
そういえば技術書典6でこんな本出したんですが BOOTHで電子版好評発売中! https://showks.booth.pm/items/1318454
複数人執筆でもConcourse大活躍
原稿をGitHubにpushすると PDFとePubが生成され Slackに通知がくる この自動化がなければ、共同執筆は無理で した。CI重要なのはソフトウェア開発と一緒 ですね
そういえばこんなのがバズってました 登壇した当日、こんなジェネレータが Twitterでバズっていました。 ミートアップの休み時間に見つけて爆笑して たんですが、これConcourseで動かせるん じゃね?と https://github.com/greymd/ojichat
さくさくっとdocker buildして・・・ (タイムスタンプがミートアップの休み時間なのに注目)
さくさくっとyaml用意すると
おじさんがLINEやメールで送ってきそうな文がSlackに 送られてくる地獄のようなパイプラインが出来ました。 作るのにかかった時間は僅か数分。
Concourseによる『自動化の旅』とは ● 開発者にとって ”普通に使える” CIツール ● でも、開発だけでなく運用にも積極的に使うべき! ○ Toilを無くす便利ツールとして使える ○ Concourse自体の習得は簡単。むしろ活用のためには シェル力のほうが必要かも ● みんな自動化して快適に仕事しよう
Have a safe flight!