kakakakakku blog

Weekly Tech Blog: Keep on Learning!

マイクロサービスの学習に使えるサンプルアプリケーション「Sock Shop」

個人学習用にマイクロサービスを体験できるサンプルアプリケーションを探していたら,Weaveworks から公開されている「Sock Shop」を発見した.「Sock Shop」は名前の通り「靴下 EC サイト」「ユーザー登録/商品閲覧/カート/ウィッシュリスト/購入(ダミー)」など,EC サイトに必要な機能が一通り実装されている.ドキュメントに以下の記載があり,マイクロサービスを体験したり,デモに使ったり,トレーニングに使ったりする用途に適している.良さそう!

Sock Shop can be used to illustrate microservices architectures, demonstrate platforms at talks and meetups, or as a training and education tool.

microservices-demo.github.io

Sock Shop を動かす

「Sock Shop」は Docker / Kubernetes / Amazon ECS など,多くのプラットフォームをサポートしている.今回はお手軽に試すため,Docker Desktop for Mac と Docker Compose を使って動かす.ドキュメントにある Quick Start も Docker Compose を使う手順になっている.以下のように GitHub リポジトリを clone し,Docker Compose を起動すると,「計15種類」のコンテナが起動する.

$ git clone https://github.com/microservices-demo/microservices-demo
$ cd microservices-demo
$ docker-compose -f deploy/docker-compose/docker-compose.yml up -d
(中略)
Creating docker-compose_rabbitmq_1     ... done
Creating docker-compose_user_1         ... done
Creating docker-compose_user-db_1      ... done
Creating docker-compose_front-end_1    ... done
Creating docker-compose_carts-db_1     ... done
Creating docker-compose_orders_1       ... done
Creating docker-compose_orders-db_1    ... done
Creating docker-compose_edge-router_1  ... done
Creating docker-compose_user-sim_1     ... done
Creating docker-compose_carts_1        ... done
Creating docker-compose_payment_1      ... done
Creating docker-compose_catalogue_1    ... done
Creating docker-compose_catalogue-db_1 ... done
Creating docker-compose_queue-master_1 ... done
Creating docker-compose_shipping_1     ... done

起動後に http://localhost に接続すると,すぐに「Sock Shop」にアクセスできる.

f:id:kakku22:20190426142844p:plain

靴下を検索することもできる.

f:id:kakku22:20190426142914p:plain

カート機能も充実している.

f:id:kakku22:20190426143044p:plain

マイクロサービス紹介

「計15種類」のコンテナで使われている技術をザッと整理すると以下のようになる.マイクロサービスごとに言語とデータストアが異なり,まさにマイクロサービスの思想でもある「ポリグロット (Polyglot)」な構成になっている.Go API の実装を読んでいると「OpenTracing」を使っていたり,負荷テストに「Locust」を使っていたり,コンテナごとに詳しく調べていく楽しさもある.また Go API の Dockerfile を確認したところ「multi-stage builds 機能」も使っていて,学べる点も多くある.コンテナ同士の関係はdocker-compose.yml に書いてある.

github.com

API 紹介

API ごとに Swagger ドキュメントがあり,簡単に API 仕様を確認できる.試しに「カタログ API」を実行すると以下のようになる.

$ curl -s http://localhost/catalogue/d3588630-ad8e-49df-bbd7-3167f7efb246 | jq .
{
  "id": "d3588630-ad8e-49df-bbd7-3167f7efb246",
  "name": "YouTube.sock",
  "description": "We were not paid to sell this sock. It's just a bit geeky.",
  "imageUrl": [
    "/catalogue/images/youtube_1.jpeg",
    "/catalogue/images/youtube_2.jpeg"
  ],
  "price": 10.99,
  "count": 801,
  "tag": [
    "geek",
    "formal"
  ]
}

