---
title: Tanzu Kubernetes Grid Integration Edition (TKGI, 旧Enterprise PKS) 1.8をAWSにインストールするメモ
tags: ["Kubernetes", "PKS", "AWS", "BOSH", "TGKI", "Tanzu"]
categories: ["Dev", "CaaS", "Kubernetes", "PKS", "AWS"]
date: 2020-07-07T10:14:48Z
updated: 2020-07-07T10:27:08Z
---

Pivotal Container Service (PKS)はTanzu Kubernetes Grid Integration Edition (TKGI)にリブランドされました。

https://docs.pivotal.io/tkgi/1-8/index.html

TKGIの中身はPKSそのままですが、CLI名が`pks`から`tkgi`に変更されています。

本記事は、名前変更後初のリリースであるTKGI 1.8をAWSにインストールするメモです。

**Table of contents**
<!-- toc -->

## Provision a jumpbox VM

まずは作業場として、Jumpbox VMを用意します。
以下ではTerrformでEC2上にJumpbox VMを作成しますが、任意のUbuntuサーバー上でも作業できます。Ubuntu Bionicで動作確認しています。


Terraformは次のバージョンで確認しています。

```
$ terraform -v
Terraform v0.12.26
```

Jumpbox用のTerraformのテンプレートを取得して、`terraform.tfvars.sample`を参考に`terraform.tfvars`して、`terraform apply`まで実行してください。

```
git clone https://github.com/making/terraforming-jumpbox
cd terraforming-jumpbox
cp terraform.tfvars.sample terraform.tfvars
terraform plan -out plan
terraform apply plan
```

次のスクリプトでJumpboxにログインできます。

```
./ssh-jumpbox.sh
```

## Install CLIs on the Jumpbox

Jumpbox VM上に色々なCLIをインストールします。

```
chmod +x ./provision.sh 
./provision.sh
```

TerraformでJumpboxを作っていない場合は、`provision.sh`を

https://raw.githubusercontent.com/making/terraforming-jumpbox/master/provision.sh

からダウンロードし、実行してください。

## Pave AWS environment for TKGI 

次にTKGIをインストールするためのAWS環境をTerraformで作成します。

Terraformテンプレートは次の2種類がありますが、ここではTerraform 0.12に対応している後者を使用します。

* https://github.com/pivotal-cf/terraforming-aws
* https://github.com/pivotal/paving.git

```
mkdir ~/workspace
cd ~/workspace
git clone https://github.com/pivotal/paving.git
cd paving
```

いくつかパッチを当てるので、`custom`ブランチを作成します。

```
git checkout -b custom
```

### Apply patches

https://github.com/pivotal/paving.git

に次のパッチをあてます。

* K8sクラスタに必要な、SubnetのTagをつける https://github.com/voor/paving/commit/ef6d4965a19c489bfe3dbbb0a9c5faa167f70475
* TASにのみ必要でTKGIには不要なLBを削除する https://github.com/making/paving/commit/472df716651ad3b89ccdc32f3284957bf8e8496e
* terraform destoryでS3バケットを強制削除する https://github.com/making/paving/commit/85a8832a797ac2e15fb607d59733c6ed56188887

```
git remote add voor https://github.com/voor/paving.git
git remote add making https://github.com/making/paving.git
git fetch voor add-kubernetes-tags
git fetch making remove-tas-lbs
git fetch making force-destroy-buckets
git cherry-pick -x ef6d4965a19c489bfe3dbbb0a9c5faa167f70475
git cherry-pick -x 472df716651ad3b89ccdc32f3284957bf8e8496e
git cherry-pick -x 85a8832a797ac2e15fb607d59733c6ed56188887
```

### Run terraform

Terraformを実行します。

```
export TF_VAR_region=ap-northeast-1
export TF_VAR_access_key=AKIA**********
export TF_VAR_secret_key=******
export TF_VAR_availability_zones='["ap-northeast-1a","ap-northeast-1c","ap-northeast-1d"]'
export TF_VAR_environment_name=sandbox
export TF_VAR_hosted_zone=tanzu.ik.am

cd aws
terraform init
terraform plan -out plan
terraform apply plan
```

## Download files

