Dev > PaaS > CloudFoundry > PCF

前の記事で、VMware Tanzu Operations Manager (Ops Manager) をAWSにインストールをしました。
この記事では、構築した環境上にTanzu Application Service 6.0 (TAS) をインストールします。

目次

Tanzu Application Serviceのインストール

構築する環境は次の図のようになります。Small Footprint版を使用するので、作成されるVMは

  • Compute (アプリが動作する場所、コンテナのビルドもここで行われる)
  • Control (APIサーバーや認証・認可サーバーなど)
  • Database (TASの情報を保存するMySQL)
  • Router (アプリやAPIサーバーへのアクセスの入り口)

の4つです。これらがtasネットワーク上に作成されます。

image

TAS本体は"Tile"という形式でパッケージングされており、拡張子は.pivotalです。TASのTileをBroadcom Support Portal (BSP) からダウンロードします。

BSPにログインして、次の図のように"Tanzu"を選択してください。

image

"My downloads"から"VMware Tanzu Application Service for VMs"を選択してください。

image

"VMware Tanzu Application Service for VMs"をクリックしてください。

image

6.0系の最新バージョン、下の図では6.0.4+LTS-Tをクリックしてください。

image

"I agree to the Terms and Conditions"にチェックを入れて、"Small Footprint TAS"をダウンロードしてください。

image

srt-6.0.4-build.3.pivotalがダウンロードされます。ファイルサイズが18GB以上あるので、ディスク容量に気をつけてください。

Ops Managerのダッシュボードの左の"IMPORT A PRODUCT"ボタンをクリックして、ダウンロードしたファイルをアップロードしてください。ファイルサイズが大きいので時間がかかります。

image

Tileのアップロードが完了すると、ダッシュボード左にアップロードしたプロダクト名とバージョンが表示されます。バージョン横の"+"ボタンをクリックしてください。

image

"Small Footprint VMware Tanzu Application Service"のTileをクリックしてください。

image

TASの設定を行います。

Assign AZs and Networks

TASをデプロイする先のAZとNetworkを設定します。

image
  1. Place singleton jobs in AZ に任意のAZを選択 (スケールアウトできないVMはこのAZにインストールされます。Compute, Control, Database, Routerは全てスケールアウトできます。)
  2. Balance other jobs in AZs で全てのAZをチェック
  3. Networktasを選択

"Save"ボタンをクリックして設定を保存。

Domains

TASで使用するドメイン名を設定します。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-domains.html

image
  1. System domaincat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .sys_dns_domainの結果を設定
  2. Apps domaincat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .apps_dns_domainの結果を設定

"Save"ボタンをクリックして設定を保存。

Networking

TASのNetwork関連の設定を行います。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-networking.html

  1. Certificates and private keys for the Gorouterで"Add"ボタンをクリック
    1. Let's Encryptの場合、
      1. Namelets-encryptを設定
      2. Certificate and private key Certificate PEMcat .lego/certificates/_.${SUBDOMAIN}.crtの結果を設定。
      3. Certificate and private key Private Key PEMcat .lego/certificates/_.${SUBDOMAIN}.keyの結果を設定。
    2. Self-Signed Certificatesの場合
      1. Nameself-signedを設定
      2. Certificate and private keyGenerate RSA Certificateをクリックし、Domain names (comma separated)echo "*.$(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .sys_dns_domain),*.$(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .apps_dns_domain)"の結果を設定し、"Generate"ボタンをクリック
  2. TLS termination pointGorouterを選択
  3. Add Zipkin tracing headersのチェックを外す (W3Cのtracing headersがあれば十分)
  4. Add W3C tracing headersをチェック

"Save"ボタンをクリックして設定を保存。

App Developer Controls

TASの開発者対する機能制限に関連する設定を行います。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-app-dev-controls.html

image
  1. Allow space developers to manage network policiesをチェック

App Security Groups

TASのApp Security Groupに関する設定を行います。

image
  1. You are responsible for setting the appropriate ASGs after TAS for VMs finishes deploying.Xを入力。

UAA

UAA(認証・認可サーバー)対する機能制限に関連する設定を行います。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-uaa.html

image
  1. SAML service provider certificate and private key
    1. Nameself-signedを設定
    2. Certificate and private keyGenerate RSA Certificateをクリックし、Domain names (comma separated)echo "*.login.$(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .sys_dns_domain)"の結果を設定し、"Generate"ボタンをクリック

Note

SAML service provideの機能は使用しません

"Save"ボタンをクリックして設定を保存。

CredHub

CredHub(機密情報管理サーバー)対する設定を行います。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-credhub.html

image
  1. Internal encryption provider keys
    1. "Add"ボタンをクリック
      1. Namekey1を設定
      2. Keyecho ${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM}の結果を設定
      3. Primaryをチェック
  2. Secure service instance credentialsをチェック

"Save"ボタンをクリックして設定を保存。

Internal MySQL

内部のMySQL対する設定を行います。

image
  1. Email addressにアラート通知先メールアドレスを設定

