DevOpsを支える今話題のHashiCorpツール群について
19:00 - 19:15 ご挨拶、HashiCorpについてご紹介とツール解説
森 英悟, HashiCorp Japan株式会社 ソリューションエンジニア
HashiCorpはVagrantで有名になった。
https://www.hashicorp.com/
Vagrant
https://www.vagrantup.com/
VMのラッパーツール。
Packer
https://www.packer.io/
クラウド上のマシンイメージを簡単に作成できるツール。
Terraform
https://www.terraform.io/
クラウドをコード化。
マルチクラウドで利用可能。
GUIコンソールで操作するのではなく、コンフィグをコード化してそこから構築できる。
Vault
https://www.vaultproject.io/
クラウド・コンテナ向けのセキュリティ。
AWSやMySQLなどへのアクセス権をダイナミックに提供できる。
Nomad
https://www.nomadproject.io/
k8sのリソースマネージャー。
Dockerだけでなく、VMやシェル・バッチなどへ実行も高速で可能。
Consul
https://www.consul.io/
サービス間の連携をサポート。
サービス間のネットワークはConsul Connectでセキュリティ(自動的にTLSコネクションを張る)を担保する。
提供方法
-
オープンソース版
-
エンタープライズ版
企業向け。
クラスタのレプリケーション機能を提供。
サポートを提供。
19:15 - 19:35 「DeNA AIインフラでのTerraform活用について(仮)」
松木 秀憲 様, 株式会社ディー・エヌ・エー システム本部 AIシステム部
AI・分析基盤で活躍。
AI研究開発エンジニア向けにインフラを提供。
ゲーム・スポーツなどの事業部のデータアナリスト向けに分析基盤を提供。
AIインフラの課題
AIプロジェクトでは小規模(2,3人)のプロジェクトが秘匿性の高いデータ、膨大なデータ(動画など容量の大きいデータも含む)を扱う。
AWS、GCP環境をすばやく用意しなければならない。
→マルチクラウドに対応したTerraformでインフラプロビジョニングする。
インスタンスの起動までをTerraformで、その後はItamaeでプロビジョニングしている。
Packerによる解決
DeNA AIインフラではDocker化を進めている。
→Packerを利用し、AWS、GCPへのDockerリポジトリへデプロイできるようにしたい。
開発者にはDockerを教育している。
分析インフラの課題
サービス(ゲームなど)からログをHadoopへデータレイクし、
EmbulkでBigQueryかHP Verticaへ置き、内製ダッシュボードツールでクエリを投げている。
http://hadoop.apache.org/
http://www.embulk.org/docs/
https://cloud.google.com/bigquery/
https://www.vertica.com/
Hadoopのバージョンアップが大変なので無くしたい…。
Vangrantによる解決と残課題
Hadoopのバージョンアップ等を検証中。
19:35 - 19:55 「コンテナ基盤を支えるHashiCorpソフトウェア」
小田 知央 様, GMOペパボ株式会社 技術部技術基盤チーム プリンシパルエンジニア
linyowsさん。
ペパボ研究所と九州大学が共同研究中。
FastContainerによるメール基盤研究開発、実装例をGitHubに公開中。
ペパボテックブログで社内向けVaultのワークショップについて公開中。
コンテナ基盤
k8sやDockerを利用していない。
独自コンテナ環境(Oohori,FastContainer,Haconiwa)
https://rand.pepabo.com/article/2017/06/28/iot38-matsumotory/
https://rand.pepabo.com/article/2018/03/19/ipsj-taikai-80th-udzura/
Oohori,FastContainer,Haconiwa
ペパボ社開発コンテナ管理基盤。
ロリポップ!マネージドクラウド
コンテナベースのPaaS。
コンテナ管理の面倒なところをペパボ社がしてくれるサービス。
なぜ独自開発なのか?
- 安価なコンテナ環境の提供のため。(高集積してコストを下げる)
- ユーザー管理のコンテナが継続的に安全である必要がある。(FastContainerでは定期的にコンテナが再作成される)
- コンテナリソースへの権限が柔軟である。(柔軟で動的なリソース変更が必要だった)
ロリポップ!マネージドクラウドを支えるHashiCorpソフトウェア
デプロイフロー
Vagrant→CI→Knife-Zero(chefプラグイン)→OpenStack・Baremetal
https://circleci.com/
https://www.chef.io/
https://www.openstack.org/
特徴
Packerで最小限のイメージを作成し、それを共通化して使い回す。
Terraformでサーバを用意し、Knife-Zeroでプロビジョニングする。
Terraform
可能な限りModuleを分割。
Consul
Mackerelで外形監視。内部はConsulで監視。
踏み台サーバで名前解決し多段SSHできるようにしている。
https://mackerel.io/
Vault
PKIを利用。
20:00 - 20:15 「ApplibotのDevOpsを支えるTerraform/Packer(仮)」
西村 遊 様, 株式会社アプリボット(サイバーエージェントグループ)
企画・開発Div. システムオペレーションエンジニア
「FGOなど大規模ゲームの課題から学ぶゲームサーバ・インフラ勉強会」のLTにも登壇して下った西村さん。
過去にあった課題をTerraform・Packerで解決
Image作成
RUNDECK Ansible Packerを利用。
AMI・GCPImage・ContainerImageの作成。
https://www.rundeck.com/open-source
https://www.ansible.com/
Packerを入れる前は、
EC2起動→Ansibleでプロビジョニング→AMI作成→サーバ作成 を手動で行っていた。
Packerを使うことで、上記作業をコマンド1発で完了できるように。
詳細は技術ブログ「てっくぼっと!」
負荷試験
サーバエンジニアが負荷試験のシナリオ作成・試験実行・結果をまとめ、
インフラが環境作成・結果レビューする。
環境構築に3日かかっていた。(サーバエンジニアから遅いと思われているのでは)
そもそも負荷試験は、新規イベント前・サーバ構成変更・CM放映前に実施している。
- 本番同等環境(本番と同じ構成だがインスタンスクラスが小さいもの、夜間は最小化)
- 負荷をかけるサーバ(JmaterをEC2でMaster-Slave構成で作成)
- モニタリングツール
を準備しなければならない。
AWSCLIで構築順に作成していく。
- 管理が大変。
- 他のプロジェクトで再利用できない。
→秘伝のタレ化
Terraformにすることで、起動管理が集約できた。
構成要素がわかりやすくなった。
HubotでSlackから1発構築が可能になった。
→インフラ負荷削減しスピーディーに構築が可能に。
新規サービスの構築
AWSアカウントを取得した際のお約束。
rootアカウントの封印など
→自動化によりAWSアカウントのスピーディーな提供が可能に。
GitLabのベースリポジトリから新規サービス毎にForkする。
設定変更はMRから行う。
まとめ
管理・共有しやすいインフラの構築が可能に。
提携作業のテンプレ化大事。
20:15 - 20:30 「tfnotify - Show Terraform execution plan beautifully on GitHub」
b4b4r07 様, 株式会社メルカリ ソフトウェアエンジニア
社内マイクロサービス化の基盤構築を担当。
tfnotifyとは?
GO製CLIツール
Terraformの実行結果をパースし、SlackやGitHubにPOSTする。
https://slack.com/intl/ja-jp/
https://github.com/
なぜ作ったのか?
モノリシックPHPアプリケーションを分割中。
マイクロサービス化のインフラにTerraformを利用しており、そこで利用するため。
Infrastructure as Codeのため、実行結果を見る習慣づけ・CircleCIが見づらいことが切欠。
メルカリでのHashiCorpツール
メルカリ内の70以上のマイクロサービスでTerraformを利用。
プラットフォームチームとサービスチームがナレッジを共有できレビューしやすい。
サービス毎にtfstateを分け、影響範囲を限定化している。
ツールの特徴
go言語。
GitHubだけでなくCIのConsole出力にも対応。
出力結果に重複部分がある場合、古いものが削除される。
表示は必要な部分だけハイライトして簡略化している。
20:30 - 20:45 「dwangoでのHashiCorp OSS活用について(仮)」
鈴木 栄伍 様, 株式会社ドワンゴ 第二サービス開発本部 Dwango Cloud Service部
Consultingセクション 第二プロダクト開発部 第一セクション
HashiCorp OSS in dwango
ニコニコ動画・ニコニコチャンネルなどを担当。
最近ではニコニコアンケート・Mastodon・社内AWSコンサルティングを担当。
dwangoインフラ
- VMware vSphere
- AWS
- ベアメタル
Packer
- VagrantのBOX作成
- AMI作成
Consul
- サービスティスカバリ
- KVS・ヘルスチェック
社内のDBマネジメントサービスに利用
Terraform
- AWS環境の構成管理
ニコニコアンケート・Mastodon・ニコナレ・N予備校などの一部で利用。
ニコニコアンケートのテンプレートを基に2日ぐらいでMastodonを作成。
活用事例
CI
本番環境で障害を出さないか心配…。
Github Jenkins Terraformなどを使用。
- PRが出る
- Jenkinsでpr_test環境でplan→Apply→Destroy
- Sandbox環境(起動しっぱなし)にPlan→Apply
- 全て通ったらMergeする
ステップ毎に結果をSlackへ通知するので進捗がわかる。
完了はメンション付きで通知する。
Github上に✅ ❌が付き、環境を壊す・壊さないがわかる。
CD
CIが通ったらDEVへデプロイしたいが手動は面倒。
Jenkinsでジョブ化して自動デプロイできるように実装。
Jenkins上の「ビルド実行」をクリックすることで自動実行される。
Slackに通知するので成否を簡単に確認できる。
これから期待したいこと
- Consul Connect
- sentinelをOSS化してほしい
- Vault導入、便利そうだが運用設計パターンを作るのが難しい