Oisix ra daichi Creator's Blog(オイシックス・ラ・大地クリエイターズブログ)

オイシックス・ラ・大地株式会社のエンジニア・デザイナーが執筆している公式ブログです。

初めてのRancher2 - AKSクラスター作成

SREチームのNagaoです。
こちらの投稿はOisix ra daichi Inc. Advent Calendar 2018の21日目の記事です。

先日Rancher JP Meetup in Seattleに参加してきて、急激にRancher熱が高まっているのですが、まったくのド素人なので、この場を借りて入門していきたいとおもいます。

なぜRancher熱が高まっているのか?

オイシックスがkubernetesを使い始めてからずっとクラウド間のレイテンシと向き合っているのですが、どうしてもレイテンシ問題が解決できないケースも今後は出てくるのではないかと考えています。そういったときに既存システムと近い場所にkubernetesを構築する手段としてRancherに期待しています。

また、現在本番環境として「Azure Kubernetes Service」を使っているのですが、クラスタ自体を複数管理する必要がでています。 今後はマルチクラウド/オンプレミス環境でのkubernetes運用も見据えているため、マルチクラスタ管理する方法としてRancherを検討しています。



というわけで以下試した手順です。

1. Rancher環境の準備

本番運用するにはRancher自体をHA構成にしない厳しそうだなと思っていて、少し調べてみたらkubernetes上にRancherを配置する構成をとれるようです。
https://rancher.com/docs/rancher/v2.x/en/installation/ha/
ただ、今回はさっくり入門してみたいので、以下を参考に簡単に作成してみました。
https://rancher.com/docs/rancher/v2.x/en/quick-start-guide/deployment/quickstart-manual-setup/

VMを立ち上げる

VMの作成部分は省略
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

Dockerのインストール

$ sudo yum -y install docker
$ sudo systemctl enable docker
$ sudo systemctl start docker

Rancherの起動

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

確認

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                      NAMES
bef08c1e52af        rancher/rancher     "entrypoint.sh"     56 seconds ago      Up 2 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   kind_heisenberg
2. ServicePrincepalの作成

RancherからAzureを操作するためのServicePrincepalをつくっておく

azure-cliのインストール

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[azure-cli]\nname=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
sudo yum install azure-cli

Azureにログイン

$ az login

サービスプリンシパルを作る

$ az ad app create --display-name "Rancher" --password "client-secret_XXXXXX" --identifier-uris "https://www.oisixradaichi.co.jp"
{
  .....
  "acceptMappedClaims": null,
  "addIns": [],
  "appId": "client-id_XXXXXX",
  .....
  }

$ az ad sp create --id client-id_XXXXXX
{
  .....
  "objectId": "sp_XXXXXX",
  "objectType": "ServicePrincipal",
  .....
}

ロールをあてる

$ az role assignment create --assignee sp_XXXXXX --role Contributor

アカウント情報確認

$ az account list
[
  {
    "cloudName": "AzureCloud",
    "id": "subscription-id_XXXXXX",
    "isDefault": true,
    "name": "xxxxxxxxx",
    "state": "Enabled",
    "tenantId": "tenant-id_XXXXXX",
    "user": {
      "name": "xxxxxx@outlook.com",
      "type": "user"
    }
  }
]
3. kubectlのインストール

以下を参考にインストールしておく
https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl

4. SSH鍵をつくる
$ ssh-keygen -t rsa
5. Rancherログイン

ブラウザで接続。和む。
https://ServerIP

f:id:oitech:20181220182729p:plain
top画面

6. AKSクラスタ作成

クラスタ作成画面からAzureを選択する。 f:id:oitech:20181220183024p:plain

先ほど作成したAzureの情報を入力する。 f:id:oitech:20181220183251p:plain

ノードの設定を決める。 f:id:oitech:20181220184943p:plain

SSH Public Keyはさっき作ったのを貼り付ける。

$cat ~/.ssh/id_rsa.pub

createをクリックするとAKSの構築が始まる。
Azureポータルをのぞいて見ると作成が進んでいるのがみえてたのしい。 f:id:oitech:20181220185555p:plain ちょっとまってると出来上がる f:id:oitech:20181220190316p:plain

7. 接続確認

「Kubeconfig File」を~/.kube/configに保存して接続確認してみる

$ kubectl get nodes
NAME                     STATUS   ROLES   AGE   VERSION
aks-rancher-44262757-0   Ready    agent   25m   v1.11.5
aks-rancher-44262757-1   Ready    agent   25m   v1.11.5
aks-rancher-44262757-2   Ready    agent   25m   v1.11.5

問題なし。

まとめ
  • Rancherを動かすのはとても簡単
  • 既存のkubernetesクラスタを管理下に置く場合や、AKSのオプションを色々追加したい場合は、IMPORT使うとよさそう(次回検証)
  • セキュリティ周りをRancherで制御する方法を引き続き調査する

Oisix ra daichi Creator's Blogはオイシックス・ラ・大地株式会社のエンジニア・デザイナーが執筆している公式ブログです。

オイシックス・ラ・大地株式会社では一緒に働く仲間を募集しています