あなたの知らない(?)
クラウドネイティブ的 の世界
NGINXと言えば、リバプロ(Reverse Proxy)やWebサーバとして使われている方、
あるいは名前を聞いたことがある方が多くいらっしゃると思います。
今回は敢えて、「API Gateway」「Service Mesh」に関連した使い方など、
あまり事例を見かけない、あなたの知らない(?)クラウドネイティブ的な
NGINX(関連ソフトウェア)の使い方を、デモを交えて紹介したいと思います。
あなたの知っているNGINXの新たな可能性をお伝えできれば幸いです。
2021/11/05(金) 14:20~15:00 Cloud Native Days Tokyo 2021 TrackD
はじめに
自己紹介を少々…
Masashi Furuya
株式会社カサレアル
クラウドネイティブ推進支援コンサルタント
様々なシステムの開発・テスト・運用に携わり、
某社情報システム部の部員としてもPMという
ポジションでシステムのライフサイクル全般に
渡って関わってきた後、カサレアルに参加。
カサレアルでは、クラウドネイティブ推進サービス
技術部のメンバーとして、クラウドネイティブ
/DevOps関連の教育トレーニングから
実際の案件でのコンサルタントとしてお客様の
クラウドネイティブ推進をサポート中。
カサレアル サービス紹介
Copyright 2021 CASAREAL,Inc. All rights reserved. 3
ラーニングサービス ビジネスソリューション
研修事業
・オープン研修
・新入社員研修
・カスタムメイド研修
・イベントセミナー
・内製化支援
プロフェッショナルサービス
・クラウドネイティブ推進支援サービス
・クラウドネイティブ道場
・業務改善支援サービス
受託開発・SES
・システム開発サービス
・開発支援サービス
カサレアルでは、大きく3つのサービスをご提供しています。
クラウドネイティブ
推進支援サービス
ラーニングサービス
カサレアル クラウドネイティブ推進支援サービス
Copyright 2021 CASAREAL,Inc. All rights reserved. 4
ビジネスソリューション
従来型の開発プロジェクト
(従来型の環境)
クラウドネイティブ開発プロジェクト
(クラウドネイティブ環境)
ツールを活用した
業務改善サービス
⇒テスト・ビルドプロセス自動化支援
各種自動化関連ツール
のトレーニング
(Selenium/Jenkinsなど)
クラウドネイティブ
推進支援サービス
⇒環境構築支援など
クラウド・ネイティブ道場
▌ 業務改善支援
・ 生産性向上
・ 品質改善
↓(DX)
▌ DevOps推進支援
↓
▌ クラウドネイティブ推進支援
クラウドネイティブ
推進支援サービス
クラウドネイティブ開発プロジェクトにおける課題
Copyright 2021 CASAREAL,Inc. All rights reserved. 5
• 開発環境上でのCIから先に進めない(運用につながらない)
• サーバありきの開発から、基盤そのものの仮想化へ発展しない
• 現行のシステムとの違いがイメージできない
• 基盤構築、アプリ開発など各々で課題を持っている
• サンプル通りにやってみても次のステップが分からない
• 1つ1つの領域・ツールに関する情報が膨大
• 膨大なツール群からの最適な選択、組み合わせが分からない
1 机上の域を脱し切れない
2 求められる知識・経験量の多さ
3 異なる理解・認識・リテラシー
基盤
構築
運用
アプリ
開発
セキュ
リティ
各々の経験値や理解で進めてしまいゴールが異なる
途中で進めなくなる
クラウドネイティブ開発プロジェクトを進める中で、多くの企業が直面する課題が3つあります。
そこで!
カサレアルが提案するアプローチをご紹介します
Copyright 2021 CASAREAL,Inc. All rights reserved. 6
基盤
構築
運用
アプリ
開発
セキュ
リティ
目指していくクラウドネイティブ
各々の役割の目標や課題を共有し、共通の環境で共通のツールを活用
理解・認識・リテラシーの共有
はじめにクラウドネイティブの全体像を把握します。
一つ一つの領域・ツールを学ぼうとして連携が見えなくなるといっ
たことを防ぎます。
各々の課題を共有し、共通の理解・認識・リテラシーを持つこと
で、筋道を立てて進むことができます。
ポイント1 先にゴールを見せる
ポイント2 共通の理解・認識・リテラシー
ポイント3 必要な要素をじっくり習得
横断的なメリットがあり、現場で活用していくための支援
実際の開発現場で必要となる要素をピックアップし、掘り下げて
いきます。
ポイント4 現場で活用するための支援
共通の理解・認識・リテラシーを持ったうえで、各々が抱える課
題の解決を支援します。
よくある取り組み課題
Copyright 2021 CASAREAL,Inc. All rights reserved. 7
• 各領域の取り組み課題を「個別」に実現/実践
• 各取り組み課題を組み合わせた共通基盤としての「全体」像を構築し、その運用を整備
クラウドネイティブ推進支援サービスでよくある取り組み課題として、以下が挙げられます。
「クラウドネイティブ技術」を活用した「Dev(Sec)Ops」の実現/実践
評価検証:「PoC環境」構築
Dev
Ops
・「Git」による構成管理
・「CI環境」構築
・「テスト自動化」
Sec
Ops
・「CWPP」コンテナ・セキュリティ
・「CSPM」ポスチャ管理
・「シークレット管理」
Ops
Ops
・「CD環境」構築
・運用状況「DashBoard」
・「RPA」運用作業自動化
Ops
Infrastructure as Code 「監視・ログ」基盤構築 ハイブリッドクラウド環境
本サービスは、上記のような課題解決を「計画」から「評価・改善」まで、お客様と一緒に考え、実行するサービスです。
計画・設計のフェーズ 構築・作業のフェーズ 評価・改善のフェーズ
まずは
あなたの知っている(?)
お分かりいただけるだろうか・・・
画面中央をよ~くご覧いただきたい
①リバースプロキシとしての
Copyright 2021 CASAREAL,Inc. All rights reserved. 9
②Webサーバとしての
Copyright 2021 CASAREAL,Inc. All rights reserved. 10
本題の
あなたの知らない(?)
ここからがいよいよ
デモの動きをよ~くご覧いただきたい
あなたの知らない(?)
其の一:
「WAF(Web Application Firewall)」としての
①「WAF(Web Application Firewall)」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 13
特定地域からのリクエスト遮断~鎖国?(国内からのみアクセス可能)
Region=バージニア北部
SSH接続
ターミナルからのCurlコマンドで、
バージニア北部からバージニア北部へのアクセス
Amazon Linux2上の
nginx
http接続
ブラウザからのページリクエストで、
日本からバージニア北部へのアクセス
日本国内の端末
T
①「WAF(Web Application Firewall)」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 14
特定地域からのリクエスト遮断~鎖国?(国内からのみアクセス可能)
:
geoip_country /usr/share/GeoIP.dat;
map $geoip_countory_code $allowed_country {
default yes;
#US no;
#JP no;
}
:
No Default JP US
① デフォルト yes - -
② 上記①のデフォルトから、
日本からのアクセス=No
yes no -
③ 上記②の状態からさらに
米国からのアクセス=No
yes no no
④ 改めて
日本からのアクセスのみYes
no yes -
/etc/nginx/nginx.conf
①「WAF(Web Application Firewall)」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 15
特定地域からのリクエスト遮断~鎖国?(国内からのみアクセス可能)
:
geoip_country /usr/share/GeoIP.dat;
map $geoip_countory_code $allowed_country {
default yes;
#US no;
#JP no;
}
:
No Default JP US
① デフォルト yes - -
② 上記①のデフォルトから、
日本からのアクセス=No
yes no -
③ 上記②の状態からさらに
米国からのアクセス=No
yes no no
④ 改めて
日本からのアクセスのみYes
no yes -
/etc/nginx/nginx.conf
Copyright 2021 CASAREAL,Inc. All rights reserved. 16
デモンストレーション
①「WAF(Web Application Firewall)」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 17
特定地域からのリクエスト遮断~鎖国?(国内からのみアクセス可能)
:
geoip_country /usr/share/GeoIP.dat;
map $geoip_countory_code $allowed_country {
default yes;
#US no;
JP no;
}
:
No Default JP US
① デフォルト yes - -
② 上記①のデフォルトから、
日本からのアクセス=No
yes no -
③ 上記②の状態からさらに
米国からのアクセス=No
yes no no
④ 改めて
日本からのアクセスのみYes
no yes -
/etc/nginx/nginx.conf
Copyright 2021 CASAREAL,Inc. All rights reserved. 18
デモンストレーション
①「WAF(Web Application Firewall)」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 19
特定地域からのリクエスト遮断~鎖国?(国内からのみアクセス可能)
:
geoip_country /usr/share/GeoIP.dat;
map $geoip_countory_code $allowed_country {
default yes;
US no;
JP no;
}
:
No Default JP US
① デフォルト yes - -
② 上記①のデフォルトから、
日本からのアクセス=No
yes no -
③ 上記②の状態からさらに
米国からのアクセス=No
yes no no
④ 改めて
日本からのアクセスのみYes
no yes -
/etc/nginx/nginx.conf
Copyright 2021 CASAREAL,Inc. All rights reserved. 20
デモンストレーション
①「WAF(Web Application Firewall)」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 21
特定地域からのリクエスト遮断~鎖国?(国内からのみアクセス可能)
:
geoip_country /usr/share/GeoIP.dat;
map $geoip_countory_code $allowed_country {
default no;
#US no;
JP yes;
}
:
No Default JP US
① デフォルト yes - -
② 上記①のデフォルトから、
日本からのアクセス=No
yes no -
③ 上記②の状態からさらに
米国からのアクセス=No
yes no no
④ 改めて
日本からのアクセスのみYes
no yes -
/etc/nginx/nginx.conf
Copyright 2021 CASAREAL,Inc. All rights reserved. 22
デモンストレーション
あなたの知らない(?)
其の二:
「API Gateway」としての
②「API Gateway」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 24
API Gateway
• APIを管理するためのリバースプロキシ
• クライアントは各サービスを知らなくとも結果を取得可能
「API Gateway」としてのNGINX
• リクエストURI
• HTTPリクエストメソッド
• 認証
• レート制限
②「API Gateway」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 25
リクエストURIによるAPIサーバー振り分け
:
location / {
if ($request_uri ~ "^/api/v1/product") {
set $upstream api_server1;
rewrite /api/v1/product /api/product last;
}
if ($request_uri ~ "^/api/v2/product") {
set $upstream api_server2;
rewrite /api/v2/product /api/product last;
}
}
/etc/nginx/nginx.conf
Copyright 2021 CASAREAL,Inc. All rights reserved. 26
デモンストレーション
②「API Gateway」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 27
HTTPリクエストメソッドによるAPIサーバー振り分け
:
location / {
if ($request_method = 'GET') {
set $upstream api_server1;
rewrite /product /api/product last;
}
if ($request_method = 'PUT') {
set $upstream api_server1;
rewrite /product /api/product last;
}
}
/etc/nginx/nginx.conf
Copyright 2021 CASAREAL,Inc. All rights reserved. 28
デモンストレーション
②「API Gateway」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 29
レート制限
limit_req_zone $remote_addr zone=req:1M
rate=1r/s;
server {
listen 80;
server_name $API_GATEWAY_PUBLIC_IP;
location /api/product {
limit_req zone=req burst=2 nodelay;
/etc/nginx/nginx.conf
Copyright 2021 CASAREAL,Inc. All rights reserved. 30
デモンストレーション
あなたの知らない(?)
其の三:
「Nginx Ingress Controller」としての
③「Nginx Ingress Controller」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 32
NGINX Ingress Controller
• Kubernetesのトラフィック管理を行うコントローラー
• NGINXの機能や、モジュールを使用可能
• NGINXの設定が使用可能
Hello NGINX
54.199.58.26:8081
54.199.58.26:8081
③「Nginx Ingress Controller」としての
Copyright 2021 CASAREAL,Inc. All rights reserved. 33
Helloアプリケーション
本デモで使用する2つのデモ環境上のアプリケーション
Goodbye NGINX
54.199.58.26:8082
54.199.58.26:8082
Goodbyeアプリケーション
この後、上記2つのアプリケーションをKubernetes上にデプロイしていく
Copyright 2021 CASAREAL,Inc. All rights reserved. 34
デモンストレーション
あなたの知らない(?)
其の四:
「Consul」と連携する
④「Consul」と連携する
Copyright 2021 CASAREAL,Inc. All rights reserved. 36
Hashicorp Consul
サービスメッシュ
ヘルスチェック
キーバリューストア
セキュアサービス間通信
マルチデータセンター
web.service.consul api.service.consul
④「Consul」と連携する
Copyright 2021 CASAREAL,Inc. All rights reserved. 37
①Consul+Consul Template & NGINX
②Consul & NGINX Plus
ConsulとConsul Templateでの設定ファイル
の動的書き換え
Consulを活用した、NGINX PlusのDNSサー
ビスディスカバリによる動的振り分け
Copyright 2021 CASAREAL,Inc. All rights reserved. 38
デモンストレーション
あなたの知らない(?)
其の一:
「WAF(Web Application Firewall)」として…
其の三:
「Nginx Ingress Controller」として…
其の二:
「API Gateway」として…
其の四:
「Consul」と連携する…
お分かりいただけただろうか・・・
創る、
学べる、
カサレアル。
お問い合わせは下記へお気軽にご連絡ください。
〒108-0073 東京都港区三田3-11-24
国際興業三田第2ビル(総合受付9F)
お問い合わせ先:プロフェッショナルサービス技術部
TEL:03-4405-7866
ありがとうございました。

Cndt2021 casareal