Slide 1

Slide 1 text

K8sでの 環境構築および 運用フロー構築のはなし

Slide 2

Slide 2 text

自己紹介 2

Slide 3

Slide 3 text

名前:安田俊之 関わってきた技術: Linux, Docker, K8s, Terraform, Ansible, Chef, Ruby On Rails, Vue.js, AngularJS, Symfony, FuelPHP, CakePHP Androidアプリ, Spring(Java), Perl/CGI PostgreSQL, MySQL, Oracle, PL/SQL Vim, Zsh, etc. 3

Slide 4

Slide 4 text

本題 4

Slide 5

Slide 5 text

みなさん、Kubernetes使った ことありますか? その前に 5

Slide 6

Slide 6 text

これからKubernetesおよび EKS(AWSのKubernetesのマネージ ドサービス)についてお話しますが、そ れらの基本知識についての説明は時 間がないので割愛します。 前提 6

Slide 7

Slide 7 text

ザーッとどんな感じで環境構築したかとサイト管理 をしているかをご紹介させて下さい。 Kubernetesについてあまり知らない方は、なんと なく、雰囲気で、聞いていただけるとありがたいで す! 前提 7

Slide 8

Slide 8 text

K8sを使った背景 8

Slide 9

Slide 9 text

弊社(iCARE)では元々 コーポレートサイトの一 部でメインのサービス Carelyを紹介していた のですが、今年4月か ら別途プロダクトサイト を立ち上げることに。 K8sを使った背景 9

Slide 10

Slide 10 text

動作環境の要件としては ● WordPressで管理したい ● ユーザー向けのコンテンツはCDNでキャッシュし たい といったシンプルな要件。 とはいえ、 K8sを使った背景 10

Slide 11

Slide 11 text

スクラッチからシステムを構築できるチャンスは、 弊社にはあまりない。なので、むしろこのシンプル な構成だからこそ新しい技術Kubernetesでサイト を構築するチャンス! そしてそこで技術なれして本サービスCarelyに展 開したい! K8sを使った背景 11

Slide 12

Slide 12 text

ただし、プロダクトサイトを管理するメンバーには Dockerの知識はなく、gitの操作くらいしかできない ので、サイトを管理するメンバーにはdockerコマン ド等は期待できない K8sを使った背景 12

Slide 13

Slide 13 text

そういうバックグラウンドがあったので、次のような 構成でサイトを構築することを考えた K8sを使った背景 13

Slide 14

Slide 14 text

システム構成 14

Slide 15

Slide 15 text

システム構成図 15 こんな感じ

Slide 16

Slide 16 text

システム構成図 16 サイト管理者はdockerコ マンドではなく、git コマ ンドでコンテンツをgit サーバーにpush

Slide 17

Slide 17 text

システム構成図 17 gitサーバーは、podがマ ウントしているEFSにマ ウントしており、git push されたファイルはEFSに 格納される

Slide 18

Slide 18 text

システム構成図 18 podではEFSにマウント しているので、git pushさ れたコンテンツをwebコ ンテンツとしてユーザー に返すことができる

Slide 19

Slide 19 text

システム構成図 19 ユーザーは CloudFront〜ELBを経 由してkubernetesのpod へは、アクセスできる

Slide 20

Slide 20 text

システム構成図 20 KubernetesはEKSで管 理しているので、管理コ ストは低い

Slide 21

Slide 21 text

システム構成図 21 WordPressはhelm chartで管理。 WordPressのバージョン アップもhelmコマンドで できるので楽。

Slide 22

Slide 22 text

管理の詳細について 22

Slide 23

Slide 23 text

1. システム管理者は、kubectl, helmコマンド 2. サイト管理者は、WordPressの管理画面を利用しつつ、 gitでテーマを管理 3. Kubernetesのステータスをビジュアル的に確認する際は Kubernetes Dashboardを利用 こんな感じで管理しています 23

Slide 24

Slide 24 text

Kubernetes Dashboard 24

Slide 25

Slide 25 text

● DataDogエージェントのpodを追加し、DataDog側でも Node情報を取得、しきい値を設定して、アラートが上がる ようにしている(つい先日、EKSバージョンアップをした際 に動かなくなって、ちょっとそのままにしてあるけど・・・) こんな感じで管理しています 25

Slide 26

Slide 26 text

1. 今の所、特筆して困ることはないが、頻繁に操作するわけ ではないので、その都度コマンドがどんなだったか忘れて しまいがち 2. Kubernetesコマンドを扱うエンジニアが二人しかいないの で、改善はあまり進んでいない 3. EKSのバージョンアップに合わせてNode(EC2)のイメージ を変えたりする作業があったが、少し面倒くさかった(aws の公式サイトに「およそ 3 か月ごとにリリースされており」 とあるようにマイナーバージョンのリリースが頻繁にある) K8s運用で困ったこと 26

Slide 27

Slide 27 text

● オートスケールにしていないので、オートスケー ルにしたい(ただ、基本的にはユーザーアクセス はCloudFrontでさばかれるので、今の所ニーズ がほとんどない) ● あと、他のサービスもEKSの上にのせたりしな がら、 Kubernetesの知識、経験を積み上げて、 最終的にはメインプロダクトであるCarelyもそこ に乗せたい 今後の展望 27

Slide 28

Slide 28 text

ご清聴ありがとうございまし た! 以上 28

Slide 29

Slide 29 text

質問 29