昨日の続き:
昨日はデフォルトプロファイルでインストールしたので、今日はちょっとカスタマイズしてみたい。
## カスタマイズの方法
これかな:
https://istio.io/docs/setup/install/istioctl/#customizing-the-configuration
### プロファイル
プロファイルはistioctl
に組み込まれてるんだけど、それと同じものがインストーラーのinstall/kubernetes/operator/profiles
にあるっぽい。それを見たらどんな設定を変更したらいいか分かりそう:
❯ ls -1 install/kubernetes/operator/profiles default.yaml demo.yaml empty.yaml minimal.yaml remote.yaml separate.yaml
Github上はこれかな https://github.com/istio/istio/tree/1.5.0/operator/data/profiles
### 設定の変更方法
で、その設定を次のようにして--set
オプションで変更できる:
❯ istioctl manifest apply --set components.telemetry.enabled=false
毎回オプションで指定するのも面倒だなぁと思ってたらやっぱりYAMLで設定できるよねぇ。インストーラーのsamples/operator
にサンプルがある 。
❯ ls -1 samples/operator default-install.yaml pilot-advanced-override.yaml pilot-k8s.yaml sds-policy-off.yaml sds.yaml trafficManagement-namespace.yaml values-global.yaml values-pilot.yaml
Github上はこれだな https://github.com/istio/istio/blob/1.5.0/operator/samples
んで、作った設定ファイルをこんな風にして指定できる:
❯ istioctl manifest apply -f bufferings.yaml
マニフェストの適用だけじゃなくて生成もできるのか。それもいいな:
❯ istioctl manifest generate -f bufferings.yaml
なるほど。じゃ、やってみるか。
## 設定ファイルの作成
設定で触りたい主な部分は:
- kialiを有効にしてみようかな
istio-ingressgateway
をLoadBalancer
じゃなくてNodePort
にしてみる- Auto mTLSがデフォルトONになったみたいだけど、なんとなくOFFにしてみる
outboundTrafficPolicy
はREGISTRY_ONLY
にしてみる
それくらいかな。とか考えながら、ごにょごにょごにょごにょやってみて最終的に bufferings.yaml
をこんな感じにしてみた:
apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: # defaultをベースに profile: default addonComponents: # kialiを有効化する kiali: enabled: true values: global: # Auto mTLSをオフに mtls: auto: false # 外部へのアクセスは制限する outboundTrafficPolicy: mode: REGISTRY_ONLY gateways: # NodePortにする istio-ingressgateway: type: NodePort ports: - port: 15020 targetPort: 15020 name: status-port - port: 80 targetPort: 80 nodePort: 31380 name: http2 - port: 443 name: https nodePort: 31390 kiali: # テストなのでログインなしにする dashboard: auth: strategy: anonymous
なるほど。Helmよりこっちの方がインストールの設定を管理しやすいな。
## インストール
ということでapply:
❯ istioctl manifest apply -f bufferings.yaml proto: tag has too few fields: "-" - Applying manifest for component Base... ✔ Finished applying manifest for component Base. - Applying manifest for component Pilot... ✔ Finished applying manifest for component Pilot. - Applying manifest for component IngressGateways... - Applying manifest for component AddonComponents... ✔ Finished applying manifest for component AddonComponents. ✔ Finished applying manifest for component IngressGateways. ✔ Installation complete
んで、Bookinfoを昨日と同じようにインストールしてみた。
# istio-proxyの自動設定を有効にして ❯ kubectl label namespace default istio-injection=enabled namespace/default labeled # アプリケーション群をデプロイ ❯ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml service/details created serviceaccount/bookinfo-details created ... # ゲートウェイをデプロイ ❯ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
簡単にチェックしてみよう。
### Kiali
お。デプロイされてる。ポートフォワードしてチェック:
❯ kubectl port-forward -n istio-system svc/kiali 8000:20001
### NodePort
ちゃんとLoadBalancerじゃなくてNodePortサービスになってる:
❯ kubectl get svc -n istio-system istio-ingressgateway NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway NodePort 10.0.5.146 <none> 15020:31147/TCP,80:31380/TCP,443:31390/TCP 2m49s
ポートも指定したものになってる。
### Auto mTLS
は、Kialiで確認したらOFFになってる:
ちなみにONだとこんな感じ。鍵マークがついてる:
### outboundTrafficPolicy
も有効になってるみたいだね:
❯ k exec -ti deployment/ratings-v1 bash Defaulting container name to ratings. Use 'kubectl describe pod/ratings-v1-f745cf57b-fhd7v -n default' to see all of the containers in this pod. root@ratings-v1-f745cf57b-fhd7v:/opt/microservices# curl -I google.com HTTP/1.1 502 Bad Gateway date: Mon, 09 Mar 2020 13:34:29 GMT server: envoy transfer-encoding: chunked
面白かった。
次は
GKEなので、PrometheusじゃなくてStackdriverにログを送りたいな。