BLOG

第3回:今日から始めるF5 Distributed Cloud Services

Hiroshi Matsumoto サムネール
Hiroshi Matsumoto
Published June 06, 2022

・F5 Distributed Cloud Servicesのアプリケーションデプロイ機能の利用方法

本連載では皆様にF5 Distributed Cloud Services(略称 F5 XC)を使い始めていただくための情報をまとめております。F5 XCが求められる状況、そして「無料」でご利用いただくための手順、用途に合わせた機能の紹介を行っております。

第3回目となる今回は、F5 XC App Stackを用いてアプリケーションのデプロイを簡単に、そしてパワフルに実施する方法をご紹介いします。

まだアカウントをお持ちでない方は、第1回の内容をご覧ください。また、アプリケーションのロードバランス機能にご興味がある方は、第2回の内容をご覧ください。

第1回:F5 XCの利用を開始する方法
第2回:F5 XCのロードバランス機能の利用方法
・第3回:F5 XCのアプリケーションデプロイ機能の利用方法 (本記事)

それでは始めていきましょう。

・「無料」でF5 XC App Stackを利用する

本ブログでは以下の想定で手順を記述します。プロジェクトやアプリケーション、利用できる設備に合わせて適宜変更してください。

F5 XC 操作端末 インターネットに接続したPC
App Stackをデプロイする環境 AWS
外部へのアプリケーションの公開 F5 XC LB機能
F5 XC LBの宛先FQDNへの接続 PCのhostsファイルを修正
転送先アプリケーション App Stack上にデプロイしたアプリケーション

App Stackはオンプレミス、パブリッククラウド等でコンテナアプリケーションの展開を実現する機能です。お客様が利用する環境に、F5 XC App Stackをデプロイすることで、動作環境を意識することなく共通の操作で簡単にコンテナアプリケーションをデプロイできます。
また、F5 XC LB機能と組み合わせることで、F5 XC App Stackにデプロイしたアプリケーションを分散先としてインターネットに公開することが可能です。

それではApp Stackを実際に展開してみましょう。アプリケーションデプロイに最低限必要となる設定をご紹介します。適宜設定項目やマニュアルを参照して、環境に合わせた設定を行ってください。

マニュアル:DCS セットアップガイド・ラボガイドの「DCS チュートリアル」「DCS セットアップガイド - Site編」を参照してください。

・設定完了後の構成

本ブログの手順に従って操作を完了した場合、以下のような構成のデプロイが完了します。

アプリケーションのデプロイをAWS上で行います。
AWSの東京リージョンにF5 XCのSiteをデプロイし、Virtual Siteというオブジェクトを作成します。そして、そのVirtual Siteで動作するVirtual Kubernetesをデプロイします。KubernetesはAWSのSite上で動作しますが、その後のアプリケーションのデプロイはF5 XC上から行うことが可能で、AWS上で細かな操作を行う必要はありません。
そして、デプロイしたアプリケーションを外部に公開するため、LB機能を利用します。
LBは第2回の様にF5 XCにデプロイし、AWS上のアプリケーションに接続することも可能ですし、LB自体を今回作成したVirtual Site上に展開することも可能です。
アプリケーションの用途に合わせて自由に設定することができます。
LB機能について本ブログでは、関連する項目についてのみご紹介します。LBの詳細は第2回の内容をご覧ください。

それでは始めていきましょう。

・コンソールを使った設定

1.Siteの作成

新規にSiteを作成します。本ブログではAWS上に作成する手順を紹介します。その他、VMware、各種パブリッククラウド上にSiteを作成されたい場合には以下のマニュアルを参照してください。

マニュアル:DCS セットアップガイド・ラボガイドの「DCS セットアップガイド - Site編 」を参照してください

今回はAWSのSiteを作成します。
メニューよりCloud and Edge Sitesを選択してください

新規にSiteを作成します。AWSでSiteを作成する場合、F5 XCからAWSのAPIを通じて必要となるオブジェクトを自動的に生成します。このAPIによる操作を行うため、AWSの認証に必要となる情報を登録します。

必要となる権限については以下のマニュアルを参照してください

AWS VPC

左メニュー Site Management から Cloud Credentials をクリックします

Add Cloud Credentialsをクリックします

Nameに名称を指定します。Cloud Credentialsで AWS Programmatic Access Credentialsを選択し、Access KeyにKeyを貼り付けてください。その後、Secretを登録するためConfigureをクリックしてください。

Text欄に先程利用したAccess KeyのペアとなるSecretを貼り付け、下部のBlindfoldをクリックし、画面右下のApplyをクリックしてください。その後、画面右下 Save and Exit をクリックし、設定を完了します

次に、登録したCredentialを使って、AWS VPC Sitesを作成します。左メニューSite Management からAWS VPC Siteをクリックします

Add AWS VPC Siteをクリックします

以下のようなパラメータを入力します。用途や環境に合わせて変更してください。

入力パラメータ

項目名 サンプル値
Name aws-vpc-site
AWS Region ap-northeast-1
VPC New VPC Parameters
Primary IPv4 CIDR Blocks 10.1.0.0/16
Select Ingress Gateway App Stack Cluster (One Interface)

パラメータ入力後、App Stack ClusterのConfigureをクリックしてください

Nodesに割り当てるAZやサブネットの情報を入力します。画面中央のAdd Itemをクリックします

Nodeに割り当てるネットワークの情報を入力します。AWS AZ Nameをプルダウンから選択し、IPv4 Subnet に 10.1.0.0/24 と入力します。入力後、右下の Add Item をクリックします。入力完了後、右下のApplyをクリックします

画面を下にスクロールします。Automatic Deploymentで先程作成したAWSのCredential情報を選択します。その後、右下のSave and Exit をクリックします

VPC作成に必要なパラメータの入力が完了しました。ただ、この状態でまだAWS上にSiteのデプロイは行われておりません。画面右側にApplyというボタンが表示されています。こちらのボタンをクリックすることにより、入力した情報を元にAWSへSiteの作成を行います。

Applyをクリックしてください。クリックした後、デプロイには数分必要となりますので完了までお待ち下さい

数分経つとStatusがAppliedに変化し、正しくSiteの作成が完了したことがわかります。登録したCredentialの権限が不足している、またはパラメータに誤りがある場合にはデプロイに失敗します。設定を見直して再度Applyを実行してください

作成が完了後、AWSのコンソールを見るとVPCやEC2インスタンスがデプロイされていることがわかります。

・VPC

・EC2インスタンス

2.カスタムラベルの作成

Virtual Siteを紐づけるキーとなるラベルを作成します。先ほど作成したSiteにラベルを指定します。マニュアルは以下のページを参照してください。

Create a Virtual Site

先ほど作成したSiteを選択します。オブジェクト右側の「…」をクリックし、Manage Configurationをクリックしてください

画面右上のEdit Configurationをクリックします。LabelsのAdd labelをクリックし以下のようなラベルを追加します。追加完了後、画面右下Save and Exitをクリックします

ラベル名 location
ラベル値 tokyo

3.Virtual Siteの作成

Virtual Siteを作成します。Distributed Appsをクリックします。

Distributed Appsでアプリケーションのデプロイに必要なVirtual K8sの作成や、コンテナアプリケーションをデプロイします。オブジェクトの作成をするNamespaceを指定することが可能となりますので、適宜要件に合わせてNamespaceを作成してください。個別のNamespaceを作成していない場合には、default Namespaceに設定オブジェクトが生成されます。

メニュー左側のVirtual Sitesをクリックし、画面上部に表示されたAdd virtual siteをクリックします

以下のパラメータを入力します。Virtual Siteは先程作成したLabelを条件にグループ化するよう指定します。

項目名 サンプル値
Name vsite-tokyo
Site Type CE
Selector Expression location in tokyo

画面右下のSave and Exitをクリックします

4.Virtual K8sの作成

左メニューのVirtual K8sをクリックし、Add Virtual K8sをクリックします

Name欄にvk8s-tokyoを入力します。画面中央のVirtual Sites欄のSelect Virtual Refをクリックします

先程作成した、Virtual Site「vsite-tokyo」をチェックし、画面右下のSelect Vsite Refをクリックします

画面右下のSave and Exitをクリックし、設定を完了します。設定完了後Virtual K8sの作成が開始します。数分でデプロイが完了します

5.アプリケーションの展開

対象のVirtual K8sを開き、画面上部のDeploymentをクリックしてください

Add Deploymentをクリックすると、Deploymentの作成画面が開きます。以下の内容を参考に内容を入力し、Saveをクリックします

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

その後Deploymentの内容に従ってVirtual K8s上にリソースが作成されます。Podを開くと先程入力したDeploymentの内容に従ってコンテナイメージがデプロイされていることが確認できます。

次に、Serviceを作成します。画面上部Serviceを開きます

Add Serviceをクリックします。Service作成画面が開きますので以下の内容を参考に内容を入力し、Saveをクリックします

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  selector:
    app: nginx

サービスが作成されました。これで外部へのアプリケーションの公開準備ができました

6.LBの分散先としてサービスを指定

外部から通信を受け付けるGatewayとしてLoad Balancerを設定します。詳細な手順については、第2回の内容を参照してください。

第2回:F5 XCのロードバランス機能の利用方法

このブログではVirtual K8s上に展開したアプリケーションを公開するために必要なポイントに絞り紹介します。

Load Balancerは通信を転送する先として、Origin Poolというオブジェクトを利用します。アプリケーションを外部に公開するためには、Origin PoolのOrigin Serverで、K8sのサービスを指定することにより分散先として指定することが可能です

項目名 用途
Select Type of Origin Server K8s Service Name …
Service Name 分散先のサービス名
<service名>.<NameSpace>で指定する
Site or Virtual Site Virtual Site
Virtual Site 作成したVirtual Site名

この設定により、F5 XCは分散先のサービスを検知し、自動的にOrigin ServerとしてOrigin Poolに指定します。

正しく検知された場合には、Load BalancersのHTTP Load Balancersで該当のLBのOrigin Serversの欄に、以下のように転送先として表示されます

7.LBをVirtual Siteにデプロイ

このブログではアプリケーションデプロイのためにVirtual Siteを作成しています。Load BalancerはF5 XC上だけでなく、このVirtual Siteに実装することが可能です。ここではそのために必要となるパラメータを紹介します。

Load BalancerのVIP ConfigurationでAdvertise Customを選択します。このフィールドを選択するためにはメニュー右上のAdvancedボタンが有効であることを確認してください。Configureから詳細設定を行います。作成したVirtual Siteを指定し、設定内容を反映してください。

8.動作確認

F5 XC上にLB機能をデプロイする場合、割り当てられたFQDNのアドレスを確認してください。CE上にLB機能をデプロイする場合、AWSのNodeに紐づいたGlobal IPアドレスを確認してください。
それぞれを適切に宛先と指定することでアプリケーションの動作をご確認いただけます。

・その他操作

Virtual K8sはkubeconfigをダウンロードいただき、kubectlを使った操作も可能です。参考手順としてご紹介します。

対象のVirtual K8sのメニューよりkubeconfigをクリックします

kubeconfigの有効期限を指定し、ダウンロードします

ダウンロードしたファイルを作業を行うホストにコピーし、kubectlコマンドを実行します

root@ubuntu:~/# kubectl --kubeconfig ves_h-matsumoto_vk8s-tokyo.yaml get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6674d6dbcc-x4jwp   2/2     Running   0          15m
root@ubuntu:~/# kubectl --kubeconfig ves_h-matsumoto_vk8s-tokyo.yaml get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   1/1     1            1           15m

・ステータスの確認

F5 XCでは様々なステータスをダッシュボードから確認することが可能です。主要なステータス画面のサンプルをご紹介します。
F5 XCは簡単にアプリケーションのデプロイを提供するだけでなく優れたダッシュボードを提供することで、アプリケーションがどの様に動作しているか把握することが可能です。

・Site

Site Map

Site List

Site Connectivity

・Virtual Site

App Traffic

Virtual Sites

Virtual K8s

・HTTP Load Balancer

Service Mesh

・まとめ

こちらの手順を利用することで、誰でも簡単に、F5 XCのApp Stackの機能を活用し、コンテナアプリケーションをデプロイいただくことが可能です。
App Stackの機能は、Kubernetesのデプロイを簡単に出来るだけではなく、クラウドやオンプレミスの環境を意識することなくアプリケーションの展開ができることが大きな強みです。各エリアや、用途に合わせたVirtual Siteを構成することにより一度の操作でグループ内のクラスタに対しアプリケーション配信を行えます。
さらに、それらのアプリケーションの稼働状態や、通信の遅延状況などをダッシュボードから確認することにより、プラットフォームに依存しない共通のオペレーションを実施することが可能となります。
F5 XCは数多くの機能を持っております。皆様に実際に触れていただくことで活用のイメージが具体化でき、日々の運用が効率化出来ることを願っております