Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GCPUG Tokyo Istio 1.5 Day Anthos Service Mesh

jukuwa
March 12, 2020

GCPUG Tokyo Istio 1.5 Day Anthos Service Mesh

2020/03/12 に開催された GCPUG Tokyo Istio 1.5 Day の 「Anthos Service Mesh」というタイトルで発表したプレゼンテーション資料(一部修正済み.)

jukuwa

March 12, 2020
Tweet

More Decks by jukuwa

Other Decks in Technology

Transcript

  1. GCPUG Tokyo Istio 1.5 Day
    Anthos Service Mesh
    Junya Kuwayama

    View Slide

  2. アジェンダ.
    2
     今日お話するアジェンダは以下の通りです。
    1. 全体的なお話.
    a. サービス全体像.
    b. ASM のインストール / 構成.
    2. 使える機能 / 使えない機能のお話.
    a. Traffic Management
    b. Security
    c. Policy
    d. Observability
    3. まとめ.

    View Slide

  3. 本発表の趣旨
    3
     NTT Communications / NTT 国際通信では、現時点では、Anthos Service
    Mesh および、Istio の商用での利用はございません。
    あくまで初心者の一人として、一緒に公式ドキュメントからわかることを読み解
    いていければとは思います。
    また、現時点では Istio のバージョンは 1.5 ではございません。
    最後に、日々プロダクトは進化しているように見えます。本資料が最新版である
    保証はございませんので、基本的には最新情報を常に取得するようお願いいたし
    ます。

    View Slide

  4. アジェンダ.
    4
     今日お話するアジェンダは以下の通りです。
    1. 全体的なお話.
    a. サービス全体像.
    b. ASM のインストール / 構成.
    2. 使える機能 / 使えない機能のお話.
    a. Traffic Management
    b. Security
    c. Policy
    d. Observability
    3. まとめ.

    View Slide

  5. Anthos の全体像
    5
     Technical Overview から抜粋. Anthos のコンポーネントの紹介があります。
    緑枠: Anthos プロダクト 赤枠: Anthos Service Mesh 黄枠: 関連コンポーネント

    View Slide

  6. 改めて... Istio の全体像
    6
     Istio は、大きく以下に分かれます。
    ● データプレーン
    ● コントロールプレーン
    このうち、GCP / Anthos
    では何がどう提供されるの
    でしょうか?

    View Slide

  7. GCP の Istio に関するサービスの一覧
    7
     GCP 全体で見ると Istio に関連しそうなサービスが多く見うけられます。 
    わかりにくい(と私は感じた)ので、以下に列挙してみます。
    ASM Certificate Authority
    ASM (Distribution) ASM Dashboard
    Traffic Director
    Istio on GKE Cloud Run for Anthos
    Anthos Service Mesh

    View Slide

  8. Traffic Director
    ASM の中での "managed components"
    8
    Anthos Service Mesh has a suite of additional features and tools that help
    you observe and manage secure, reliable services in a unified way.
    と、Managed components に記載があり、いくつかの Istio でも提供される機能
    が、ASM のプロダクトとして提供されることが示唆されています。
    ASM Dashboard
    Mesh CA
    Cloud Monitoring
    ASM Distibution
    コントロール
    プレーン
    データ
    プレーン
    現時点では提供なし

    View Slide

  9. Pod
    Side car proxy
    Traffic Director
    9
     Traffic Director は、Pilot 相当のトラフィックコントロール機能を提供し、
    現時点では、Istio 互換のAPIは提供されておらず、GCP のAPI のみをサポートし
    ています。
    Traffic Director GCP APIs
    VM
    grpc/
    443 Side car proxy
    xDS API 互換な
    sidecar proxy
    trafficdirector.googleapis.com
    Data Plane
    Control Plane
    LoadBalancer etc.
    Configuration
    via Cloud SDK etc.

    View Slide

  10. Istio on GKE vs Anthos Service Mesh
    10
     Istio on GCP と Anthos Service Mesh の概要を下記にまとめます。
    ポイント Istio on GKE Anthos Service Mesh
    ライセンス. Anthos ライセンスは不要. Anthos ライセンスが必要
    マネージド. インストール以外
    は提供されない.
    インストールは自身で行うが、
    マネージドで提供.
    インストール. クラスター作成時に指定可能. istioctl manifest apply で導入可能
    -> anthoscli
    ワークロード. Worker Node に存在 Worker Node に存在 +
    一部コントロールプレーンが
    Managed Components として提供
    メトリクス. すでに定義あり. 現時点で定義なし.

    View Slide

  11. 補足: Istio on GKE のインストール方法
    11
     Istio on GKE は現時点で、GKE のクラスタ作成の1つのオプションとして統合
    されています。※一方で、ASMのインストールは統合されていないので注意が必
    要です。

    View Slide

  12. ここまでのまとめ.
    12
     ここまで、見てきてわかるように、GCP で サービスメッシュを利用するには、
    1. 分類としては、
    a. マネージドサービス & ターンキーソリューション( Istio on GCP )
    i. マネージドサービスの中で、
    1. Managed Components として API 経由などで提供される
    -> Mesh CA, Service Mesh Dashboard
    Traffic Director は ASM とは現時点で中間なプロダクト[1]
    2. Istio の インターフェースをいい感じに提供 してくれる ASM
    -> Anthos Service Mesh Distributionとして、Istio のメイン機
    能を GKE / Anthos GKE 上のリソースとして提供.
    [1] 一部 ASM 側の情報として見えるので、恐らく今後 ASM の一部になる可能性
      が高いと言って良いはずです。

    View Slide

  13. アジェンダ.
    13
     今日お話するアジェンダは以下の通りです。
    1. 全体的なお話.
    a. サービス全体像.
    b. ASM のインストール / 構成.
    2. 使える機能 / 使えない機能のお話.
    a. Traffic Management
    b. Security
    c. Policy
    d. Observability
    3. まとめ.

    View Slide

  14. インストール方法.
    14
     インストール方法は、ここ数週間で変化が進んでいます.
    On-Prem:
    clusterrolebindings を作成 -> ファイルをダウンロード & 展開 -> istio-system
    namespace を作成 -> Citadel 向けの root 証明書を作成 -> istioctl apply でファ
    イルを指定して作成.
    ASM on GKE with istioctl:
    上記と同じ.
    ASM on GKE with anthoscli:
    kpt install & config -> anthoscli apply でインストール.

    View Slide

  15. インストール要件.
    15
     インストール要件は以下の通りです.
    ● 少なくとも 4 つのノード
    ● n1-standard-4 より大きな machine-type (4 vCPU 以上)
    ● バージョンは:
    GKE:
    1.13.11-gke.14+
    1.14.8-gke.18+
    1.15.4-gke.15+
    GKE on-prem:
    GKE on-prem version 1.2.0-gke.6 and later, which is included in Anthos 1.2.

    View Slide

  16. 補足: インストール時のキャプチャ.
    16
     インストールに要した時間は、約 13 分でした.
    $ anthoscli apply -f asm
    I0307 23:46:37.971228 610 main.go:155] reconcile cnrm.cloud.google.com/CloudService stackdriver
    I0307 23:46:41.056439 610 main.go:155] reconcile cnrm.cloud.google.com/CloudService compute
    I0307 23:46:42.902143 610 main.go:155] reconcile cnrm.cloud.google.com/CloudService gke
    I0307 23:46:44.542699 610 main.go:155] reconcile cnrm.cloud.google.com/CloudService iamcredentials
    I0307 23:46:46.267551 610 main.go:155] reconcile cnrm.cloud.google.com/CloudService meshca
    I0307 23:46:48.001720 610 main.go:155] reconcile cnrm.cloud.google.com/CloudService meshtelemetry
    I0307 23:46:50.033436 610 main.go:155] reconcile cnrm.cloud.google.com/CloudService meshconfig
    I0307 23:46:51.778324 610 main.go:155] reconcile cnrm.cloud.google.com/CloudService anthos
    I0307 23:46:53.421859 610 main.go:155] reconcile container.cnrm.cloud.google.com/ContainerCluster
    asm-test-cluster
    W0307 23:46:54.964328 610 cluster.go:506] cluster master version is not set for cluster
    projects/digicom-low-1045-23567090/locations/us-central1-c/clusters/asm-test-cluster
    I0307 23:46:54.964394 610 cluster.go:531] UpdateCluster {
    projects/digicom-low-1045-23567090/locations/us-central1-c/clusters/asm-test-cluster 0xc000c22120 []
    []}
    I0307 23:46:54.964903 610 operation.go:48] running operation:
    ====== snip ======

    View Slide

  17. ASMでの component in GKE
    17
     ASM のインストールが完了すると以下のような service / pod が作成されます。
    $ k get -n istio-system pods
    NAME READY STATUS RESTARTS AGE
    istio-galley-7cbb96dccf-5xghv 2/2 Running 0 10m
    istio-ingressgateway-54bc8455d-qfnzv 2/2 Running 0 10m
    istio-nodeagent-6f5k9 1/1 Running 0 10m
    istio-nodeagent-6pvwp 1/1 Running 0 10m
    istio-nodeagent-bvzwh 1/1 Running 0 10m
    istio-pilot-7787678df8-t8jbs 2/2 Running 0 10m
    istio-sidecar-injector-54987cbc5-6vt9w 0/1 ContainerCreating 0 10m
    promsd-54c7f896fc-d8t6d 2/2 Running 1 10m
    DaemonSet として
    各ノードに配置
    $ istioctl version
    client version: 1.5.0
    galley version: 1.4.6-asm.0
    ingressgateway version: 1.4.6-asm.0
    nodeagent version:
    nodeagent version:
    nodeagent version:
    nodeagent version:
    nodeagent version:
    pilot version: 1.4.6-asm.0
    data plane version: 1.4.6-asm.0 (1 proxies)
    prometheus
    カスタマイズされている
    可能性が高く version は見えない

    View Slide

  18. 参考: Anthos GKE(On-Prem) の構成.
    18
     見てきたように、現時点で、 Cloud 側で動作する Managed Components と
    連携できるアーキテクチャが採用されていないようです。
    $ kubectl get -n istio-system po
    NAME READY STATUS RESTARTS AGE
    istio-citadel-6f78467b84-dj5g8 1/1 Running 0 9d
    istio-galley-65748bdd96-xwltp 2/2 Running 0 9d
    istio-ingressgateway-c7fb67fbb-s97ml 2/2 Running 0 9d
    istio-pilot-5dc7bc579b-n9m27 2/2 Running 0 9d
    istio-sidecar-injector-84948b45cb-6ksd8 1/1 Running 0 9d
    promsd-645776cfbf-6rz7h 2/2 Running 1 9d
    $ kubectl get svc -n istio-system
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    istio-citadel ClusterIP 172.16.65.106 8060/TCP,15014/TCP 36d
    istio-galley ClusterIP 172.16.66.4 443/TCP,15014/TCP.. 36d
    istio-ingressgateway LoadBalancer 172.16.67.53 192.168.30.60 15020:31422/TCP.. 36d
    istio-pilot ClusterIP 172.16.67.149 15010/TCP.. 36d
    istio-sidecar-injector ClusterIP 172.16.65.182 443/TCP 36d
    promsd ClusterIP 172.16.65.115 9090/TCP 36d
    Istio の コンポーネント
    prometheus
    ingress gateway は、LoadBalancer
    からアクセス可能
    Citadel が存在!

    View Slide

  19. usernamespace
    usernamespace
    参考: Architecture: Ingress & ASM
    19
    Namespace: istio-system
    Deployment
    Service
    F5 Big-IP(Load Balancer)
    ingress
    gateway
    pilot
    citadel
    Galley
    sidecar
    injector
    promsd
    Namespace: gke-system
    Deployment
    Service
    ingress
    gateway
    pilot
    ingress
    Type: LB
    VIP VIP
    ingress
    Type: LB
    Client
    App
    App
    App
    Service
    App
    Service
     Anthos GKE では、デフォルトの Ingress Controller とは独立して、ASM の
    Istio 各コンポーネントが存在するようになります。(Namespace も別) 設定する
    リソースとしては、Ingress or Gateway + Virtual Service になります。

    View Slide

  20. ASMでの component
    20
     ASM のインストールが完了すると以下のような service / pod が作成されます。
    表にまとめると以下のようになります。
    Name Access Type Port
    istio-citadel ClusterIP 8060/TCP,15014/TCP
    istio-galley ClusterIP 443/TCP,15014/TCP,9901/TCP,
    15019/TCP
    istio-ingressgateway LoadBalancer 15020:31422/TCP,
    80:31441/TCP,443:32106/TCP,
    15029:30753/TCP,
    15030:32676/TCP,
    15031:31599/TCP,
    15032:31939/TCP,
    15443:30310/TCP
    istio-pilot ClusterIP 15010/TCP,15011/TCP,
    8080/TCP,
    15014/TCP
    istio-sidecar-injector ClusterIP 443/TCP
    promsd ClusterIP 9090/TCP

    View Slide

  21. 補足. Promsd とは??
    21
     Istio on GKE のリリースを参考にすると、内部通信のメトリクスの収集のため
    に、 promsd という名前で混同を防ぐ目的で利用されているようです。
    ( Prometheus + Stackdriver ?? と思われるが真相は不明. )
    (筆者拙訳.) Istio on GKE の 内部の prometheus (内部のメトリクス用途)は、混乱を
    避けるため、promsd に改名されます。

    View Slide

  22. 参考: 利用可能なリソース一覧
    22
     利用可能な Istio のリソース一覧は以下の通りになっています。
    $ kubectl api-resources | grep istio
    NAME    APIGROUP NAMESPACED KIND ← この行は筆者挿入.
    meshpolicies authentication.istio.io false MeshPolicy
    policies authentication.istio.io true Policy
    adapters config.istio.io true adapter
    attributemanifests config.istio.io true attributemanifest
    handlers config.istio.io true handler
    httpapispecbindings config.istio.io true HTTPAPISpecBinding
    httpapispecs config.istio.io true HTTPAPISpec
    instances config.istio.io true instance
    quotaspecbindings config.istio.io true QuotaSpecBinding
    quotaspecs config.istio.io true QuotaSpec
    rules config.istio.io true rule
    templates config.istio.io true template
    destinationrules networking.istio.io true DestinationRule
    envoyfilters networking.istio.io true EnvoyFilter
    gateways networking.istio.io true Gateway
    serviceentries networking.istio.io true ServiceEntry
    sidecars networking.istio.io true Sidecar
    virtualservices networking.istio.io true VirtualService
    clusterrbacconfigs rbac.istio.io false ClusterRbacConfig
    rbacconfigs rbac.istio.io true RbacConfig
    servicerolebindings rbac.istio.io true ServiceRoleBinding
    serviceroles rbac.istio.io true ServiceRole
    authorizationpolicies security.istio.io true AuthorizationPolicy

    View Slide

  23. アジェンダ.
    23
     今日お話するアジェンダは以下の通りです。
    1. 全体的なお話.
    a. サービス全体像.
    b. ASM のインストール / 構成.
    2. 使える機能 / 使えない機能のお話.
    a. Traffic Management
    b. Security
    c. Policy
    d. Observability
    3. まとめ.

    View Slide

  24. Supported Feature
    24
     Anthos Servie Mesh の オフィシャルドキュメント のサポート対象の機能から
    丁寧に機能を読み取っていきます.

    View Slide

  25. Traffic Routing: Supported
    25
     Networking として紹介されています。
    ● Traffic interception/redirection mechanism
    ○ Default+Supported: traditional use of iptables via init containers with
    CAP_NET_ADMIN
    ● Protocol support:
    ○ Supported: IPv4
    ○ Supported: HTTP/1.1
    ○ Supported: HTTP/2
    ○ Supported: TCP byte streams
    ○ Supported: gRPC
    ● Envoy deployments:
    ○ Default+Supported: Sidecars
    ○ Default+Supported: Ingress gateway
    ○ Default+Supported: Egress directly out from sidecars
    ○ Optional+Supported: Egress via egress gateways
    ● CRD support:
    ○ Supported: the sidecar resource
    ○ Supported: the service entry resource
    ○ Supported: percentage, fault injection, path matching, redirects, retries, rewriting,
    timeout, retry, mirroring, header manipulation, and CORS routing rules.
    ● Load balancing policies:
    ○ Supported: round robin, least connections, random, and passthrough only.

    View Slide

  26. Traffic Routing: Supported
    26
     Networking として紹介されています。
    ● Traffic interception/redirection mechanism
    ○ Default+Supported: traditional use of iptables via init containers with
    CAP_NET_ADMIN
    ● Protocol support:
    ○ Supported: IPv4
    ○ Supported: HTTP/1.1
    ○ Supported: HTTP/2
    ○ Supported: TCP byte streams
    ○ Supported: gRPC
    ● Envoy deployments:
    ○ Default+Supported: Sidecars
    ○ Default+Supported: Ingress gateway
    ○ Default+Supported: Egress directly out from sidecars
    ○ Optional+Supported: Egress via egress gateways
    ● CRD support:
    ○ Supported: the sidecar resource
    ○ Supported: the service entry resource
    ○ Supported: percentage, fault injection, path matching, redirects, retries, rewriting,
    timeout, retry, mirroring, header manipulation, and CORS routing rules.
    ● Load balancing policies:
    ○ Supported: round robin, least connections, random, and passthrough only.
    プロトコルサポートについて
    Destination Rule でのロードバランシングポリシーについて
    Envoy Proxy について
    Mesh への設定項目について

    View Slide

  27. Traffic Routing: Not Supported
    27
     Networking として紹介されています。
    ● Traffic interception/redirection mechanism
    ○ Not Supported: Istio CNI
    ○ Not Supported: whitebox sidecar
    ● Protocol support:
    ○ Not Supported: IPv6
    ○ Not Supported: L7 support for other protocols like WebSocket, MongoDB, Redis, Kafka,
    though you may be able to make them work using TCP byte stream support. If TCP byte
    stream cannot support the protocol (for example, Kafka sends a redirect address in a
    protocol-specific reply and this redirect is incompatible with Istio's routing logic) then
    we do not support the protocol.
    ● CRD support:
    ○ Not Supported: custom Envoy filters.
    ● Load balancing policies:
    ○ Not Supported: consistent hash and locality weighted load balancing.

    View Slide

  28. Traffic Routing: Not Supported
    28
     Networking として紹介されています。
    ● Traffic interception/redirection mechanism
    ○ Not Supported: Istio CNI
    ○ Not Supported: whitebox sidecar
    ● Protocol support:
    ○ Not Supported: IPv6
    ○ Not Supported: L7 support for other protocols like WebSocket, MongoDB, Redis, Kafka,
    though you may be able to make them work using TCP byte stream support. If TCP byte
    stream cannot support the protocol (for example, Kafka sends a redirect address in a
    protocol-specific reply and this redirect is incompatible with Istio's routing logic) then
    we do not support the protocol.
    ● CRD support:
    ○ Not Supported: custom Envoy filters.
    ● Load balancing policies:
    ○ Not Supported: consistent hash and locality weighted load balancing.
    CNI について
    サポートするプロトコルについて
    custom Envoy Filter はサポートしない旨
    Destination Rule でのロードバランシングポリシーについて

    View Slide

  29. Pod
    Traffic Management のコンポーネントの動き
    29
     通常の Istio の構成と同じく、データプレーンとして、Ingress Gateway が存
    在するのに加えて、 sidecar injector による pod への sidecar の injection が
    行なわれます。(namespace の labels:istio-injection: enabled を指定 or 手動)
    Istio Ingress Gateway
    istio-proxy
    Service
    Type: LoadBalancer
    Service Service
    istio-sidecar-injector
    Pod
    istio-proxy

    View Slide

  30. アジェンダ.
    30
     今日お話するアジェンダは以下の通りです。
    1. 全体的なお話.
    a. サービス全体像.
    b. ASM のインストール / 構成.
    2. 使える機能 / 使えない機能のお話.
    a. Traffic Management
    b. Security
    c. Policy
    d. Observability
    3. まとめ.

    View Slide

  31. Security: Supported
    31
     Security として紹介されています。
    ● Certificate distribution/rotation mechanisms:
    ○ Default+Supported: For GKE, certificate provisioning via Envoy SDS; for GKE-on-prem,
    certificate provisioning via secret volume mount.
    ● Certificate Authority (CA) support:
    ○ Default+Supported: Anthos Service Mesh certificate authority (Mesh CA)
    ○ Optional+Supported: The ability to add additional root CA certs to the CA bundle
    ● Authentication Policy:
    ○ Supported: mesh-level and namespace-level policy.
    ○ Transport Security:
    ■ Default+Supported: PERMISSIVE mTLS mode is enabled at mesh-level by default
    ■ Optional+Supported: mTLS STRICT mode.
    ○ Request Authentication (JWT)
    ■ Default+Supported: Policy with JWT must have origin_is_optional set to true and
    principal_binding to USE_ORIGIN
    ● Authorization Policy:
    ○ Default+Supported: Authorization v1beta1 policy

    View Slide

  32. Security: Supported
    32
     Security として紹介されています。
    ● Certificate distribution/rotation mechanisms:
    ○ Default+Supported: For GKE, certificate provisioning via Envoy SDS; for GKE-on-prem,
    certificate provisioning via secret volume mount.
    ● Certificate Authority (CA) support:
    ○ Default+Supported: Anthos Service Mesh certificate authority (Mesh CA)
    ○ Optional+Supported: The ability to add additional root CA certs to the CA bundle
    ● Authentication Policy:
    ○ Supported: mesh-level and namespace-level policy.
    ○ Transport Security:
    ■ Default+Supported: PERMISSIVE mTLS mode is enabled at mesh-level by default
    ■ Optional+Supported: mTLS STRICT mode.
    ○ Request Authentication (JWT)
    ■ Default+Supported: Policy with JWT must have origin_is_optional set to true and
    principal_binding to USE_ORIGIN
    ● Authorization Policy:
    ○ Default+Supported: Authorization v1beta1 policy
    証明書のサポートについて
    Mesh CA による証明書管理
    Meshpolicy or Policy のサポート
    認証のサポート(デフォルトはPERMISSIVEモード)
    Authorization Policy のサポートについて

    View Slide

  33. Security: Not Supported
    33
     Security として紹介されています。
    ● Certificate Authority (CA) support:
    ○ Not Supported: Integration with custom CAs
    ● Authentication Policy:
    ○ Not Supported: service level policy.
    ○ Transport Security:
    ■ Not Supported: Auto-mTLS
    ● Authorization Policy:
    ○ Not Supported: RBAC v1alpha1 policy.
    ● Not Supported: Istio CNI

    View Slide

  34. kind: Meshpolicy / Policy
    34
     Mesh 全体へのポリシーの適用を行うことができる Meshpolicy と namespace
    単位で設定が可能な Policy で、双方とも ASM では利用が可能です.
    後者が namespaced なリソースになります.
    apiVersion:
    "authentication.istio.io/v1alpha1"
    kind: "MeshPolicy"
    metadata:
    name: "default"
    # namespaced: false
    spec:
    # ルールを指定する.
    peers:
    - mtls: {}
    apiVersion:
    "authentication.istio.io/v1alpha1"
    kind: "Policy"
    metadata:
    name: "default"
    namespace: "istio-test"<-namespace
    spec:
    # ルールを指定する.
    peers:
    - mtls: {}

    View Slide

  35. Security のコンポーネントの動き
    35
     デフォルトでは、Citadel がいなくなっています。代わりに、DaemonSet と
    して、node_agent_k8s が起動しており、meshca の認証情報を中継する役割を
    果たしています。
    DaemonSet:
    istio-nodeagent
    /node_agent_k8s
    DaemonSet:
    istio-nodeagent
    /node_agent_k8s
    meshca.googleapis.com:443
    DaemonSet:
    istio-nodeagent
    /node_agent_k8s
    Node Node Node
    sidecar sidecar sidecar

    View Slide

  36. アジェンダ.
    36
     今日お話するアジェンダは以下の通りです。
    1. 全体的なお話.
    a. サービス全体像.
    b. ASM のインストール / 構成.
    2. 使える機能 / 使えない機能のお話.
    a. Traffic Management
    b. Security
    c. Policy
    d. Observability
    3. まとめ.

    View Slide

  37. Observability: Supported
    37
     Telemetry と UI として紹介されています。
    Currently, Stackdriver metrics, Stackdriver logging, and Stackdriver tracing aren't available on GKE
    on-prem. Currently, only the Prometheus/Grafana dashboards are available on GKE on-prem.
    ● Metrics:
    ○ Default+Supported: HTTP in-proxy metrics to Stackdriver
    ○ Optional+Supported: Prometheus as an alternative to Stackdriver
    ● Access Logging:
    ○ Default+Supported: Stackdriver Logging
    ○ Optional+Supported: Direct Envoy to stdout
    ● Tracing:
    ○ Optional+Supported: Stackdriver tracing
    ○ Optional+Supported: Jaeger tracing

    ● UI
    ○ Optional+Supported: Anthos Service Mesh observability features in the Cloud Console
    with Telemetry V2
    ○ Default+Supported: StackDriver UI
    ○ Optional+Supported: Prometheus/Grafana dashboards

    View Slide

  38. Observability: Not Supported
    38
     Telemetry と UI として紹介されています。
     
    ● Telemetry:
    ○ Not Supported: Telemetry V2 using WebAssembly Sandbox.
    ○ Not Supported: Custom adapters/backends, in or out of process.
    ○ Not Supported: Arbitrary Telemetry and Logging backends.
    ○ Not Supported: Telemetry V1 for any metrics.
    ○ Not Supported: Telemetry Lite for any metrics.
    ● Tracing:
    ○ Not Supported: Zipkin tracing
    ● UI
    ○ Not Supported: Kiali

    View Slide

  39. Sidecar の起動オプションを見てみる.
    39
     インジェクトされる sidecar の 起動を見ると、pilot agent と envoy proxy
    の起動が見れます。
    /usr/local/bin/pilot-agent proxy sidecar
    --domain gcpug-istio-day.svc.cluster.local
    --configPath /etc/istio/proxy --binaryPath
    /usr/local/bin/envoy
    --serviceCluster hello-app-v1.gcpug-istio-day
    --drainDuration 45s
    --parentShutdownDuration 1m0s
    --discoveryAddress
    istio-pilot.istio-system:15011
    --zipkinAddress zipkin.istio-system:9411
    --proxyLogLevel=warning
    --proxyComponentLogLevel=misc:error
    --connectTimeout 10s --proxyAdmin
    Port 15000 --concurrency 2
    --controlPlaneAuthPolicy MUTUAL_TLS
    --dnsRefreshRate 300s --statusPort 15020
    --applicationPorts 8080 --stsPort=15463
    --trust-domain=digico
    m-low-1045-23567090.svc.id.goog
    zipkin アドレスの指定
    Admin Port を15000で聞いている
    ので PortForward で
    /usr/local/bin/envoy -c
    /etc/istio/proxy/envoy-rev0.json
    --restart-epoch 0
    --drain-time-s 45
    --par ent-shutdown-time-s 60
    --service-cluster hello-app-v1.gcpug-istio-day
    --service-node
    sidecar~192.168.6.20~deploy-test-app-v1-8689754
    7df-bns97.gcpug-istio-day~gcpug-i
    stio-day.svc.cluster.local
    --max-obj-name-len 189
    --local-address-ip-version v4
    --log-format [Envoy (Epoch 0)] [%Y-%m-%d
    %T.%e][%t][%l][%n] %v -l warning --component
    -log-level misc:error --concurrency 2

    View Slide

  40. HTTP in-proxy metrics とは?
    40
     Istio のメトリクスを Mixer を経由せず収集する機構で、Istio 1.4 では Alpha
    機能扱いです。Port:15000 でポートフォワードするとアドミンUIから設定情報
    などを確認できます。
    {
    "address": {
    "socket_address": {
    "address": "0.0.0.0",
    "port_value": 15090
    }
    },
    "filter_chains": [
    {
    "filters": [
    {
    "name": "envoy.http_connection_manager",
    "config": {
    "route_config": {
    "virtual_hosts": [
    {
    "routes": [
    {
    "match": {
    "prefix": "/stats/prometheus"
    },
    "route": {
    "cluster": "prometheus_stats"
    }
    }
    ],
    "domains": [
    "*"
    ],
    "name": "backend".....__ snip ___
    サイドカーコンテナ上で、
    /stats/prometheus
    port 15090 で Listen

    View Slide

  41. Google Cloud Monitoring (旧: Stackdriver)
    41
     Google Cloud Monitoring (旧: Stackdriver Monitoring) のメトリクスリスト
    では、現在 ASM 経由での Istio のメトリクスは存在しないように見えているの
    で、今後のアップデートに期待. (現状は、Istio on GKE のものみ.)

    View Slide

  42. クラスター
    Promsd を少し見てみる.
    42
     Promsd の pod を少し見てみると、2 Containers が動いているのがわかりま
    す。stackdriver-prometheus-sidecar と prometheus が動いています。
    手元の環境では、pilot のみをスクレイピングの対象としているように見えます。
    sidecar
    (stackdriver-prometheus-sidecar)
    promsd
    stackdriver.googleapis.com
    インターネット
    現状はpilot のみ
    各リソース

    View Slide

  43. アジェンダ.
    43
     今日お話するアジェンダは以下の通りです。
    1. 全体的なお話.
    a. サービス全体像.
    b. ASM のインストール / 構成.
    2. 使える機能 / 使えない機能のお話.
    a. Traffic Management
    b. Security
    c. Policy
    d. Observability
    3. まとめ.

    View Slide

  44. まとめ
    44
     本日お話した中身を少しだけまとめます。
    ● Anthos Service Mesh の位置付けを理解することは重要
    ○ Istio on GKE とは別物で、コンセプトも異なる模様.
    ○ Managed Components の情報を適宜追いながら、クラウド側の構成を見て、マネージドの
    範囲を見極めることが重要.
    ● Anthos Service Mesh はまだまだ進化中
    ○ インストール方法含めてまだまだ動いているので、今後のアップデートによるアップグレー
    ド方法などプラクティスの積み重ねが重要.
    ○ トラフィック / セキュリティ管理機能は既に使えるので、検証はこちらからがオススメ.
    ● Anthos GKE (GKE On-Prem) ではサポートされていない機能が多い.
    ○ Managed Components 結合ができるまでは参考程度で情報を見ておいた方がいいかも.

    View Slide

  45. ASMでのコンポーネントを改めて.
    45
     通常の Istio 運用で手間となる部分を Managed Components として提供しつ
    つ、kubernetes から Istio 互換の API と Managed Components を繋ぐ役割をお
    こなう Contorol Plane とデータ通信が Data Plane で稼働しています。
    Anthos Service Mesh Distribution Managed Components
    Istio Data Plane Istio Control Plane
    Ingress Gateway
    Sidecar Proxy
    Galley
    Node Agent
    Pilot
    Promsd
    Sidecar injector
    ASM Dashboard
    Mesh CA
    Cloud Monitoring

    View Slide

  46. 参考: 進化の早さ.
    46
     ここ 2-3 週間でインストール方法に追加が2回発生し、
    その他の機能も整理が進捗しています。
    ※ Next 前の恒例行事ですが...
    今後の最低限の機能アップデート +
    追加機能の提供を待ちましょう!
    左: 約2週間前のドキュメント
    右: 2日前のドキュメント

    View Slide

  47. さいごに.
    47
    ご清聴ありがとうございました!

    View Slide