「クイックスタート」
osm-edge クイック スタート ガイド
このガイドでは、osm-edge をダウンロード、インストール、実行し、デモ アプリケーションを展開し、リンク暗号化、アクセス制御、トラフィック分割などの SMI 標準機能を 5 分未満で完了する方法を示します。 このデモは、x86 アーキテクチャで Ubuntu 21 を実行していて、k3s バージョン ‘V1.23.8 + K3S1’ を実行していることを前提としています。 バージョンとプラットフォームのサポートの詳細については、完全な Beginner’s Guide. を参照してください。
前提条件
Kubernetes クラスターを実行しています。 お持ちでない場合は、以下のスクリプトを使用して k3s をインストールできます。
export INSTALL_K3S_VERSION=v1.23.8+k3s1
curl -sfL https://get.k3s.io | sh -s - --disable traefik --write-kubeconfig-mode 644 --write-kubeconfig ~/.kube/config
osm-edge がサポートする Kubernetes の最小バージョンは v1.19.0 です
osm-edge CLI をダウンロードしてインストールする
system=$(uname -s | tr [:upper:] [:lower:])
arch=$(dpkg --print-architecture)
release=v1.1.2
curl -L https://github.com/flomesh-io/osm-edge/releases/download/${release}/osm-edge-${release}-${system}-${arch}.tar.gz | tar -vxzf -
./${system}-${arch}/osm version
cp ./${system}-${arch}/osm /usr/local/bin/
Kubernetes クラスタに osm-edge をインストールする
以下のコマンドは、Prometheus、Grafana、および Jaegerをインストールして有効にします。
export osm_namespace=osm-system
export osm_mesh_name=osm
osm install \
--mesh-name "$osm_mesh_name" \
--osm-namespace "$osm_namespace" \
--set=osm.enablePermissiveTrafficPolicy=true \
--set=osm.deployPrometheus=true \
--set=osm.deployGrafana=true \
--set=osm.deployJaeger=true \
--set=osm.tracing.enable=true
アプリケーションのデプロイ
このセクションでは、5 つの異なる Pod をデプロイし、ポリシーを適用してそれらの間のトラフィックを制御します。
- 「bookbuyer」は、「bookstore」にリクエストを送信する HTTP クライアントです。 このトラフィックは 許可されています。
- 「bookthief」は HTTP クライアントであり、「bookbuyer」と同様に「bookstore」に対して HTTP リクエストを行います。 このトラフィックはブロックする必要があります。
bookstore
は、HTTP リクエストに応答するサーバーです。 「bookwarehouse」サービスにリクエストを行うクライアントでもあります。 このトラフィックは 許可されています。bookwarehouse
はサーバーであり、bookstore
にのみ応答する必要があります。 「bookbuyer」と「bookthief」の両方をブロックする必要があります。mysql
は、bookwarehouse
によってのみ到達可能な MySQL データベースです。
以下のスクリプトを使用してインストールします。
kubectl create namespace bookstore
kubectl create namespace bookbuyer
kubectl create namespace bookthief
kubectl create namespace bookwarehouse
osm namespace add bookstore bookbuyer bookthief bookwarehouse
kubectl apply -f https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/release-v1.1/manifests/apps/bookbuyer.yaml
kubectl apply -f https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/release-v1.1/manifests/apps/bookthief.yaml
kubectl apply -f https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/release-v1.1/manifests/apps/bookstore.yaml
kubectl apply -f https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/release-v1.1/manifests/apps/bookwarehouse.yaml
kubectl apply -f https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/release-v1.1/manifests/apps/mysql.yaml
各サービスの GUI ポートを公開して、ブラウザーでデモ アプリケーションのこれらのポートにアクセスできるようにします。
git clone https://github.com/flomesh-io/osm-edge.git -b release-v1.1
cd osm-edge
cp .env.example .env
./scripts/port-forward-all.sh #可以忽略错误信息
ブラウザーで、次の URL を開きます。
_注: ホストからアクセスする必要がある場合は、「localhost」を仮想マシンの IP アドレスに置き換える必要があります。 または、ホストで「port-forward-all.sh」スクリプトを実行します。 _
- http://localhost:8080 - bookbuyer
- http://localhost:8083 - bookthief
- http://localhost:8084 - bookstore
アクセス制御
上記のコマンドで osm-edge をインストールすると、すべてのサービスがアクセス制御なし (寛容なトラフィック ポリシー モード) になるか、すべてのアクセスが許可されます。 アクセス制御がない場合の状況は、ブラウザのサービスごとの書籍数の増加を見るとわかります。
「bookbuyer」UIと「bookthief」UI のカウントは、それぞれ購入した本の数と盗まれた本の数に対応していますが、「bookstore-v1」では、これらは増加しているはずです。
- http://localhost:8080 - bookbuyer
- http://localhost:8083 - bookthief
「bookstore」UI での本の販売数も増加しているはずです。
- http://localhost:8084 - bookstore
以下は、permissive トラフィック ポリシー モードを無効にして「bookstore」サービスへのアクセスを拒否する方法を示しています。
kubectl patch meshconfig osm-mesh-config -n osm-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":false}}}' --type=merge
カウントが増加していないことがわかります。
以下のコマンドを実行して、「bookbuyer」 権限が 「bookstore」 にアクセスできるようにします。
kubectl apply -f https://raw.githubusercontent.com/flomesh-io/osm-edge-docs/main/manifests/access/traffic-access-v1.yaml
ここで「bookbuyer」と「bookstore」の UI に戻り、「bookthief」の UI のカウントが停止したままで、カウントが再び増加していることを確認します。
通常の購入は影響を受けませんが、アクセス制御により、「bookthief」が「bookstore」から本を盗むのを防ぐことに成功しました。
可観測性
指標
以下のコマンドを使用して、ネームスペース メトリックの生成とキャプチャを有効にします。そうしないと、Pod によって生成されたメトリックが収集されません。
osm metrics enable --namespace "bookstore,bookbuyer,bookthief,bookwarehouse"
ポート転送スクリプトを実行した後、ブラウザで URL http://localhost:3000
を開いて Grafan コンソールにアクセスします。 ダッシュボードのデフォルトのユーザー名とパスワードは「admin」、「admin」です。
osm-edge には、コントロール プレーンとデータ プレーンでメトリックを視覚化するためのダッシュボードがいくつか組み込まれています。 たとえば、次の図は、他の「サービス」にアクセスする「bookthief」サービスのポッド「http://localhost:3000」のメトリックを示しています。
次の図は、「デプロイ」の粒度で他の「サービス」にアクセスする「bookthief」のメトリクスを示しています。 前の図との違いは、「bookthief」に複数のレプリカがある場合、すべてのレプリカの集計データが次のように表示されることです。
osm-edge コンポーネントの次のメトリックと、メッシュ ベース情報がここに表示されます。
トレース
Jaeger のダッシュボードには、ブラウザーに「http://localhost:16686/search」と入力してアクセスできます。
ダッシュボードでは、サービス関連のトレース情報を検索できます: !
サービス トポロジ図を表示します。
ロギング
osm-edge コントロール プレーンは、サービス メッシュ管理のために診断ログを標準出力に出力します。ログ情報の出力は、ログのレベルを調整することで制御できます。 標準出力に出力されたログは、ログ収集ツールで集計して保存できます。
サービス メッシュのアンインストール
osm-edge のクイック エクスペリエンスを完了した後、osm-edge に関連付けられているすべてのリソースをアンインストールするには、これらのサンプル アプリケーションと関連する SMI リソースを削除し、osm-edge コントロール プレーンとクラスター全体の osm-edge リソースをアンインストールする必要があります。
サンプル アプリケーションを削除するには。
kubectl delete ns bookbuyer bookthief bookstore bookwarehouse
コントロール プレーンをアンインストールします。
osm uninstall mesh
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.