本連載では皆様に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 操作端末 | インターネットに接続した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の認証に必要となる情報を登録します。
必要となる権限については以下のマニュアルを参照してください
左メニュー 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にラベルを指定します。マニュアルは以下のページを参照してください。
先ほど作成した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回の内容を参照してください。
このブログでは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は数多くの機能を持っております。皆様に実際に触れていただくことで活用のイメージが具体化でき、日々の運用が効率化出来ることを願っております