[VMware Tanzu Network](https://network.pivotal.io/) (旧Pivotal Network)から必要なファイルをダウンロードします。

VMware Tanzu Networkにログインして、[Profileページ](https://network.pivotal.io/users/dashboard/edit-profile) から`UAA API TOKEN`を取得してください。

`pivnet` CLIを使用して、次のプロダクトをダウンロードします。

* OpsManager (2.9.6) https://network.pivotal.io/products/ops-manager
* TKGI (1.8.0) https://network.pivotal.io/products/pivotal-container-service
* Platform Automation (4.4.3) https://network.pivotal.io/products/platform-automation

```
pivnet login --api-token=****
mkdir ~/workspace/pivnet
cd ~/workspace/pivnet
pivnet download-product-files --product-slug='ops-manager' --release-version='2.9.6' --product-file-id=726928
pivnet download-product-files --product-slug='pivotal-container-service' --release-version='1.8.0' --product-file-id=720838
pivnet download-product-files --product-slug='pivotal-container-service' --release-version='1.8.0' --product-file-id=696191
sudo install tkgi-linux-amd64-1.8.0-build.72 /usr/local/bin/tkgi
pivnet download-product-files --product-slug='platform-automation' --release-version='4.4.3' --product-file-id=709887
tar xvf platform-automation-image-4.4.3.tgz ./rootfs/usr/bin/p-automator
sudo install rootfs/usr/bin/p-automator /usr/local/bin/
```

## Create ops manager vm

前述のTerraformテンプレートではOpsManager VMは作成されません。
ここではPlatform Automationに含まれる`p-automator` CLIでOpsManager VMを作成します。

必要な設定ファイルテンプレートは
https://raw.githubusercontent.com/making/platform-automation/master/config/aws/sandbox/ops-manager/config.yml
です。プレースホルダーを`terraform output`の値で埋めます。

```
mkdir -p ~/workspace/config/${TF_VAR_environment_name}/ops-manager
cd ~/workspace/config/${TF_VAR_environment_name}/ops-manager

terraform output -state=${HOME}/workspace/paving/aws/terraform.tfstate -json \
   | bosh int - --path /stable_config/value \
   | bosh int - > ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml

cat <<EOF >> ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml
web_lb_security_group_id: dummy
ssh_lb_security_group_id: dummy
tcp_lb_security_group_id: dummy
tas_blobstore_iam_instance_profile_name: dummy
EOF

wget https://raw.githubusercontent.com/making/platform-automation/master/config/aws/sandbox/ops-manager/config.yml

p-automator create-vm \
  --config ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/config.yml \
  --image-file ${HOME}/workspace/pivnet/ops-manager-aws-2.9.6-build.148.yml \
  --state-file ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/state.yml \
  --vars-file ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml
```

## Configure authentication

Ops Managerのユーザーを設定します。Ops Managerへの操作には`om` CLIを使用します。

```
cd ~/workspace/config/${TF_VAR_environment_name}/ops-manager

export OM_USERNAME=admin
export OM_PASSWORD=$(uuidgen)
export OM_DECRYPTION_PASSPHRASE=$(uuidgen)

cat <<EOF > auth.yml
username: ${OM_USERNAME}
password: ${OM_PASSWORD}
decryption-passphrase: ${OM_DECRYPTION_PASSPHRASE}
EOF

cat <<EOF > env.yml
target: https://opsmanager.${TF_VAR_environment_name}.${TF_VAR_hosted_zone}
connect-timeout: 30
request-timeout: 1800
skip-ssl-validation: true
username: ${OM_USERNAME}
password: ${OM_PASSWORD}
decryption-passphrase: ${OM_DECRYPTION_PASSPHRASE}
EOF

om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml \
  --skip-ssl-validation \
  configure-authentication \
  --config ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/auth.yml
```

## Generate and configure let's encrypt

Ops Manager及びTKGIのAPIサーバーに設定するためのTLS証明書をLet's Encryptで発行します。

```
mkdir -p ~/workspace/letsencrypt
cd ~/workspace/letsencrypt

export AWS_REGION=${TF_VAR_region}
export AWS_ACCESS_KEY_ID=${TF_VAR_access_key}
export AWS_SECRET_ACCESS_KEY=${TF_VAR_secret_key}
export AWS_HOSTED_ZONE_ID=....... (not hosted zone name but ID)
export SUBDOMAIN=${TF_VAR_environment_name}.${TF_VAR_hosted_zone}
export EMAIL=.......

lego --accept-tos \
  --key-type=rsa4096 \
  --domains="*.${SUBDOMAIN}" \
  --domains="*.pks.${SUBDOMAIN}" \
  --domains="*.tkgi.${SUBDOMAIN}" \
  --email=${EMAIL} \
  --dns=route53 \
  run

cat <<EOF > ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/ssl-certificate.yml
ssl-certificate:
  certificate: ((ssl_certificate))
  private_key: ((ssl_private_key))
EOF

om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml \
  --skip-ssl-validation \
  configure-opsman \
  --config <(bosh int ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/ssl-certificate.yml \
    --var-file ssl_certificate=${HOME}/workspace/letsencrypt/.lego/certificates/_.${SUBDOMAIN}.crt \
    --var-file ssl_private_key=${HOME}/workspace/letsencrypt/.lego/certificates/_.${SUBDOMAIN}.key)
```

ブラウザで`https://opsmanager.${TF_VAR_environment_name}.${TF_VAR_hosted_zone}`を開けば、Ops Managerにアクセスできます。

![image](https://user-images.githubusercontent.com/106908/86750746-25719d00-c079-11ea-81fa-0a6c91509e66.png)

パスワードは`~/workspace/config/sandbox/ops-manager/env.yml`に出力されています。

![image](https://user-images.githubusercontent.com/106908/86750922-4508c580-c079-11ea-8141-6474c196dd9b.png)


## Configure director

次にBOSH Directorの設定を`om` CLIで行います。


必要な設定ファイルテンプレートは
https://raw.githubusercontent.com/making/platform-automation/master/config/aws/sandbox/director/config.yml
です。プレースホルダーを`terraform output`の値で埋めます

```
mkdir -p ~/workspace/config/${TF_VAR_environment_name}/director
cd ~/workspace/config/${TF_VAR_environment_name}/director

wget https://raw.githubusercontent.com/making/platform-automation/master/config/aws/sandbox/director/config.yml

om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml \
  configure-director \
  --config ${HOME}/workspace/config/${TF_VAR_environment_name}/director/config.yml \
  --vars-file ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml
```

![image](https://user-images.githubusercontent.com/106908/86751960-fdcf0480-c079-11ea-9ae1-ced96b0637db.png)

## Configure TKGI

次にTKGIのアップロードと設定を行います。

必要な設定ファイルテンプレートは
https://raw.githubusercontent.com/making/platform-automation/master/config/aws/sandbox/tkgi/config.yml
です。プレースホルダーを`terraform output`の値で埋めます

```
mkdir -p ~/workspace/config/${TF_VAR_environment_name}/tkgi
cd ~/workspace/config/${TF_VAR_environment_name}/tkgi
wget https://raw.githubusercontent.com/making/platform-automation/master/config/aws/sandbox/tkgi/config.yml

om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml \
  upload-product \
  --product ${HOME}/workspace/pivnet/pivotal-container-service-1.8.0-build.16.pivotal
om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml \
  stage-product \
  --product-name pivotal-container-service \
  --product-version 1.8.0-build.16
om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml  \
  configure-product \
  --config <(bosh int ${HOME}/workspace/config/${TF_VAR_environment_name}/tkgi/config.yml \
    --var-file ssl_certificate=${HOME}/workspace/letsencrypt/.lego/certificates/_.${SUBDOMAIN}.crt \
    --var-file ssl_private_key=${HOME}/workspace/letsencrypt/.lego/certificates/_.${SUBDOMAIN}.key) \
  --vars-file ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml
```

![image](https://user-images.githubusercontent.com/106908/86754595-f6105f80-c07b-11ea-955b-f6172f083c65.png)


Plan1(`small`)とPlan2(`medium`)だけ設定してあります。

![image](https://user-images.githubusercontent.com/106908/86754832-2526d100-c07c-11ea-830a-3c361fdfc8ca.png)

Plan1:

* Master x 1 (`t3.medium`)
* Worker x 3 (`t3.medium`)

![image](https://user-images.githubusercontent.com/106908/86754876-2e17a280-c07c-11ea-8207-cd00c8962392.png)

Plan2:

* Master x 3 (`t3.medium`)
* Worker x 5 (`t3.medium`)

Workerのインスタンス数は作成時または作成後に変更できます。

## Apply changes

Apply ChangesでTKGIとBOSH Directorのインストールを開始します。

```
om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml \
  apply-changes
```

しばらく待ち時間です。

![image](https://user-images.githubusercontent.com/106908/86757728-50aabb00-c07e-11ea-9e2a-63006810203b.png)

約50分でインストールが完了します。

## Verify TKGI

`tkgi` CLIでTKGI APIにアクセスします。

```
TKGI_API_DNS=$(bosh int ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml --path /pks_api_dns)
TKGI_ADMIN_SECRET=$(om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml  credentials -p pivotal-container-service -c .properties.pks_uaa_management_admin_client -f secret)
TKGI_ADMIN_PASSWORD=$(om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml  credentials -p pivotal-container-service -c .properties.uaa_admin_password -f secret)

tkgi login -a ${TKGI_API_DNS} -k -u admin -p ${TKGI_ADMIN_PASSWORD}
```

### Create a Kubernetes cluster

`tkgi` CLIのAWS用ラッパーである[pks-cli-aws](https://github.com/making/pks-cli-aws)をダウンロードします。

pks-cli-awsはK8sのmasterにアタッチするNLBの作成とアタッチ、Subnetに対する必要なTag設定を行うヘルパースクリプトです。

TKGI 1.8以降は`pks-aws`コマンドを`tkgi-aws`にrenameして使用します。

```
sudo wget -O /usr/local/bin/tkgi-aws https://raw.githubusercontent.com/making/pks-cli-aws/master/pks-aws
sudo chmod +x /usr/local/bin/tkgi-aws
```

`cluster01`という名前のK8sクラスタを`tkgi`及び`tkgi-aws`コマンドで作成します。

```
# 必要な環境変数を定義

ENV_NAME=${TF_VAR_environment_name}
CLUSTER_NAME=cluster01

export AWS_DEFAULT_REGION=${TF_VAR_region}
export AWS_ACCESS_KEY_ID=${TF_VAR_access_key}
export AWS_SECRET_ACCESS_KEY=${TF_VAR_secret_key}

# Master用のNLBを作成
MASTER_HOSTNAME=$(tkgi-aws create-lb ${CLUSTER_NAME} ${ENV_NAME})
# K8sクラスタの作成
tkgi create-cluster ${CLUSTER_NAME} -e ${MASTER_HOSTNAME} -p small -n 1 --wait
# NLBをK8sクラスタにアタッチ
tkgi-aws attach-lb ${CLUSTER_NAME}
# クラスタの情報をSubnetとSecurity Groupのタグに設定
tkgi-aws create-tags ${CLUSTER_NAME} ${ENV_NAME}
```

> [TKGIのドキュメント](https://docs.pivotal.io/tkgi/1-8/aws-cluster-load-balancer.html)ではCLBを作成して、Master VM IDをLBに設定するようにガイドされていますが、<br>
> この方法ではPKSのバージョンアップやOSのアップデートでMaster VMがBOSH DirectorによってRecreateされた場合にLBからDetachされてしまい、<br>
> 再度アタッチし直さないといけません。`tkgi-aws`ではNLBのtargetとしてMaster VMのIPを指定しているため、recreateされても再アタッチする必要はありません。

10-15分くらいでクラスタが作成されます。

```
$ tkgi clusters

TKGI Version    Name       k8s Version  Plan Name  UUID                                  Status     Action
1.8.0-build.16  cluster01  1.17.5       small      e6c9deef-7ce7-42c8-a1e7-4047685c7588  succeeded  CREATE
```

次のコマンドでK8sクラスタにアクセスするための設定ファイル(~/.kube/config)をダウンロードします。

```
# パスワードは${TKGI_ADMIN_PASSWORD}の値
tkgi get-credentials ${CLUSTER_NAME}
```

`kubectl`でK8sクラスタにアクセス可能になります。

```
$ kubectl cluster-info
Kubernetes master is running at https://pks-cluster01-025a3d1a04d85423.elb.ap-northeast-1.amazonaws.com:8443
CoreDNS is running at https://pks-cluster01-025a3d1a04d85423.elb.ap-northeast-1.amazonaws.com:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

$ kubectl get node -o wide
NAME                                           STATUS   ROLES    AGE   VERSION            INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
ip-10-0-8-11.ap-northeast-1.compute.internal   Ready    <none>   13m   v1.17.5+vmware.1   10.0.8.11     <none>        Ubuntu 16.04.6 LTS   4.15.0-106-generic   docker://19.3.5

$ kubectl get pod -A
NAMESPACE     NAME                                                            READY   STATUS      RESTARTS   AGE
kube-system   coredns-5b6649768f-6snnx                                        1/1     Running     0          11m
kube-system   coredns-5b6649768f-ltqmk                                        1/1     Running     0          11m
kube-system   coredns-5b6649768f-vrmcq                                        1/1     Running     0          11m
kube-system   metrics-server-7f9887fbb5-kwbh9                                 1/1     Running     0          11m
pks-system    cert-generator-1311f65a5dfa4bf6774ba070152672eacdb3e6b2-rz2ld   0/1     Completed   0          11m
pks-system    event-controller-6969f56f88-s475x                               2/2     Running     0          11m
pks-system    metric-controller-5dfd968d6f-z5s7n                              1/1     Running     0          11m
pks-system    observability-manager-6487c9fbf9-vjzjl                          1/1     Running     0          11m
pks-system    sink-controller-7799b4f4d7-pkgpz                                1/1     Running     0          11m
pks-system    telegraf-r9j6h                                                  1/1     Running     0          11m
pks-system    telemetry-agent-778fc8997d-ftg8p                                2/2     Running     0          10m
pks-system    validator-5787b98d57-h4g57                                      1/1     Running     0          11m
```

### Run a sample pod/service on k8s

作成したK8sクラスタにサンプルアプリをデプロイします。

```
kubectl create deployment demo --image=making/hello-cnb --dry-run -o=yaml > /tmp/deployment.yaml
echo --- >> /tmp/deployment.yaml
kubectl create service loadbalancer demo --tcp=8080:8080 --dry-run -o=yaml >> /tmp/deployment.yaml
kubectl apply -f /tmp/deployment.yaml
```

作成されたリソースを確認します。

```
$ kubectl get pod,service -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP             NODE                                           NOMINATED NODE   READINESS GATES
pod/demo-755c587cc4-nlvhq   1/1     Running   0          42s   10.200.10.13   ip-10-0-8-11.ap-northeast-1.compute.internal   <none>           <none>

NAME                 TYPE           CLUSTER-IP       EXTERNAL-IP                                                                    PORT(S)          AGE   SELECTOR
service/demo         LoadBalancer   10.100.200.253   a3aa6b39a6582411f99321ccc00e93a9-1586208277.ap-northeast-1.elb.amazonaws.com   8080:32609/TCP   42s   app=demo
service/kubernetes   ClusterIP      10.100.200.1     <none>                                                                          443/TCP          19m   <none>
```

しばらくするとLBを経由してアプリケーションにアクセスできます。

```
$ curl http://a3aa6b39a6582411f99321ccc00e93a9-1586208277.ap-northeast-1.elb.amazonaws.com:8080/actuator/health
{"status":"UP","groups":["liveness","readiness"]}
```

## SSH into Ops Manager

次のコマンドでJumpboxからOps Manager VMにアクセスするためのスクリプトを生成します。

```
# configure BOSH envionment variables on opsmanager
cat <<PEM > /tmp/opsman-${TF_VAR_hosted_zone}.pem
$(bosh int ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml --path /ops_manager_ssh_private_key)
PEM
chmod 600 /tmp/opsman-${TF_VAR_hosted_zone}.pem
ssh -o "StrictHostKeyChecking=no" \
    -o "ServerAliveInterval=15" \
    -i /tmp/opsman-${TF_VAR_hosted_zone}.pem \
    ubuntu@$(bosh int ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml --path /ops_manager_dns) "$(cat <<EOF
cat <<ENV | sudo tee -a /etc/profile.d/bosh.sh > /dev/null
$(om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml bosh-env)
ENV
EOF
)"

cat <<SCRIPT > /tmp/ssh-opsman-${TF_VAR_hosted_zone}.sh
#!/bin/bash
cat <<PEM > /tmp/opsman-${TF_VAR_hosted_zone}.pem
$(bosh int ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml  --path /ops_manager_ssh_private_key)
PEM
chmod 600 /tmp/opsman-${TF_VAR_hosted_zone}.pem
ssh -o "StrictHostKeyChecking=no" -o "ServerAliveInterval=15" -i /tmp/opsman-${TF_VAR_hosted_zone}.pem ubuntu@$(bosh int ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml  --path /ops_manager_dns) "\$@"
SCRIPT
chmod +x /tmp/ssh-opsman-${TF_VAR_hosted_zone}.sh
```

生成したスクリプトを実行してOps Manager VMにログインします。

```
/tmp/ssh-opsman-${TF_VAR_hosted_zone}.sh
```

Ops Manager上で`bosh vms`コマンドを実行するとBOSH Directorで管理されているVM一覧を確認できます。

```
$ bosh vms
Using environment '10.0.16.10' as client 'ops_manager'

Task 41
Task 42
Task 41 done

Task 42 done

Deployment 'pivotal-container-service-ec16b96176af0c7f6fbc'

Instance                                                        Process State  AZ               IPs         VM CID               VM Type    Active  Stemcell  
pivotal-container-service/6fda37df-1143-44a1-917f-bec0f3d5b124  running        ap-northeast-1c  10.0.13.11  i-08d875c929186e74f  t3.medium  true    bosh-aws-xen-hvm-ubuntu-xenial-go_agent/621.76  
pks-db/7bf23fee-e83c-40e2-a2e7-9a0afe010bfb                     running        ap-northeast-1c  10.0.13.10  i-068306bf31f7803f2  t3.medium  true    bosh-aws-xen-hvm-ubuntu-xenial-go_agent/621.76  

2 vms

Deployment 'service-instance_e6c9deef-7ce7-42c8-a1e7-4047685c7588'

Instance                                     Process State  AZ               IPs        VM CID               VM Type    Active  Stemcell  
master/9a1d813c-0d80-4c21-a631-a0657b8f488b  running        ap-northeast-1a  10.0.8.10  i-038b98adf62dfa5ae  t3.medium  true    bosh-aws-xen-hvm-ubuntu-xenial-go_agent/621.76  
worker/69ac9b5b-1b60-4a52-aa23-412191aac490  running        ap-northeast-1a  10.0.8.11  i-02694bbf4bb24c382  t3.medium  true    bosh-aws-xen-hvm-ubuntu-xenial-go_agent/621.76  

2 vms

Succeeded
```

## Delete a cluster

作成したK8sクラスタを削除します。`Service`や`PersistentVolume`リソースでKuberntesが作成したAWSリソース(LBやEBSなど)は、
`tkg delete-cluster`コマンドでは削除されないため、でK8sクラスタを削除する前に削除してください。

```
kubectl delete -f /tmp/deployment.yaml
tkgi-aws delete-tags ${CLUSTER_NAME} ${ENV_NAME}
tkgi-aws delete-lb ${CLUSTER_NAME}
tkgi delete-cluster ${CLUSTER_NAME} --wait --non-interactive
```

## Delete installation

TKGIとBOSH Directorをアンインストールします。

```
om --env ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/env.yml \
  delete-installation \
  --force
```

## Delete ops manager vm

Ops Managerを削除します。

```
p-automator delete-vm \
  --config ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/config.yml \
  --state-file ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/state.yml \
  --vars-file ${HOME}/workspace/config/${TF_VAR_environment_name}/ops-manager/vars.yml
```

## Wipe AWS environment

Terraformで作成したAWS環境を削除します。

```
cd ~/workspace/paving/aws
terraform destroy -auto-approve
```

## Delete the Jumpbox VM

Jumpboxからログアウトし、Jumbpbox VMを削除します。

```
terraform destroy -auto-approve
```
