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

Terraformを使って、Volterra vK8sを構築してみよう!

Tetsuya Tsuji
September 29, 2021

Terraformを使って、Volterra vK8sを構築してみよう!

2021/9/30 HashiTalks Japan 2021 講演資料です。

Tetsuya Tsuji

September 29, 2021
Tweet

More Decks by Tetsuya Tsuji

Other Decks in Technology

Transcript

  1. | ©2021 F5 NETWORKS
    1

    View full-size slide

  2. | ©2021 F5 NETWORKS
    2
    • [名前] 辻 哲也 (つじ てつや)
    • [所属・肩書]
    F5ネットワークスジャパン合同会社 ソリューションエンジニア
    • [担当業務]
    パートナー様向けの提案⽀援、新製品情報のご提供 etc.
    • [経歴]
    国内通信⼤⼿企業から、外資系ネットワーク/セキュリティベンダーを経て、2019年にF5⼊社
    • [得意分野] ネットワーク、セキュリティ、サーバ/ストレージ周辺技術
    • [SNS (LinkedIn)] www.linkedin.com/in/tetsuyatsuji
    ⾃⼰紹介

    View full-size slide

  3. | ©2021 F5 NETWORKS
    3
    BIG-IP
    BIG-IQ
    Silverline
    F5 Cloud Services
    F5ソリューション: ブランド概要
    ⽇本で最⼤の導⼊実績を誇る
    ADC製品ブランド
    BIG-IPの集中管理、
    外部管理ツールとの連携
    F5が運⽤する基盤により提供する
    フルマネージド型クラウドサービス
    シンプル化されたUIで専⾨知識なく容易に
    迅速な導⼊が可能なセルフサービス型クラ
    ウドサービス
    安定・⾼速・低リソースと幅広い機能で
    利⽤可能なAll In Oneソフトウェア
    豊富な稼働実績による⾼度なAI基盤を活⽤
    し、クレデンシャルスタッフィング攻撃や
    BOTトラフィックに対応する製品
    クラウドやHW環境に依存しないオープンで
    セキュアな新しいEdge2.0環境の基盤技術

    View full-size slide

  4. | ©2021 F5 NETWORKS
    4
    https://registry.terraform.io/providers/F5Networks/bigip/latest/docs
    Terraform BIG-IP Provider

    View full-size slide

  5. | ©2021 F5 NETWORKS
    5
    “bigip_as3” resource
    BIG-IPの設定をJSON形式で
    宣⾔的に定義

    View full-size slide

  6. | ©2021 F5 NETWORKS
    6
    Consulを使ったService Discovery
    AS3 JSON定義例
    Virtual Server名
    Virtual Address
    Pool名
    Pool Memberの指定
    Node (Pool Member)のディスカバリ
    ⽅法として、Consulを指定
    ConsulのURIを指定
    BIG-IPのPartition

    View full-size slide

  7. | ©2021 F5 NETWORKS
    7
    BIG-IP Application consul-terraform-sync Module
    • BIG-IP向けのConsul Terraform
    Sync (CTS)モジュール
    • モジュールの詳細は以下URLを参照
    https://registry.terraform.io/modules/f5de
    vcentral/app-consul-sync-nia/bigip/latest
    • こちらでデモが⾒られます (HashiCorp
    さんのWebinarより)
    https://www.hashicorp.com/resources/co
    nsul-terraform-sync-japan
    app-consul-sync-nia

    View full-size slide

  8. | ©2021 F5 NETWORKS
    8
    ・Volterra 概要

    View full-size slide

  9. | ©2021 F5 NETWORKS
    9
    Volterraサービスプラットフォーム概要
    Public Cloud
    Private Cloud
    Volterra Console
    VoltMesh - Distributed
    Network & Security
    Services
    Nomadic Edge
    Physical Edge
    VoltStack - Platform
    Services for
    Distributed Infra and
    Apps
    SaaS Providers
    • K8Sベースのアーキテクチャを拡張し、さまざまなネットワーク、セキュリティ、アプリケーション基盤サービスを提供
    • CEサイトを起動すると、⾃動で近場のREとセキュアなトンネルを張り、Consoleから⼀括コントロール
    • K8sモダンアプリケーションを各RE、任意のCEに⾃動配信して⼀元管理
    VoltStack
    VoltMesh
    VoltConsole
    Volterra Node
    • VoltMesh
    • VoltStack
    • 仮想アプライアンス or HW
    • 設置、登録するとVPN⾃動形成
    • K8sのコンテナアプリケーション⾃動配信
    ⾃動で直近のVolterra
    Regional Edgeと
    VPNが張られる RE RE
    VoltConsole
    • SaaSでコントロールパネルのUIを提供
    • 設定、管理、NWとアプリケーションの
    Visibilityを提供
    Volterra Global NW
    • Worldwideで20カ所以上のPoPをもつ閉域網
    • テナント毎のVPN、DDoSやアプリケーション配信基盤サービスを提供

    View full-size slide

  10. | ©2021 F5 NETWORKS
    10
    VoltMesh
    ADC
    API GW
    FW
    Routing Routing
    Firewall
    Loadbalancer
    e
    API Gateway
    WAF
    Proxy
    VoltMesh
    Distributed Network
    and Security Services
    • 複雑のアプライアンスで提供されるセキュリティ機能を、単⼀ソフトウェアとして提供
    • VoltMeshの基本設定 (VoltConsole)
    1. VoltMeshのインストール
    2. サービスの登録
    3. サービスの拠点への公開
    Multi-Cloud 連携
    セキュアネットワーキング
    (IPsec/SSL VPN)
    APIゲートウェイ
    ロードバランサー
    サービスメッシュ
    アプリケーションセキュリティ

    View full-size slide

  11. | ©2021 F5 NETWORKS
    11
    VoltStack
    • 複雑のアプリケーション配信基盤をシンプルに提供
    • VoltStackの基本設定 (VoltConsole)
    1. VoltStackのインストール (VoltMeshと同時に動作。別途インストールの必要なし)
    2. アプリケーションの登録/配信
    3. アプリケーションサービスの公開
    4. クラウド連携
    VoltStack
    Platform Service for
    Distributed infra and Apps
    Service
    Control
    Fleet
    Cluster
    Management
    Compute
    Platform
    Platform
    Cluster Mgmt
    Svc Discovery
    Dist App
    Identity
    Secrets Mgmt
    ゼロタッチプロビジョニング
    ノードクラスタリング
    スケールアウト
    ID管理システム
    鍵管理システム
    シークレット情報管理
    アプリケーション配信
    フリートマネジメント

    View full-size slide

  12. | ©2021 F5 NETWORKS
    12
    VoltConsole: WebUIイメージ
    VoltMeshの設置情報
    セキュリティ・インシデント
    サービス情報
    (ネットワーク遅延情報, アプリ
    ケーションアクセス数 etc.)

    View full-size slide

  13. | ©2021 F5 NETWORKS
    13
    Volterra Automation Tools

    View full-size slide

  14. | ©2021 F5 NETWORKS
    14
    ・Volterra + TerraformによるvK8sの構築

    View full-size slide

  15. | ©2021 F5 NETWORKS
    15
    Volterra vK8s Overview
    Site-3
    vsite-b3: color(blue)
    vsite-g2:color(green)
    Site-2
    vsite-r2: color(red)
    vsite-g1:color(green)
    Site-4
    vsite-b4: color(blue)
    Site-1
    vsite-r1: color(red)
    vsite-b1: color(blue)
    NameSpace: ns-red
    vk8s-red
    - vsite-r1
    - vsite-r2
    - vsite-r3
    POD POD POD
    vK8s NS: customer-ns-red
    Tenant:
    Customer
    NameSpace: ns-blue
    vk8s-blue
    - vsite-b1
    - vsite-b2
    - vsite-b3
    - vsite-b4
    vK8s NS: customer-ns-blue
    NameSpace: ns-green
    vk8s-green
    - vsite-g1
    - vsite-g2
    - vsite-g3
    vK8s NS: customer-ns-green
    POD POD POD POD
    POD
    vsite-r3: color(red)
    POD
    POD
    VM
    POD
    VM
    POD
    vsite-b2: color(blue) vsite-g3:color(green)
    APP: Red1
    APP: Red2 (VM)
    APP: blue1
    APP: blue2 (VM)
    APP: green

    View full-size slide

  16. | ©2021 F5 NETWORKS
    16
    • Volterra Site
    • Volterraのノードがデプロイされる、物理もしくはクラウド上のロケーション
    • Siteの種類
    − パブリック・クラウド: AWS, Azure, GCP, Kubernetes (EKS/AKS/GKE)
    − プライベート・クラウド: VMware, KVM/Libvirt, Kubernetes (Minikube)
    − 物理: Bare Metal, Volterra IGW
    − Volterra Regional Edge (RE): Volterraグローバル・ネットワーク上で提供
    • Virtual Site
    • 1つ以上のSiteをグループ化して、設定オブジェクトとして⼀元化
    • “ラベル”によってSiteをグループ化
    • Virtual Kubernetes (vK8s)
    • Kubernetes”互換”のAPIを提供: 全てのKubernetes APIリソースをサポートしているわけではない
    • Namespace毎にvK8sを構成
    • 1つ以上のVirtual Siteから構成
    Volterra 基本オブジェクト: Site/vK8s

    View full-size slide

  17. | ©2021 F5 NETWORKS
    17
    • Health Check
    • HTTPおよびTCP Health Check
    • (HTTP Healthcheck): Path, Timeout値, Interval値, Threahold値等を設定
    • Origin Pool
    • 複数のEndpointをリソース・プールとしてグループ化
    − Endpointの種類: Public/Private IP, DNS名, Kubernetes Service名, Consul Service名 etc.
    − Kubernetes Service名: 形式で指定
    • Endpointに対するヘルス・チェックやTLS設定を定義
    • LoadBalancer設定で利⽤
    • HTTP LoadBalancer
    • HTTP/HTTPS LoadBalancer
    • Origin Poolを指定
    • DNS名を指定
    − Volterraに委任されたDNSドメイン
    Volterra 基本オブジェクト: App Networking

    View full-size slide

  18. | ©2021 F5 NETWORKS
    18
    https://registry.terraform.io/providers/volterraedge/volterra/latest/docs
    Terraform Volterra Provider

    View full-size slide

  19. | ©2021 F5 NETWORKS
    19
    Volterraへのアクセス
    VoltConsoleで発⾏したAPI Certificate
    (次⾴参照)を指定
    VoltConsoleのAPI Endpointを指定

    View full-size slide

  20. | ©2021 F5 NETWORKS
    20
    • VoltConsoleで”General”タブを選択し
    て、”Credentials“を選択
    • ”Create credentials”をクリック
    • 各項⽬を⼊⼒後、”Download”ボタンを
    押して.p12ファイルをダウンロード
    API Certificateの作成 (VoltConsole)
    クレデンシャル名
    “API Certificate”を
    選択
    クレデンシャルの
    有効期限を指定
    パスワードを⼊⼒

    View full-size slide

  21. | ©2021 F5 NETWORKS
    21
    デモ構成: オブジェクト間の関連付け
    Virtual Kubernetes (vK8s): t-tsuji-vk8s
    Virtual Site: t-tsuji-vsite
    Site: t-tsuji-udf
    (既存)
    Site: t-tsuji-vmware
    (既存)
    Site: t-tsuji-demo
    (新規)
    Label:
    ves.io/siteName = t-tsuji
    Origin Pool: juice-shop
    HTTP LoadBalancer: juice-shop-lb
    Service Name: svc-juice-shop.t-tsuji
    Domains: juice-shop.t-tsuji.apac-ent.f5demos.com
    Deployment: juice-shop
    Service: svc-juice-shop
    Namespace: t-tsuji
    Healthcheck: juice-shop-healthcheck
    1.
    1.
    1.
    2.
    3.
    3.
    3.
    1.

    View full-size slide

  22. | ©2021 F5 NETWORKS
    22
    デモシナリオ
    1. vK8sのデプロイ (terraform)
    • Siteへのラベル付与 (volterra_modify_site)/Virtual Siteの作成 (volterra_virtual_site)/Virtual
    Kubernetes (volterra_virtual_k8s)の作成
    2. Kubernetes Deployment/Serviceの設定 (kubectl)
    • DeploymentおよびServiceの作成
    3. サービスの公開 (terraform)
    • Healthcheckの作成 (volterra_healthcheck)/Origin Poolの作成 (volterra_origin_pool)/HTTP
    LoadBalancer (volterra_http_loadbalancer)の作成

    View full-size slide

  23. | ©2021 F5 NETWORKS
    23

    View full-size slide

  24. | ©2021 F5 NETWORKS
    24
    参考情報
    本⽇ご紹介したコードは、こちらで公開しております。
    https://github.com/ttsuji777/terraform-volterra-samples

    View full-size slide