---
title: Cloud Foundry Container Runtime 0.16.0を0.17.0にアップデート
tags: ["Kubo", "BOSH", "Kubernetes", "AWS", "CFCR"]
categories: ["Dev", "CaaS", "Kubernetes", "CFCR"]
date: 2018-05-31T18:34:52Z
updated: 2018-05-31T18:46:32Z
---

Kubernetes 1.10.0およびMulti-Masterに対応した[CFCR 0.17.0](https://docs-cfcr.cfapps.io/overview/release-notes/#v0170)がリリースされたので、
[前回](https://blog.ik.am/entries/451)作成したCFCR 0.16.0の環境を0.17.0にアップデートします。


### CFCR 0.17.0にアップデート

まずはBastion serverにログイン。

```
./ssh-bastion.sh 
```

BOSH用の環境変数を読み込みます。

```
cd cfcr-manifests
source bosh-aws-env.sh
```

`v0.17.0`のタグを使ってmanifestを更新します。

```
cd kubo-deployment
git fetch origin --tag
git checkout v0.17.0
cd ..
```

CFCR v0.17.0用にStemcellをアップデートします。

```
STEMCELL_VERSION=$(bosh int kubo-deployment/manifests/cfcr.yml --path /stemcells/0/version)
bosh upload-stemcell https://s3.amazonaws.com/bosh-aws-light-stemcells/light-bosh-stemcell-${STEMCELL_VERSION}-aws-xen-hvm-ubuntu-trusty-go_agent.tgz
```

CFCR v0.17.0を指定するops-fileを作成します。

```yaml
cat <<EOF > ops-files/kubernetes-kubo-0.17.0.yml
- type: replace
  path: /releases/name=kubo?
  value:
    name: kubo
    version: 0.17.0
    url: https://bosh.io/d/github.com/cloudfoundry-incubator/kubo-release?v=0.17.0
    sha1: 0ab676b9f6f5363377498e93487e8ba31622768e
EOF
```

`deploy-kubernetes.sh`を更新して、作成したops-fileを使います。
Masterは引き続き1インスタンスにするため、`ops-files/misc/single-master.yml`も使います。

```bash
cat <<'EOF' > deploy-kubernetes.sh
#!/bin/bash
bosh deploy -d cfcr kubo-deployment/manifests/cfcr.yml \
    -o kubo-deployment/manifests/ops-files/misc/single-master.yml \
    -o kubo-deployment/manifests/ops-files/addons-spec.yml \
    -o kubo-deployment/manifests/ops-files/iaas/aws/lb.yml \
    -o kubo-deployment/manifests/ops-files/iaas/aws/cloud-provider.yml \
    -o ops-files/kubernetes-kubo-0.17.0.yml \
    -o ops-files/kubernetes-worker.yml \
    -o ops-files/kubernetes-master-lb.yml \
    --var-file addons-spec=<(for f in `ls specs/*.yml`;do cat $f;echo;echo "---";done) \
    -v kubernetes_cluster_tag=${kubernetes_cluster_tag} \
    -v kubernetes_master_host=${master_lb_ip_address} \
    --no-redact
EOF
chmod +x deploy-kubernetes.sh
```

CFCR 0.17.0をデプロイします。 0.16.0から0.17.0の[差分](https://gist.github.com/making/adc8726fdef94671259ac43a18429d45)。

```bash
./deploy-kubernetes.sh
```

Addonを更新します。

```bash
bosh -d cfcr run-errand apply-addons
```

k8s 1.10のクラスタが手に入りました！

```
$ kubectl get node -o wide
NAME                                          STATUS    ROLES     AGE       VERSION   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
ip-10-0-2-5.ap-northeast-1.compute.internal   Ready     <none>    45m       v1.10.3   <none>        Ubuntu 14.04.5 LTS   4.4.0-127-generic   docker://17.12.1-ce
```

### クラスタのスケールアウト

Workerを2インスタンス、Masterを3インスタンスにスケールアウトしましょう。

```yaml
cat <<EOF > ops-files/kubernetes-worker.yml
- type: replace
  path: /instance_groups/name=worker/instances
  value: 2
EOF
```

```bash
cat <<'EOF' > deploy-kubernetes.sh
#!/bin/bash
bosh deploy -d cfcr kubo-deployment/manifests/cfcr.yml \
    -o kubo-deployment/manifests/ops-files/addons-spec.yml \
    -o kubo-deployment/manifests/ops-files/iaas/aws/lb.yml \
    -o kubo-deployment/manifests/ops-files/iaas/aws/cloud-provider.yml \
    -o ops-files/kubernetes-kubo-0.17.0.yml \
    -o ops-files/kubernetes-worker.yml \
    -o ops-files/kubernetes-master-lb.yml \
    --var-file addons-spec=<(for f in `ls specs/*.yml`;do cat $f;echo;echo "---";done) \
    -v kubernetes_cluster_tag=${kubernetes_cluster_tag} \
    -v kubernetes_master_host=${master_lb_ip_address} \
    --no-redact
EOF
```

```
./deploy-kubernetes.sh 
```

`bosh vms`でVM一覧を確認。

```
$ bosh -d cfcr vms
Using environment '10.0.2.252' as client 'admin'

Task 61. Done

Deployment 'cfcr'

Instance                                     Process State  AZ  IPs       VM CID               VM Type        Active  
master/485d11d9-6390-40d7-97dd-b6f92b3148c6  running        z2  10.0.2.7  i-0f6a5ceca5c869797  small          -  
master/7e776fbe-ea80-499c-b1d6-9f1aa8af29bc  running        z3  10.0.2.8  i-01ef1a2a6b0e38f84  small          -  
master/bc14d482-2481-4cd4-ab61-f8998959befe  running        z1  10.0.2.4  i-0e0c6b90f7b2ee10d  small          -  
worker/9a57034a-99a5-48cb-9db0-59841e083a8c  running        z1  10.0.2.5  i-03d3204bfe5f4ba1f  small-highmem  -  
worker/ac71f182-ce0b-4c6d-8811-2605c3248121  running        z2  10.0.2.9  i-0412554a975042d05  small-highmem  -  

5 vms

Succeeded
```

EC2コンソールは次のようになります。

![image](https://user-images.githubusercontent.com/106908/40799521-c1c855c4-6548-11e8-9745-4abadb9680b4.png)