"Save"ボタンをクリックして設定を保存。

File Storage

ファイルストレージに対する設定を行います。今回はTerraformで作成したS3バケットを使用します。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-file-storage.html

image
  1. Cloud Controller filesystem
    1. External S3-compatible filestoreを選択
    2. URL endpointに対象のリージョンのS3 Endpoint URLを設定。通常はecho https://s3.${AWS_REGION}.amazonaws.comの値
    3. S3 AWS with instance profileをチェック
    4. Regionecho $AWS_REGIONの結果を設定
    5. Use path-style S3 URLs (deprecated)のチェックを外す
    6. Buildpacks bucket namecat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .buildpacks_bucket_nameの結果を設定
    7. Droplets bucket namecat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .droplets_bucket_nameの結果を設定
    8. Packages bucket namecat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .packages_bucket_nameの結果を設定
    9. Resources bucket namecat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .resources_bucket_nameの結果を設定
    10. Use versioning for backup and restoreをチェック

Cloud Controller

Cloud Controller(APIサーバー)対する設定を行います。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-cloud-controller.html

image
  1. Available Stackscflinuxfs4 and tanzu-jammyを選択
  2. Enable legacy MD5 buildpack paths. If disabled, xxhash64 is used for calculating paths in buildpack image layers.のチェックを外す

Errands

Errands(インストールの後タスク)対する設定を行います。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-errands.html

image
  • App Autoscaler ErrandOFFを選択
  • App Autoscaler Smoke Test ErrandOFFを選択
  • NFS Broker ErrandOFFを選択
  • SMB Broker ErrandOFFを選択

Resource Config

作成するVMのリソースに対する設定を行います。

https://docs.vmware.com/en/VMware-Tanzu-Application-Service/6.0/tas-for-vms/config-resources.html

image
  • DatabaseVM TYPEt3a.mediumを選択
  • DatabasePERSISTENT DISK TYPE10GBを選択
  • ControlLOAD BALANCERScat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r '.ssh_target_group_name | "alb:" + .'の結果を設定
  • RouterVM TYPEt3a.microを選択
  • RouterLOAD BALANCERScat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r '.web_target_group_names|map("alb:" + .)|join(",")'の結果を設定
  • Backup Restore NodeINSTANCES0に設定
  • MySQL MonitorINSTANCES0に設定

右上の"Save"ボタンをクリックして設定を保存。

VM Extensionの作成

今回Terraformで作成したAWSリソースをTASで使用する場合、次の項目がGUIからは設定できません

  1. NLBからのHTTP(S)リクエストを許可するSecurity GroupをRouter VMに設定
  2. NLBからのSSHリクエストを許可するSecurity GroupをControl VMに設定
  3. S3に対するアクセスを許可するInstance ProfileをControl VMに設定

これらはGUIで設定する代わりにom CLIでVM Extensionを作成・設定することで利用可能になります。

次のドキュメントが参考になります。

Tip

VM ExtensionはVMに対して様々な機能を適用することのできる拡張ポイントです。VM Extensionを利用することで、TASでは公式に提供されていない機能を使用することができる可能性があります。

次のように3つのVM Extensionを定義するファイルを作成します。

cat <<EOF > vm-extension-web-lb-security-groups.yml
---
vm-extension-config:
  name: web-lb-security-groups
  cloud_properties:
    security_groups:
    - $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .web_lb_security_group_id)
    - $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .platform_vms_security_group_id)
---
EOF

cat <<EOF > vm-extension-ssh-lb-security-groups.yml
---
vm-extension-config:
   name: ssh-lb-security-groups
   cloud_properties:
      security_groups:
      - $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .ssh_lb_security_group_id)
      - $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .platform_vms_security_group_id)
---
EOF

cat <<EOF > vm-extension-cloud-controller-iam.yml
---
vm-extension-config:
   name: cloud-controller-iam
   cloud_properties:
      iam_instance_profile: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_blobstore_iam_instance_profile_name)
---
EOF

次のコマンドでVM Extensionを作成します。

om --env env.yml create-vm-extension -c vm-extension-web-lb-security-groups.yml
om --env env.yml create-vm-extension -c vm-extension-ssh-lb-security-groups.yml
om --env env.yml create-vm-extension -c vm-extension-cloud-controller-iam.yml

次のように、Control及び、Router VMに適用したいVM Extensionを定義します。

cat <<EOF > additional-vm-extensions-cf.yml
---
product-name: cf
resource-config:
   control:
      additional_vm_extensions:
      - ssh-lb-security-groups
      - cloud-controller-iam
   router:
      additional_vm_extensions:
      - web-lb-security-groups
---
EOF

次のコマンドでVM ExtensionをVMに設定します。

om --env env.yml configure-product -c additional-vm-extensions-cf.yml

ダッシュボードに戻り、"REVIEW CHANGES"ボタンをクリックします。

image

BOSH Directorの"SEE CHANGES"をクリックしてください。

image