まとめ

  • マイクロサービスを体験できるサンプルアプリケーションとして「Sock Shop」を発見した
  • EC サイトに必要な機能が一通り実装されている
  • 引き続きマイクロサービスの実装を読み解きながら「Sock Shop」の詳細を追っていく

SQL 選択実行など便利な新機能が追加された「Redash v7.0.0」紹介

2019年3月末に Redash の最新バージョン「Redash v7.0.0」がリリースされた.Change Log を読むと機能追加が多くあり,今回は「個人的に気になった Redash v7 新機能(もしくは UI 変更)」「9点」紹介しようと思う.

もし既存環境を Redash v7 にアップデートするのであれば,GitHub に公開されている docker-compose.yml と以下のドキュメントを確認しておくこと.バックアップを忘れずに!

redash.io

1. Version 表記

細かな UI 変更ではあるけど,Redash v6 までフッターにあった Version 表記が Redash v7 ではメニューバーに移動していた.個人的にはフッターがスッキリして良いかなと!

f:id:kakku22:20190414205148p:plain

2. Knowledge Base

Redash の操作に悩んだときによく見る「Redash Help (Knowledge Base)」のリンクがナビゲーションバーに追加されていた.全文検索にも対応しているし,結構使うことになりそう.Redash の普及に合わせて,ユーザーフレンドリーな UI 変更も増えている印象がある.

f:id:kakku22:20190414205731p:plain

3. データソース追加

Redash はバージョンアップごとに対応データソースを増やしている.今回 Redash v7 では「計5種類」追加となり「計44種類」になった.今後もどんどん増えていきそう!

  • Amazon Elasticsearch Service
  • Apache Drill
  • Mapd
  • Snowflake
  • Uptycs

f:id:kakku22:20190414205828p:plain

4. SQL 選択実行

個人的に Redash v7 で神アップデートだと感じるのは「SQL 選択実行」で,SQL の一部を選択して実行できるようになった.データ分析をするときはサブクエリを多用することもあるけど,今までだと SQL ごとに実行確認をしながら組み立てる必要があり,比較的面倒なオペレーションだと感じていた.Redash v7 では大規模 SQL を書くときもストレスなく使える.最高!

f:id:kakku22:20190414210510p:plain

5. クエリ自動実行

今までもあった「Refresh Schedule」「終了日 (Ends)」を設定できるようになった.広告出稿中など,限定的な期間にクエリ自動実行をできるようになり,より自由度が高くなったと思う.

f:id:kakku22:20190414210903p:plain

6. 最終アクセス日時

Redash User 管理画面に「最終アクセス日時 (Last Active At)」の項目が追加された.Redash 運用担当の視点から作られたまま放置された Redash User を精査するときなどに使えそう.

f:id:kakku22:20190414211045p:plain

7. 招待中

Redash v6 だと Redash User 管理画面に「Active Users」「Disabled Users」しかなく,今回 Redash v7 では「Pending Invitations」も追加された.Active と Pending を区別できるのは Redash 運用担当だと助かる機能と言える.

f:id:kakku22:20190414211225p:plain

8. User API Key 更新

Redash v7 では User API Key を「更新 (Regenerate)」できるようになった.コンプライアンス的に要件はありそう.とは言え,推奨は User API Key ではなく Query API Key となり,使う前に一度ドキュメントを読んでおくと良いと思う.詳しくは過去記事にまとめてある.

kakakakakku.hatenablog.com

f:id:kakku22:20190414211419p:plain

9. Google Hangouts Chat 通知

アラート機能の通知先に「Google Hangouts Chat」が追加された.データソースと同じく,必要に応じてどんどん増えていく気がする.

f:id:kakku22:20190414211711p:plain

まとめ

  • Redash v7.0.0 を試した
  • 個人的に気になった新機能(もしくは UI 変更)を「9点」紹介した
  • 「SQL 選択実行」は Redash v7 の神アップデートだと思う
  • Redash ハンズオン資料 (redash-hands-on) の v7 対応はもう少しお待ちを🙏

