Pivotal Cloud Foundry 及び PKS に触るうえで必須かも集

# PCF等について

https://qiita.com/ryojsb/items/7c23f46a58003ae1cfb3

こちらに簡単ではありますが、まとめてあるので見ていただけたらと思います。
とても便利なので、使ってみたいって人が増えたら嬉しいです。

# §1 Bosh cli

## Bosh Directorの登録

```
# bosh alias-env pks -e <PKS IP> --ca-cert /var/tempest/workspaces/default/root_ca_certificate

Name               p-bosh
UUID               e81768d8-42d1-40cb-a15b-8d90655bf466
Version            269.0.3 (00000000)
Director Stemcell  ubuntu-xenial/315.64
CPI                vsphere_cpi
Features           compiled_package_cache: disabled
                   config_server: enabled
                   local_dns: enabled
                   power_dns: disabled
                   snapshots: disabled
User               (not logged in)

Succeeded
```

# Login

```
# bosh -e pks login

Email (): director
Password ():

Successfully authenticated with UAA

Succeeded
```

※ここは、GUIのBosh Direcoter ＞ Credentials ＞ Director Credentials  に記載があります。


## 環境確認

```
# bosh envs
URL          Alias
192.168.1.2  pks

1 environments

Succeeded
```

`-e`で先ほど登録したDirectorのAliasを指定できます。

```
# bosh -e pks env
Using environment '192.168.1.2' as user 'director'

Name               p-bosh
UUID               e81768d8-42d1-40cb-a15b-8d90655bf466
Version            269.0.3 (00000000)
Director Stemcell  ubuntu-xenial/315.64
CPI                vsphere_cpi
Features           compiled_package_cache: disabled
                   config_server: enabled
                   local_dns: enabled
                   power_dns: disabled
                   snapshots: disabled
User               director

Succeeded
```

`--details`でより詳細なものが出ます。
といっても、Bosh　Director作成の際に使ったmodule等のexpiration日が増えるだけです。

```
#  bosh -e pks env --details
Using environment '192.168.1.2' as user 'director'

Name               p-bosh
UUID               e81768d8-42d1-40cb-a15b-8d90655bf466
Version            269.0.3 (00000000)
Director Stemcell  ubuntu-xenial/315.64
CPI                vsphere_cpi
Features           compiled_package_cache: disabled
                   config_server: enabled
                   local_dns: enabled
                   power_dns: disabled
                   snapshots: disabled
User               director

CERTIFICATE EXPIRY DATE INFORMATION

Certificate                         Expiry Date (UTC)     Days Left
director.ssl.cert                   2021-07-28T04:04:26Z  724
blobstore.tls.cert.ca               2023-07-26T04:35:44Z  1452
director.config_server.ca_cert      2023-07-26T04:35:44Z  1452
director.config_server.uaa.ca_cert  2023-07-26T04:35:44Z  1452
nats.tls.ca                         2023-07-26T04:35:44Z  1452
nats.tls.client_ca.certificate      2023-07-26T04:35:44Z  1452
nats.tls.director.certificate       2021-07-28T03:03:52Z  724

Succeeded
```

## Stemcellsの参照

こちらでは`ss`もしくは`stemcells`を用います。
今回は省略形である`ss`を使った例です。

```
# bosh -e pks ss
Using environment '192.168.1.2' as user 'director'

Name                                      Version  OS             CPI                   CID
bosh-vsphere-esxi-ubuntu-xenial-go_agent  250.25*  ubuntu-xenial  d0bce406ebcdd240b825  sc-dad4b118-5375-4de0-99de-c4ca71672f7f

(*) Currently deployed

1 stemcells

Succeeded
```

## 起動中のVMの確認

今回、Bosh Director上には現在`PKS`, `Harbor`, そしてPKSから作成したKubernetes cluster(1master, 4worker)の３つが作られており、それらが表示されています。

PKSで、Kubernetes Clusterを増やしたり、BoshでVMを建てたときに、このコマンドで確認することができます。

