16
18

More than 5 years have passed since last update.

DevOpsを支える今話題のHashiCorpツール群について メモ

Last updated at Posted at 2018-09-12

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などを使用。

  1. PRが出る
  2. Jenkinsでpr_test環境でplan→Apply→Destroy
  3. Sandbox環境(起動しっぱなし)にPlan→Apply
  4. 全て通ったらMergeする

ステップ毎に結果をSlackへ通知するので進捗がわかる。
完了はメンション付きで通知する。

Github上に✅ ❌が付き、環境を壊す・壊さないがわかる。

CD

CIが通ったらDEVへデプロイしたいが手動は面倒。

Jenkinsでジョブ化して自動デプロイできるように実装。
Jenkins上の「ビルド実行」をクリックすることで自動実行される。

Slackに通知するので成否を簡単に確認できる。

これから期待したいこと

  • Consul Connect
  • sentinelをOSS化してほしい
  • Vault導入、便利そうだが運用設計パターンを作るのが難しい
16
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
18