github.com

どうすればうまく教えられるのか /「インストラクショナルデザイン」を読んだ

アウトプットとは「情報を伝えること」であり,視点によっては「教えること」と言い換えることもできる.1年半前の登壇資料(アウトプット駆動学習を習慣化する)にも書いた通り,僕はアウトプットの延長線として「教えること」に強く興味があり,プログラミング講師を約2年,ブログメンタリングを約1年半,技術講師を約8ヶ月と,直近数年間は「教えること」を追求するために多くの時間を割いている.どうすればうまく教えられるのか.どうすればうまく教えられないのか.そんなことばかり考えている.

f:id:kakku22:20190408214833j:plain

インストラクショナルデザイン

とは言え,まだまだ「教える技術」を磨くために,最近「インストラクショナルデザイン」を読んだ.本書を引用すると「インストラクション = 何らかの行動を引き起こすための仕掛け」と書いてあり,教育だけではなく,例えば道路標識や取扱説明書なども含まれる.よって「インストラクション」は,より幅広い意味で「教える」「伝える」ことを表現している言葉と言える.今回は「インストラクショナルデザイン」の書評をまとめる.

インストラクショナルデザイン―教師のためのルールブック

インストラクショナルデザイン―教師のためのルールブック

目次

本書は二部構成になっている.調べてもあまり目次が出てこなかったので,内容をザッと把握できるようにするためにも載せておく.

  • 前編 : インストラクションの鉄則
    • 鉄則 1 : 何を教えるのかをはっきりさせる
    • 鉄則 2 : 学びにコミットする
    • 鉄則 3 : 教える理由をはっきりさせる
    • 鉄則 4 : 成功の基準をはっきりさせる
    • 鉄則 5 : 標的行動を見せてやらせて確認させる
    • 鉄則 6 : 意味ある行動を引き出す
    • 鉄則 7 : 引き出した行動はすぐに強化する
    • 鉄則 8 : 正答を教える
    • 鉄則 9 : 誤答を教える
    • 鉄則 10 : スペックを明記する
    • 鉄則 11 : 学び手を知る
    • 鉄則 12 : 学び手は常に正しい
    • 鉄則 13 : 教え手を知る
    • 鉄則 14 : 学ばせて楽しませる
    • 鉄則 15 : 個人差に配慮する
    • 鉄則 16 : 「分かりました」で安心しない
    • 鉄則 17 : 改善に役立つ評価をする
  • 後編 : インストラクションのデザイン
    • ステップ 1 : 本当にインストラクションが必要ですか?
    • ステップ 2 : しない・できないの原因は? 問題の原因分析
    • ステップ 3 : 何を教えるか明らかにする 課題分析 (1)
    • ステップ 4 : 何を教えるか明らかにする 職務分析
    • ステップ 5 : 何を教えるか明らかにする 課題分析 (2)
    • ステップ 6 : 学び手のプロフィールを書く
    • ステップ 7 : どこからどこまで教えるのかを決める (1)
    • ステップ 8 : どこからどこまで教えるのかを決める (2)
    • ステップ 9 : どこからどこまで教えるのかを決める (3)
    • ステップ 10 : 教える内容を分析する RULEG Part 1
    • ステップ 11 : 説明のための材料を用意する RULEG Part 2
    • ステップ 12 : 練習のための教材を用意する RULEG Part 3
    • ステップ 13 : 改善に活かせる評価をする
    • ステップ 14 : 開発評価を行う
    • ステップ 15 : 性能評価を行う
    • ステップ 16 : 実地評価を行う

鉄則 12 : 学び手は常に正しい

「鉄則 12」は非常に考えさせられる内容だった.例えば,相手にうまく教えられないときに「相手のやる気がなかった」とか「教科書が悪い」など「個人攻撃の罠」に陥らないようにするべきという内容だった.言い換えると「他責を自責に」と表現することもできる.どんな状況でも「学び手は常に正しい」と考えることで,うまく教えるために自分自身の行動をどのように改善できるのかを考えようと思う.本書では「インストラクションを受ける側」のことを「学び手」と表現している.

鉄則 15 : 個人差に配慮する

学び手は誰しも知識と経験に差があるので,同じインストラクションを使っても,当然ながら理解度に差が出る可能性がある.特に10名以上など,クラスルーム型研修をする場合は,差が顕著になる.本書に書いてあり,重要だなと感じたことは「個人差に対処するため事前に対策を考えておく」という点で,理解はしていても,案外「個人差に対処する対策」を洗い出せていないことも多く,改めて考えてみたいと思う.

鉄則 16 : 「分かりました」で安心しない

「わかりましたか?」は確かによく言ってしまうけど,本書では「禁じ手のひとつ」と書かれていた.重要なのは「本当にわかったのかどうか」を確認する方法を事前に用意しておくことで,本書では,以下の4種類が確認基準として紹介されている.教えながら「言い換えられそう?」や「例外はありそう?」など,対話をしながら「本当にわかったのかどうか」を確認したいと思う.

  • その定義を言えるようになる
  • その定義を自分の言葉で言い換えられるようになる
  • その定義にあてはまる例と例外を区別できるようになる
  • その定義の例を自分で考えられるようになる

ステップ 2 : しない・できないの原因は? 問題の原因分析

インストラクションは,あくまで学び手の「知識や技能の未習得」がわからない原因になっている場合に必要かつ有効であり,それ以外の場合はインストラクションが有効な解決策にならない場合もあるという話だった.代表的なものは「動機づけ」で,その場合は「パフォーマンスマネジメント」が必要かつ有効であると書いてあった.本書では「インストラクションを与える側」のことを「教え手」と表現しているけど,教え手は適切に原因を判断し,場合によっては「パフォーマンスマネジメント」に時間を割く必要がある.詳しくは以下の本に載っている.

パフォーマンス・マネジメント―問題解決のための行動分析学

パフォーマンス・マネジメント―問題解決のための行動分析学

ステップ 15 : 性能評価を行う

インストラクションが,教えるべきことを教えられているかを確認することを「性能評価」と呼ぶ.例えば,インストラクションの後のテストで間違いが多くある場合,「個人攻撃の罠」に陥るのではなく,インストラクションに問題があることを疑う姿勢が重要になる.技術講師をしているときも,意図的に「2種類のインストラクション(説明資料)」を用意して,A/B テストのように比較をする場合がある.今まで実施していたことを「性能評価」と表現するんだなと気付くことができた.

まとめ

本書を読んだことにより,当然ながら新しく学べたこともあったし,日々の仕事(技術講師)をしながら既に意識できていることをうまく言語化してもらえた!と感じる部分もあった.技術講師など「情報を伝えること」を仕事にしている人はもちろんのこと,例えば「新人教育を任されたエンジニア」だったり,メンバーと 1 on 1 をする機会が多くありそうな「Engineering Manager」だったり,幅広くオススメできる.

なお,今月から「放送大学」に科目履修生として入学し,現在は「教育心理学概論」を履修している.今期はアカデミックな観点からも「教えること」を学んでいる.どうすればうまく教えられるのか.どうすればうまく教えられないのか.アウトプットの延長線として,僕は「教えること」を追求していくぞ!

インストラクショナルデザイン―教師のためのルールブック

インストラクショナルデザイン―教師のためのルールブック

TED Talk

少し文脈は変わるけど,教育改革などのテーマを学ぶなら以下に載せた Ken Robinson 氏の TED Talk を見ると良いと思う.内容もさることながらプレゼンテーション自体も非常に面白く勉強になる.

Sir Ken Robinson: Do schools kill creativity? | TED Talk

www.ted.com

Sir Ken Robinson: Bring on the learning revolution! | TED Talk

www.ted.com

関連本

「教育/教える/コーチング」に関連する本は今までも読んでいる.オススメ本として,以下に参考リンクとして載せておく!

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

関連記事

冒頭に載せた登壇資料は以下にある.

kakakakakku.hatenablog.com

Markdown Extensions / 検索機能などをサポートした静的サイトジェネレーター「VuePress」を試した

ポートフォリオ的な静的サイトを実装する機会があり,選択肢として GatsbyHugo も検討したけど,前から気になっていた「VuePress」を試すことにした.VuePress は Vue で実装された「Vue-Powered な」静的サイトジェネレーターで,Markdown で書くことができ,さらに設定次第では Service Worker を有効化することもできる.今回はドキュメントを読みながら VuePress に入門して,良さそう!と感じた機能を紹介する.ローカル環境で実装をして,ホスティングは Netlify や AWS Amplify Console を使えばお手軽にできるのも助かる.

vuepress.vuejs.org

github.com

インストール

まず,ドキュメントにある Getting Started を参考に進める.VuePress は今日時点で「v0.14.10」が最新バージョンとなり,並行して「v1.0.0-alpha.46」も開発が進められている.今回は v1 で使える新機能(後述する)を試したくて,「v1.0.0-alpha.46」をインストールすることにした.yarnnpm をサポートしているけど,ドキュメントには yarn 推奨と書いてある.

$ yarn add vuepress@next -D

vuepress.vuejs.org

次に自動生成された package.json に以下を追記する.

{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}

さっそく ./docs/README.md に1行追記し,yarn docs:dev を実行すると,ローカル環境が起動する.もう http://localhost:8080 にアクセスできるようになっている!タイトルと検索機能のみだけどー.

$ mkdir docs
$ echo '# Hello VuePress' > ./docs/README.md
$ yarn docs:dev 

f:id:kakku22:20190403181637p:plain

設定

次に VuePress の設定ファイル ./docs/.vuepress/config.js を作成する.

$ mkdir ./docs/.vuepress
$ vim ./docs/.vuepress/config.js

最初に以下の項目を設定した.

  • title ... title tag
  • description ... meta tag
  • themeConfig.nav ... ナビゲーションバー
module.exports = {
  title: 'Hello @kakakakakku',
  description: 'Hello @kakakakakku',
  themeConfig: {
    nav: [
      {text: 'Top', link: '/'},
      {text: 'VuePress', link: 'https://vuepress.vuejs.org/'},
      {text: 'kakakakakku blog', link: 'https://kakakakakku.hatenablog.com/'}
    ]
  }
}

themeConfig.nav にリンクを定義するとナビゲーションバーを生成できるのは便利だと思う.

f:id:kakku22:20190403181654p:plain

他にも Google Analytics を設定したり,Service Worker を有効化したり,設定できる項目が多くある.詳しくはドキュメントに載っている.

vuepress.vuejs.org

vuepress.vuejs.org

Markdown

よく使う一般的な Markdown 記法を試す.今回は「リスト記法」「テーブル記法」を書いてみた.特に違和感はなく,期待通り!

f:id:kakku22:20190403181721p:plain

Markdown Extensions

VuePress には「Markdown Extensions」という機能があり,Markdown を拡張した独自記法をサポートしている.VuePress を使うメリットの1個とも言える.今回は3種類を紹介する(キャプチャは最後に載せてある).

  • 目次
  • メッセージ
  • シンタックスハイライト

Markdown Extensions : 目次

以下のように [[toc]] と書くと,目次になる.デフォルトだと「h2 / h3」を対象にしているけど,設定ファイルに markdown.toc を定義すれば,カスタマイズもできる.

## 目次

[[toc]]

Markdown Extensions : メッセージ

以下のように ::: を使うと,メッセージを書くことができる.今までよく見てきた Bootstrap で言えば,Alerts とほぼ同じ.

## メッセージ

::: tip
This is a tip
:::

