Canonical Distributed Kubernetesのインストール

# はじめに

- [Canonical](https://www.canonical.com/ "canonical")の[CDK](https://docs.conjure-up.io/stable/en/walkthrough "CDK walkthrough")のインストールをまだやったことなかったため、やってみた。
  - 途中で[kubernetes](https://kubernetes.io/ "kubernetes")と一緒に[Rancher](https://rancher.com/ "rancher")も入れられるようだ
- [conjure-up](https://conjure-up.io/ "conjure-up"), [juju](https://jujucharms.com/ "juju")によるインストールが初めてだったため、どんな感じなのか見たかった

# 環境

- ubuntu 16.04
- conjure-up 2.6.1
- juju 2.4.3-xenial-amd64

# 手順

基本は、[conjure-up](https://conjure-up.io/ "conjure-up")のとおりなのだが、そのままだとうまくいかなかったので、若干追加手順がある。

localhostへのインストールとしているが、以下がポイント。
これをやっておかないと、localhostを選択できない。

- storage poolを作成
- storage backendはdirにする
- ipv6はnoneとする

また、以下をやっておかないと、conjure-upでデプロイ時にbootstrap-seriesについてKeyErrorが発生する。
これは、デフォルトではbootstrap-seriesがbionicに指定されているので、これからインストールする環境であるubuntu16.04に合わせて変更をしておかないとならないらしい。

- juju bootstrap --bootstrap-series=xenial

なお、インストール時にかなりリソースを使うので、仮想サーバなどであまり非力なマシンを使うとハングアップしてしまい先に進まない。

```
$ sudo apt update
$ sudo apt upgrade
$ which snap
/usr/bin/snap
$ sudo snap install conjure-up --classic
$ sudo snap install lxd
$ /snap/bin/lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: yes
config: {}
networks:
- config:
    ipv4.address: auto
    ipv6.address: none
  description: ""
  managed: false
  name: lxdbr0
  type: ""
storage_pools:
- config: {}
  description: ""
  name: default
  driver: dir
profiles:
- config: {}
  description: ""
  devices:
    eth0:
      name: eth0
      nictype: bridged
      parent: lxdbr0
      type: nic
    root:
      path: /
      pool: default
      type: disk
  name: default
cluster: null

$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),27(sudo),129(lxd)
$ juju bootstrap --bootstrap-series=xenial
$ conjure-up kubernetes
　→　画面に従って入力、選択していきインストールする
```

# 実際の画面

どのような項目が選択できるのか、というのは、実際にインストール前に知りたいものだが、意外と情報が転がっていないものである。
なので、ここで画面を載せようと思う。

## SPELLの選択

![cdk01-2.png](https://qiita-image-store.s3.amazonaws.com/0/318326/bde8bb9d-7ecb-46e3-5a34-30bcbf0b11a7.png)

## ADD-ONの選択

やってみて初めて知りましたが、Rancherも一緒に入れられるんですね。キープだ牛。

![cdk02-2-1.png](https://qiita-image-store.s3.amazonaws.com/0/318326/3fbffba3-286c-3a14-7476-e07dd7b40db2.png)

![cdk02-2-2.png](https://qiita-image-store.s3.amazonaws.com/0/318326/6ba33644-7e80-0482-e48a-8fb121670bfd.png)

![cdk02-2-3.png](https://qiita-image-store.s3.amazonaws.com/0/318326/e78b032b-8d79-f5c2-0c57-b8537e19b3c6.png)

![cdk02-2-4.png](https://qiita-image-store.s3.amazonaws.com/0/318326/b1e4b565-27d1-3057-b384-4e1d8a314b16.png)

## インストール対象のクラウドの選択

![cdk03-3-1.png](https://qiita-image-store.s3.amazonaws.com/0/318326/bc075069-5b3d-8a38-c548-218e26b00bc0.png)

### たとえばAWSなら？

![cdk04-1-1.png](https://qiita-image-store.s3.amazonaws.com/0/318326/93a7c19d-ff01-d582-c4f3-8d180a585770.png)

![cdk04-1-2.png](https://qiita-image-store.s3.amazonaws.com/0/318326/4fb19c0f-cca4-f174-a102-6f8c90f41c67.png)

![cdk05-1-1.png](https://qiita-image-store.s3.amazonaws.com/0/318326/2819f982-6734-f955-0a69-bb9253aa5559.png)

![cdk05-1-2.png](https://qiita-image-store.s3.amazonaws.com/0/318326/9ca2c953-676a-a89b-b19d-8dac80620585.png)

![cdk05-1-3.png](https://qiita-image-store.s3.amazonaws.com/0/318326/eaefc985-2374-2b6d-a30d-230828170eac.png)

### localhostの場合

ブリッジやストレージプールなど既に作成済のリソースがあればそこから選択できる

![cdk09-1.png](https://qiita-image-store.s3.amazonaws.com/0/318326/5f6f2db4-076f-1e2b-2b26-a635e3ce3920.png)

![cdk09-2.png](https://qiita-image-store.s3.amazonaws.com/0/318326/822bf992-2197-8ef0-4865-ac3d618554a4.png)

## SPELLの設定

![cdk06-2-1.png](https://qiita-image-store.s3.amazonaws.com/0/318326/9686f1b6-d9e0-5f40-df87-50b0bc054d16.png)

![cdk06-2-2.png](https://qiita-image-store.s3.amazonaws.com/0/318326/ea218833-fc17-6b32-3380-53a3f08a7ad3.png)

![cdk06-2-3.png](https://qiita-image-store.s3.amazonaws.com/0/318326/a62f8acc-7a82-767a-48ea-2d8a406e1fab.png)

![cdk06-2-4.png](https://qiita-image-store.s3.amazonaws.com/0/318326/49d1f6a2-1250-edcf-fe9b-b22d8e57c73c.png)

![cdk06-2-5.png](https://qiita-image-store.s3.amazonaws.com/0/318326/f06ce6dc-ccca-0dc2-2114-95b0f7a18f78.png)

![cdk06-2-6.png](https://qiita-image-store.s3.amazonaws.com/0/318326/e791c366-548d-eec2-a2d8-ea308d6657ad.png)

## アプリケーションの設定

選択したADD-ONにより項目は増減する

![cdk07-2-1.png](https://qiita-image-store.s3.amazonaws.com/0/318326/c651a8ad-db8c-a7cb-eb28-f6c31e7966ca.png)

![cdk07-2-2.png](https://qiita-image-store.s3.amazonaws.com/0/318326/ea72a6e7-a716-d4c7-bc8e-e83398de3607.png)

![cdk07-2-3.png](https://qiita-image-store.s3.amazonaws.com/0/318326/8544b6e2-dde0-b5f0-605e-2fb4e6dd0abf.png)

## インストール

選択したADD-ONやアプリケーション設定に応じて、インストールが平行して進められる。

![cdk10-11.png](https://qiita-image-store.s3.amazonaws.com/0/318326/91a917f9-d3cb-d9ca-d3fc-0612189437af.png)

## 異常時

ログのパスが表示されて終了する

![cdk08-1-ng.png](https://qiita-image-store.s3.amazonaws.com/0/318326/94fb70cd-5f10-a811-7e7b-418c31f1cb52.png)

# まとめ

- CDKのインストールを試してみた。
- この手の仕組みにありがちだが、環境ごとにちょっとしたコツがいるようなので、一度練習してからのインストールに結果的になってしまうかも。