PCFとは
Pivotalが提供する、Kubernetesやその他さまざまなサービスを導入及び管理することができる基盤です。
基本的にはOps Managerと呼ばれるものを
- VMware vSphere
- Microsoft Azure
- Google Cloud Platform
- Amazon Web Service
- OpenStack
の上に構築して、そこから各種サービスを展開していく流れになります。
以下は、Ops Manager上に
- PKS (Pivotal Container Service): Kubernetes管理基盤
- Habor: Private docker repository
を導入した状態です。
PCF 構築の流れ
とてつもない量となってしまうため、流れをつかんでいただくものを書きます。
これを読みながらやっていくというよりは、自分の詰まった点やどのような構成にしていたのかを書いてありますので、ざっと目を通して、構成をイメージしてから取り組んでいただければと思います。
環境はこんな感じでやっています。(とても簡単な図ですみません)
Ops Managerのインストール
自分は、VMware vCenterを通して構築をいたしました。
Boshの設定
以下ような各項目を埋めていきます。
この際、管理用のnetworkとサービス用networkを準備する必要があります。
自分の場合、NAT下に作成したため、
- 外部通信用network
- private network1(管理用)
- private network2(サービス用)
の3つのネットワークを作っています。
PKS のインストール
モジュールをインストールし、先ほどのOps Managerの管理画面のIMPORT A PRODUCT というところから取り込んでいきます。
設定に関しても、複雑なものはなく容易にこなすことができます。
この際、PKS APIという箇所で、Certificateを生成するのですが、そこにrsa keyが必要となります。
NATでssh-keygenをして、id_rsaをcatしコピペして生成しました。
導入後に
# uaac target https\://PKS-API:8443 --ca-cert ROOT-CA-FILENAME
コマンドを用いて、情報を取得するのですが、ここが少し戸惑いました。。。
ここでは、自分の場合一度ops managerにログインし、
ubuntu@pivotal-ops-manager:~$ cat /var/tempest/workspaces/default/root_ca_certificate
として表示されたものを、NAT上のどこかにテキストファイル化し
# uaac target pks.mydom.local:8443 --ca-cert root_ca_certificate
Target: https://pks.mydom.local:8443
Context: admin, from client admin
という感じにしています。
Habor
ここは何もつまるところはなく、難なくいけました。
Kubernetes cluster の構築
PKSではとても簡単に、好きな構成のkubernetesをサラッと構築できます。
NATにつなぎ、ログインします。
この際、clusterは生成されてないので、何も表示されません。
# pks login -a pks.mydom.local -u pksadmin -p password --ca-cert /usr/pks/root_ca_certificate
# pks clusters list
Name Plan Name UUID Status Action
では、実際に構築します。
# pks create-cluster SampleCluster --external-hostname samplecluster.mydom.local --plan large --num-nodes 4
Name: SampleCluster
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: samplecluster.mydom.local
Kubernetes Master Port: 8443
Worker Nodes: 4
Kubernetes Master IP(s): In Progress
Network Profile Name:
Use 'pks cluster SampleCluster' to monitor the state of your cluster
構築が始まりました。
ここは、少し時間がかかりますが、自動でやってくれていると思えばね。。。
# pks clusters list
Name Plan Name UUID Status Action
SampleCluster large 09ffbeda-423e-4872-a7d1-73f51a8c6cce in progress CREATE
出来上がると以下のように表示されます。
# 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:
# pks clusters list
Name Plan Name UUID Status Action
SampleCluster large 09ffbeda-423e-4872-a7d1-73f51a8c6cce succeeded CREATE
以下の二つでclusterに接続します。
# pks get-credentials SampleCluster
# kubectl config use-context SampleCluster
Switched to context "SampleCluster"
clusterの情報について確認してみましょう。
# kubectl cluster-info
Kubernetes master is running at https://samplecluster.mydom.local:8443
CoreDNS is running at https://samplecluster.mydom.local: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 nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
898ca1e5-f248-466b-aaf1-9208ee122aae Ready <none> 58m v1.13.5 172.16.1.4 172.16.1.4 Ubuntu 16.04.6 LTS 4.15.0-46-generic docker://18.6.3
8eda35c6-533c-43c7-9efa-dc513420cb32 Ready <none> 56m v1.13.5 172.16.1.5 172.16.1.5 Ubuntu 16.04.6 LTS 4.15.0-46-generic docker://18.6.3
9c86b2be-2192-4e14-869b-ab562ad76916 Ready <none> 53m v1.13.5 172.16.1.6 172.16.1.6 Ubuntu 16.04.6 LTS 4.15.0-46-generic docker://18.6.3
c24e6162-3125-49d7-bfd6-f3a4d20b2c60 Ready <none> 61m v1.13.5 172.16.1.3 172.16.1.3 Ubuntu 16.04.6 LTS 4.15.0-46-generic docker://18.6.3
まとめ
すこし、PKS等の導入時に悩むこともありましたが、一度構築してしまうと、いろんなことが楽できそうですね!
皆さんもぜひ、導入してみてはいかがでしょうか。