::: warning
This is a warning
:::

::: danger
This is a danger
:::

Markdown Extensions : シンタックスハイライト

以下のように書くと,コードにシンタックスハイライトを適用できる.さらに js{4} のように書くことにより,特定の行を強調することもできる.なお,今回の記事は Markdown で書いているため,期待通りにレンダリングできず,今回は意図的に *"``" にしている.正しくは "```" となる.

`` js{4}
export default {
  data () {
    return {
      msg: 'Highlighted!'
    }
  }
}
``

さらに VuePress v1 で使える新機能に「Line Numbers」があり,有効化するとコードに行数を表示できるようになる.今回は「v1.0.0-alpha.46」を使っているので,./docs/.vuepress/config.js に以下の設定を追加して,有効化した.

module.exports = {
  (中略)
  markdown: {
    lineNumbers: true
  },
  (中略)
}

最終的に「Markdown Extensions」3種類を使って,以下のようにサイトをリッチに表示できるようになった.

f:id:kakku22:20190403181744p:plain

検索機能

ナビゲーションバーに「検索機能」があり,特に設定をしなくても「インクリメンタルサーチ」をサポートしている.静的サイトジェネレータだからこそ,ビルド時にインデックスを作ることができるし,超便利機能だと思う.本格的に全文検索をするなら Elasticsearch や Algolia を検討することになるけど,簡易的な検索なら十分に使える.今回は docs 直下を以下の構成にしている.

$ tree .
.
├── README.md
├── topic_a.md
├── topic_b.md
└── topic_c.md

Toa で正常に検索できている.

f:id:kakku22:20190403182113p:plain

ドキュメントを読むと「title / h2 / h3」をインデックス対象にしていると書いてあった!

vuepress.vuejs.org

まとめ

  • 静的サイトを実装する機会があり「VuePress」を試した
  • 一般的な Markdown 以外に「Markdown Extensions」が多くあり,リッチにサイトを作れる
  • 細かな設定も .vuepress/config.js に定義できる
  • サクッと VuePress でサイトを実装し,ホスティングは Netlify や AWS Amplify Console を使えばお手軽にできる
  • 今回試した VuePress のサンプルコードは GitHub に置いてある

github.com

HashiCorp Learn の Consul コース「Getting Started with Kubernetes」を実施した

引き続き Consul を検証している.前回の記事では「HashiCorp Learn Platform」を活用して,Consul の「Getting Started」を実施したので,今回は「Getting Started with Kubernetes」を実施した.Consul に限らず,Kubernetes と Envoy を使ったマイクロサービスを試すことができる点もメリットだと思う.興味がある人は是非やってみると良いのでは!とは言え,Consul 要素は少ないようにも感じた.

kakakakakku.hatenablog.com

「HashiCorp Learn Platform」には,Consul 以外にも Vault / Terraform / Nomad のコンテンツがあるので,継続的に学んでいく.

learn.hashicorp.com

HashiCorp Learn 画面

画面は前回と同じで,基本的に動画を見ながら受講する.コマンドをコピーするときは下部にあるスクリプトを使う.

f:id:kakku22:20190330180924p:plain

Learn how to deploy a service mesh with HashiCorp Consul : Getting Started with Kubernetes

今回実施した「Getting Started with Kubernetes」は,前回実施した「Getting Started」と比較すると内容は軽く,計2ステップある.

  • 1 : Consul Installation to Minikube via Helm (8 min)
    • 実際に動画を観ると 9 min を超えているし,実際に動作確認をしながら進めるため,1時間ぐらいを想定しておくと良さそう
  • 2 : Deploy Consul with Kubernetes (8 min)

1 : Consul Installation to Minikube via Helm

learn.hashicorp.com

Prerequisites

Minikube と Helm をインストールしておく.今回は brew を使う.

$ brew cask install minikube
$ brew install kubernetes-cli
$ brew install kubernetes-helm

kubernetes.io

Task 1: Start Minikube and Install Consul with Helm

Step 1: Start Minikube

まず,Minikube を使って VirtualBox 上に Kubernetes を起動する.起動後に minikube dashboard を実行すると,Kubernetes Dashboard にアクセスできる.

$ minikube start --memory 8192
$ minikube dashboard

f:id:kakku22:20190330180954p:plain

Step 2: Install the Consul Helm Chart to the Cluster

今回は HashiCorp Training でも使われている「hashicorp/demo-consul-101」を使う.

github.com

さらに Consul Helm Chart を使う.Helm Charts の stable にもあるけど,どう違うんだろう.

github.com

最後に helm install を実行する.

$ git clone https://github.com/hashicorp/demo-consul-101.git
$ cd demo-consul-101/k8s
$ helm init
$ git clone https://github.com/hashicorp/consul-helm.git
$ helm install -f helm-consul-values.yaml --name hedgehog ./consul-helm

Task 2: Deploy a Consul-aware Application to the Cluster

Step 1: View the Consul Web UI

minikube service list を実行すると,起動しているサービスを確認できる.

$ minikube service list
|-------------|--------------------------------------|-----------------------------|
|  NAMESPACE  |                 NAME                 |             URL             |
|-------------|--------------------------------------|-----------------------------|
| default     | hedgehog-consul-connect-injector-svc | No node port                |
| default     | hedgehog-consul-dns                  | No node port                |
| default     | hedgehog-consul-server               | No node port                |
| default     | hedgehog-consul-ui                   | http://192.168.99.100:30367 |
| default     | kubernetes                           | No node port                |
| kube-system | kube-dns                             | No node port                |
| kube-system | kubernetes-dashboard                 | No node port                |
| kube-system | tiller-deploy                        | No node port                |
|-------------|--------------------------------------|-----------------------------|

サービス一覧から hedgehog-consul-ui を起動すると,Consul Web UI にアクセスできる.

$ minikube service hedgehog-consul-ui

f:id:kakku22:20190330181043p:plain

Step 2: Deploy Custom Applications

アプリケーションを2種類起動する.

  • Counting Service
  • Dashboard Service
$ kubectl create -f 04-yaml-connect-envoy
pod/counting created
pod/dashboard created
service/dashboard-service-load-balancer created

f:id:kakku22:20190330181103p:plain

Step 3: View the Web Application

起動した Dashboard Service に接続するために,ポートフォワードを設定する.既に http://localhost:9002 にアクセスできるようになっている.ちなみに Counting Service と Dashboard Service は Envoy を経由した構成になっている.

$ kubectl port-forward dashboard 9002:9002
Forwarding from 127.0.0.1:9002 -> 9002
Forwarding from [::1]:9002 -> 9002

f:id:kakku22:20190330184535p:plain

Task 3: Use Consul Connect

最後に Consul Intentions を設定する.まず,全サービスのアクセスを拒否する.

f:id:kakku22:20190330181145p:plain

すると,Dashboard Service から Counting Service にアクセスできず,Unreachable エラーになる.

f:id:kakku22:20190330181202p:plain

次に Dashboard Service から Counting Service にアクセスできるように許可すると,正常にアクセスできるようになった.

f:id:kakku22:20190330181226p:plain

2 : Deploy Consul with Kubernetes

Consul Helm Chart を使って Kubernetes 上に Consul をデプロイする.「Consul Installation to Minikube via Helm」と重複する箇所も多く,一通り実施はしたけど,割愛する.

learn.hashicorp.com

まとめ

  • HashiCorp プロダクトを学ぶなら「HashiCorp Learn Platform」を活用する
  • 今回は「Learn how to deploy a service mesh with HashiCorp Consul」「Getting Started with Kubernetes」を実施した
  • Minikube で起動した Kubernetes 上にマイクロサービスを起動して Consul Connect で制御できるようになった

参考記事

www.consul.io