アプリケーションの外部公開・必要な設定のデプロイ
1. NGINX Ingress Controllerの設定
外部からアプリケーションに接続するため、NGINX Ingress Controllerを設定します。 また、今回はNIC、NAP WAFのログをGrafana Lokiで管理するため、すでに設定したLokiの設定に合わせたフォーマットでログを出力するよう設定します。
cd ~/f5j-nginx-observability-lab/prep/nic
# for access observability tools
kubectl apply -f monitor-jaeger-vs.yaml
kubectl apply -f monitor-loki-grafana-vs.yaml
kubectl apply -f monitor-prometheus-vs.yaml
# for changing NIC custom log format
kubectl apply -f nic1-custom_log_format.yaml
kubectl apply -f nic2-custom_log_format.yaml
デプロイした結果を確認します
kubectl get vs -A
1 2 3 4 | NAMESPACE NAME STATE HOST IP PORTS AGE monitor loki-grafana-vs Valid grafana.example.com 26s monitor jaeger-vs Valid jaeger.example.com 32s monitor prometheus-vs Valid prometheus.example.com 40s |
踏み台ホストのブラウザ(Chrome)よりそれぞれのサービスのURLへアクセスいただくことにより、画面をご覧頂くことが可能です。
Prometheus: http://prometheus.example.com:8080/
Jaeger: http://jaeger.example.com:8080/
Grafana: http://grafana.example.com:8080/
2. Grafana Datasouce の追加
踏み台サーバのデスクトップのショートカットから Chrome
を実行し、以下のURLにアクセスします
ログイン画面が表示されます。
Grafanaにログインするためにパスワードの情報を取得します。
kubectl get secret --namespace monitor loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
1 | jFQSgKatKfJQ816K81qkPYIB2v6FvYjyAPE5mnpt |
ユーザ名 admin
、そして確認したパスワードを入力しログインしてください
画面左メニューの Configuration (歯車のマーク)
> DataSource
を開き、 Add data source
をクリックしてください
DataSourceにPrometheusの追加をします
URL に http://prometheus-server と入力し、 Save & test
をクリックしてください
DataSourceにJaegerの追加をします
URL に http://jaeger-query:16686 と入力し、
Filter by Trace ID
、 Filter by Span ID
、 Enable Node Graph
を有効にしてください。
その後、 Save & test
をクリックしてください。
Lokiはデプロイ時点で設定されています。以下のような結果になることを確認してください
3. サンプルアプリケーションのデプロイ
サンプルアプリケーションに必要となる、NGINX Ingress Controllerを設定します。
# for access bookinfo application with NAP WAF / custom log format
kubectl apply -f simple-ap.yaml -n staging
kubectl apply -f ap-logconf.yaml -n staging
kubectl apply -f waf.yaml -n staging
kubectl apply -f staging-bookinfo-nap-vs.yaml
デプロイした結果を確認します
kubectl get vs -A
1 2 3 4 5 | NAMESPACE NAME STATE HOST IP PORTS AGE monitor loki-grafana-vs Valid grafana.example.com 26s monitor jaeger-vs Valid jaeger.example.com 32s monitor prometheus-vs Valid prometheus.example.com 40s staging bookinfo-vs Valid bookinfo.example.com 96s |
kubectl get aplogconf,appolicy,policy -n staging
1 2 3 4 5 6 7 8 | NAME AGE aplogconf.appprotect.f5.com/logconf 83s NAME AGE appolicy.appprotect.f5.com/simple-ap 87s NAME STATE AGE policy.k8s.nginx.org/waf-policy Valid 80s |
NSM Labで利用した bookinfo のアプリケーションをデプロイします。 詳細は NSM サンプルアプリケーションのデプロイ を参照してください
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.13/samples/bookinfo/platform/kube/bookinfo.yaml -n staging
kubectl get pod -n staging
1 2 3 4 5 6 7 | NAME READY STATUS RESTARTS AGE details-v1-7f4669bdd9-87hp5 2/2 Running 0 2m21s productpage-v1-5586c4d4ff-mjsr9 2/2 Running 0 2m20s ratings-v1-6cf6bc7c85-zzbsc 2/2 Running 0 2m21s reviews-v1-7598cc9867-djmm8 2/2 Running 0 2m21s reviews-v2-6bdd859457-gt6wb 2/2 Running 0 2m21s reviews-v3-6c98f9d7d7-f8jk8 2/2 Running 0 2m21s |