2021年7月27日火曜日

k8s for monitoring(prometheus/Grafana/istio/kiali/jaeger)

参照
https://istio.io/latest/docs/setup/getting-started/#download


k8sでモニタリングをしたくなったのでprometheus/Grafana/istio/kiali/jaegerを入れてみる。
 


超簡単な概要について


Kiali(可視ツール)

Istioのサービスメッシュが構築されているマイクロサービスで何が起こっているかを可視化するツール


Istio:  

トラフィックルーティングなどのトラフィック制御

認証やアクセス制限、暗号化などのセキュリティ

通信内容やトラフィック状況などの監視


Jaeger :

分散サービス間のトランザクションをトレースするためのオープンソース・ソフトウェア


Grafana:
prometheusの内容を可視化するツール

prometheus:
様々なメトリクスを収集


手順

1)istioctlコマンド(リソース)のダウンロード

curl -L https://istio.io/downloadIstio | sh -


2)以下のディレクトリに移動する

cd istio-1.10.3


3)パスを通す

export PATH=$PWD/bin:$PATH


4)istioのインストール

お試し利用程度なら、minialでも良いかもしれない。

istioctl install --set profile=demo -y

又は、

istioctl install --set profile=minimal -y








5)対象のnamespaceでアプリケーションをデプロイするときにEnvoyサイドカープロキシを

自動的に挿入するようにIstioに指示します。

kubectl label namespace default istio-injection=enabled



6)以下から各種モニタリング類のマニフェストを入手

https://github.com/istio/istio/tree/release-1.10/samples/addons


7)入手後、作成を行う。

kubectl apply -f samples/addons



■Wordpress導入

1)Helm経由でMySQLを入手

helm install mysql-01 stable/mysql


2)作成済みのwordpressを作成する。

kubectl create -f wordpress-deployment.yaml




以下の手順で簡易的にダッシュボードから確認


istioctl dashboard kiali

(wodpressとMySQL間の通信状況)












istioctl dashboard jaeger

(wodpressとMySQL間のトレース)














istioctl dashboard garafana



2021年7月25日日曜日

k8s (名前解決)

 以下の作成したサービスで、wordpresspodにログインして
対象のPODに対してnslookupを実施してみる。




以下、nslookup コマンドで上記のサービス名で確認できるか実施してみる


結果:

mysql-01,wordpressのサービス名で名前解決できていることが把握できる。






2021年7月24日土曜日

DBeaver (Public Key Retrieval is not allowedが表示されて、Test Connectionできない件)

 テスト環境でMySQL自体でSSL対策してない場合、以下の手順を行う可能性がある。



■以下、手順を行う

①SSLタブに移動

②Use SSLをチェック

③Verify server certificationのチェックを外す



2021年7月20日火曜日

namespace間の通信(検証)


以下のnamespace間の通信を行ってみる。








■namespace: monitoring

pod: nginx1(10.1.0.100)








■namespace: default

pod: nginx2(10.1.0.98)

疎通確認してみる。

nginx1 -> nginx2


疎通できていることを確認








2021年7月19日月曜日

kialiのインストール

k8sでトレーシングをみたいので、kialiの導入を行ってみる。

参照:
https://kiali.io/documentation/v1.37/faq/#how-do-i-access-kiai



1)helm チャート追加

helm add https://kiali.org/helm-charts


2)namespaceを作成

kubectl create namespace kiali-operator

kubectl create namespace istio-system


3)helmによるインストールを実施

helm upgrade --install \

    --set cr.create=true \

    --set cr.namespace=istio-system \

    --namespace kiali-operator \

    --repo https://kiali.org/helm-charts \

    kiali-operator \

    kiali-operator


4)kialiにnodeportを割り当てる

kubectl patch svc -n istio-system kiali  -p '{"spec": {"type": "NodePort"}}'



以下、アクセスしてみる



2021年7月18日日曜日

argoのインストール

参照:

https://argoproj.github.io/argo-cd/getting_started/



1)helmのチャートを追加する

helm repo add argo https://argoproj.github.io/argo-helm

 

2)argoのインストールを行う

helm install argo argo/argo-cd


3)パスワードの作成を行う。

kubectl get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d


以下、実行後にパスワードが表示される。




4)ログインを行う

Username :admin

Password  :上記実行時に表示されるパスワードを入力



helm rollback

間違えて、古いバージョンのprometheusにしたので
実施前のバージョン(9.3.2)に戻すことにする。


1)以下のコマンドを実施する。

helm rollback monitoring 1 -n monitoring

例:helm rollback “Helmのリリース名” “リビジョン番号” -n “ネームスペース





2)戻ったことが確認できる。



prometheusOperator for k8s(docker desktop)


1)namespaceを作成

kubectl create namespace monitoring


2)helmにて、prometheus-operatorのインストールを行う

helm install monitoring stable/prometheus-operator -n monitoring2


3)対象のnamespaceに導入されていることを確認

helm list -n monitoring


4)garafana, prometheusのpodに対して、nodeportの割り当てを行う。

kubectl patch svc -n namespace pod -p '{"spec": {"type": "NodePort"}}'

2021年7月17日土曜日

ghコマンド for Raspberry pi

 参照:
https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-apt


手順:

curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null

sudo apt update

sudo apt install gh


1)以下、実行する

gh auth login


2)GitHub.comを選択





3)HTTPSを選択




4)Yを選択






5)Login with a web browserを選択




6)enterを押す





7)ブラウザが開けなかったので、以下のリンク先を直接選択する





8)githubに推移したら、認証コードが表示されるので、以下の画面にペーストする




























9)あとは、画面にしたがって行くことで認証完了。




grafana loki (for raspberry pi)

 lokiのソースコード:
https://github.com/grafana/loki/tree/main/production/helm/loki-stack


特徴:

promtailがApplicationの標準出力からログを収集して、ラベルを付与してLokiに対してログを転送

GrafanaLokiからログを取り出して可視化する。



1)helmチャートを追加

helm repo add loki https://grafana.github.io/loki/charts


2)チャートをアップデート

helm repo update


3)helmを使ったインストールを行う。

helm upgrade --install loki loki/loki-stack —namespace monitoring


4)grafanaの管理画面でadd data source > Lokiを選択する





















5)対象のURLhttp://loki:3100/を追加する






















6)Exploer画面でログの表示を行ってみる

①Exploer:Lokiを選択

②Log labels:対象のログを指定

③Run Queryを実行する。















7)ダッシュボードを作成(import)する

ダッシュボードID: 12019




















2021年7月15日木曜日

Gremlin(検証) シャットダウン編

 課題:
nginxのpodをシャットダウンさせてみる。


1)Attacksを選択 > 対象のnginxpodを選択



















2)Shutdownを選択する。
















3)Run the attackを実施























以下に示すように、nginxが落ちていることがわかる。






実施後の結果が表示されていることが把握できる。



EFS(Dockerfile)の記載について注意

  Dockerfileにefsのマウントパス宛に、ファイルコピーを行うと ECSのサービス作成時に、コンテナのデプロイ失敗に(container run time error)になるので 別経由で、EFSにファイルをコピーした方が良い!! <Dockerfile> ...