```
# bosh -e pks vms
Using environment '192.168.1.2' as user 'director'

Task 412
Task 413
Task 411
Task 412 done

Task 413 done

Task 411 done

Deployment 'harbor-container-registry-52b31900d96f114fa96b'

Instance                                         Process State  AZ      IPs           VM CID                                   VM Type     Active
harbor-app/076fb579-f236-4f57-84e1-790a80faab3a  running        az      192.168.1.61  vm-9d7d9986-ae33-4707-a09a-5e4c4ec4f3f5  large.disk  true

1 vms

Deployment 'pivotal-container-service-db57080f08c546b18a83'

Instance                                                        Process State  AZ      IPs          VM CID                                   VM Type     Active
pivotal-container-service/9fbaa064-4b1a-49bc-a539-6b0cef512285  running        az       192.168.1.4  vm-f09c7356-2d17-493b-84fd-6b483397245b  large.disk  true

1 vms

Deployment 'service-instance_98c4d605-6646-4702-beba-9f13da740d26'

Instance                                     Process State  AZ      IPs         VM CID                                   VM Type      Active
master/9ef8b18d-5f62-42e5-b60d-b081c234e63e  running        az      172.16.1.2  vm-34cfc2ca-6145-4ad4-8457-0e0ba146b51f  large        true
worker/92aa10f6-d115-438c-a451-5c47a014b448  running        az      172.16.1.3  vm-81e901e0-9513-498f-9d31-36e428dc2fa5  medium.disk  true
worker/b5da10f1-f843-4ad0-9631-881bc240a436  running        az      172.16.1.4  vm-fce9b31a-4bff-4134-9848-1f6a6408e462  medium.disk  true
worker/cd824452-c006-49d9-a499-c406923d33c6  running        az      172.16.1.5  vm-8f8a9295-df7e-4216-8e20-e45fba7a3ff8  medium.disk  true
worker/f449b911-2ac6-461d-8d1e-2124f6a9d54d  running        az      172.16.1.6  vm-48c383eb-06aa-4eba-b9ee-b48a37526127  medium.disk  true

5 vms

Succeeded
```


# §2 PKS cli

## Login

こちらはPKSにログインするコマンドです。
このコマンドを打つと、一定時間はキャッシュに残るので、teratermやputtyを切っても再度接続した際に残っていれば、打たなくてもpksコマンドが指定pksサーバに届きます。

`--ca-cert`に関しては、構築環境に合わせて変えてください。

```
# pks login -a <PKS FQDN> -u <user> -p <password> --ca-cert /usr/pks/root_ca_certificate
```

ログインされていない状態だと以下のようなErrorがはかれます。

```
Error: You are not currently authenticated. Please log in to continue.
```

## Kubernetes Cluster作成

```
# pks create-cluster <Cluster名> --external-hostname <FQDN> --plan large --num-nodes <Node数(worker数)>

Name:                     <Cluster名>
Plan Name:                large
UUID:                     09ffbeda-423e-4872-a7d1-73f51a8c6cce
Last Action:              CREATE
Last Action State:        in progress
Last Action Description:  Creating cluster
Kubernetes Master Host:   devopscluster.mydom.local
Kubernetes Master Port:   8443
Worker Nodes:             4
Kubernetes Master IP(s):  In Progress
Network Profile Name:

Use 'pks cluster <Cluster名>' to monitor the state of your cluster
```

以下、[Cluster名] は`SampleCluster`としていきます。

## Cluster情報

まず、PKSから構築したKubernetes Clusterのリストを表示します。

```
# pks clusters list

Name           Plan Name  UUID                                  Status     Action
SampleCluster  large      09ffbeda-423e-4872-a7d1-73f51a8c6cce  succeeded  CREATE
```

次は、Cluster名を指定して詳細な情報を得ます。
上は`pks clusters`, 下は`pks cluster`なのでコマンドを間違えないように。

```
# pks cluster SampleCluster

Name:                     SampleCluster
Plan Name:                large
UUID:                     98c4d605-6646-4702-beba-9f13da740d26
Last Action:              CREATE
Last Action State:        succeeded
Last Action Description:  Instance provisioning completed
Kubernetes Master Host:   samplecluster.mydom.local
Kubernetes Master Port:   8443
Worker Nodes:             4
Kubernetes Master IP(s):  172.16.1.2
Network Profile Name:
```

## Credential取得

Kubernetes Clusterを構築したら、Credentialを取得してください。
そうすると、kubectlが取得したClusterに届くようになります。

```
# pks get-credentials SampleCluster
```


# §3 Harbor

docker loginしようとした時に以下のようなログが表示されるかもしれません。

```
Error response from daemon: Get https://harbor.testdom.local/v2/: unauthorized: authentication required
```

これを解決するために、以下のようなことが必要となります。
これは、docker local registoryでも必要だったりしますが

今回は、Ops Manager上に表示されているので、`Openssl`を使ったりしません。

Ops Manager GUI上のHarbor > certificate にある ssl証明書を
/etc/docker/certs.d/[Harbor FQDN]/ 下に ca.crt という名前で配置します。

その後、docker を再起動します。

```
systemctl restart docker
```

そうすると、ログインができるようになります。

# 最後に
これ以外は、あとはKubernetesの操作になってくると思います。
これからもどんどんKubernetesの周辺がいろいろなもので便利になっていくと思うと楽しみですね。