Cloud Configの項目で、設定したVM Extensionが表示されるでしょう。(下の図ではcloud-controller-iamが抜けていますが、上記の説明の通り設定すれば、それも表示されるはずです。)

image

前の画面に戻って"APPLY CHANGES"ボタンをクリックしてください。

image

インストールが進みます。環境に依ますが、30分から1時間くらいかかるかもしれません。

image

"Changes Applied"と表示されれば、インストールは成功です。

image

サンプルアプリのデプロイ

インストールしたTASにアプリにデプロイしてみましょう。

TASのadminユーザーのパスワードを取得します。TASのTileの"Credentials"タブをクリックしてください。

image

"UAA"の項目までスクロールし、"Admin Credentials"の"Link to Credential"をクリックします。adminユーザーのpasswordが表示されます。

image

なお、om CLIを使用して、admin passwordを次のように取得することもできます。

ADMIN_PASSWORD=$(om --env env.yml credentials -p cf -c .uaa.admin_credentials -f password)

次のドキュメントを参考にcf CLIをインストールします。

wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
sudo apt-get update
sudo apt-get install cf8-cli -y

次のバージョンで動作確認しました。

$ cf --version
cf version 8.7.10+5b7ce3c.2024-04-04

次のコマンドでログインします。

SYSTEM_DOMAIN=$(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .sys_dns_domain)

cf login -a api.${SYSTEM_DOMAIN} -u admin -p ${ADMIN_PASSWORD} -o system -s system

次のような出力が表示されます。

API endpoint: api.sys.sandbox.aws.maki.lol


Authenticating...
OK

Targeted org system.

Targeted space system.

API endpoint:   https://api.sys.sandbox.aws.maki.lol
API version:    3.166.0
user:           admin
org:            system
space:          system

demo orgとdemo spaceを次のコマンドで作成します。

cf create-org demo
cf create-space demo -o demo
cf target -o demo -s demo

サンプルJavaアプリのビルド済みJarファイルをダウンロードします。

wget https://gist.github.com/making/fca49149aea3a7307b293685ba20c7b7/raw/6daab9a0a88fe0f36072ca4d1ee622d2354f3505/pcf-ers-demo1-0.0.1-SNAPSHOT.jar

cf pushコマンドでアプリをデプロイします。

cf push attendees -p pcf-ers-demo1-0.0.1-SNAPSHOT.jar -m 768m -b java_buildpack_offline

デプロイが完了するとcf appsコマンドで次のように状態を確認できます。

$ cf apps
Getting apps in org demo / space demo as admin...

name        requested state   processes           routes
attendees   started           web:1/1, task:0/0   attendees.apps.sandbox.aws.maki.lol

表示されたURLにアクセスしてください。次のような画面が表示されるでしょう。

image

Apps Managerへのアクセス

Apps ManagerはTASの開発者向け管理コンソールです。

URLはhttps://apps.${SYSTEM_DOMAIN}です。このURLのアクセスすると、ログイン画面にリダイレクトされます。

image

cf loginで使用したユーザー名とパスワードを入力して、"SIGN IN"ボタンをクリックしてください。(Ops Managerのアカウトと別です)

次のような画面にリダイレクトされます。

demo orgをクリックしてください。

image

demo spaceをクリックしてください。

image

attendees をクリックしてください。

image

デプロイしたattendeesアプリに関する管理画面が表示されます。

image

アンインストール

Ops Managerのダッシュボードの右上のユーザー名をクリックし、"Advanced Options"をクリックしてください。

"DELETE THIS INSTALLATION"ボタンをクリックし、"Confirm"ボタンをクリックしてください。

image

この状態で"Apply Changes"を実行すると、TASとBOSH Directorがアンインストールされます。

image

Tip

AWSのリソースは残しておく場合は、アンインストール前に、次のコマンドでTileの設定をExportしておくと良いです。

om --env env.yml staged-director-config --no-redact | grep -v guid: > director.yml
om --env env.yml staged-config -p cf > cf.yml

次回、同じAWSリソース上にインストールする場合は、

om --env env.yml configure-director -c director.yml
om --env env.yml configure-product -c cf.yml 

でTileの設定ができます。

Ops Managerの削除は次のコマンドで行います。

om vm-lifecycle delete-vm --config=opsman.yml -state-file=state.yml 

Tip

AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYが更新されている場合は、再度次のコマンドでopsman.ymlを生成してください。

cat <<EOF > opsman.yml
---
opsman-configuration:
  aws:
    region: ${AWS_REGION}
    vpc_subnet_id: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_subnet_id)
    security_group_ids:
    - $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_security_group_id)
    - $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .platform_vms_security_group_id)
    key_pair_name: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_key_pair_name)
    iam_instance_profile_name: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_iam_instance_profile_name)
    access_key_id: ${AWS_ACCESS_KEY_ID}
    secret_access_key: ${AWS_SECRET_ACCESS_KEY}
    public_ip: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_public_ip)
    private_ip: 10.0.0.10
---
EOF

AWSリソースの削除は次のコマンドで行います。

terraform destroy
Found a mistake? Update the entry.
Share this article: