LoginSignup
6
4

More than 5 years have passed since last update.

spreadを使ってkubernetesにmattermostのコンテナをデプロイしてみよう!

Last updated at Posted at 2016-03-10

1. やりたいこと

Dockerコンテナを利用したデプロイングツールって何かあるのかなー、と探してるとkubernetesやAWSのECSに行き当たります。

内部のソースも読むことも可能、ということでkubernetesさんに触ってみたのですが、Pods, Services, ReplicationControllers等の設定が多くてちょっとお手軽感があまりないような。。
ということで良さげなツールないかなー、と、探していたら以下の2つを見つけました。

どちらも同じことが出来そうですが、先に見つけたspreadの方を試してみることにしました。

2. 実施手順

  1. AWSのシングルインスタンスに、k8sのサービスを構築する
  2. 手元のMacOSにkubectlをダウンロードしてパスを通し、AWSのk8sへの接続設定をする
  3. 手元のMacOSにspreadをインストールする
  4. mattermost用のspreadの定義をgitからcloneする
  5. spred deployコマンドを利用してmattermostをデプロイする

3. 実施詳細

3-1. AWSのシングルインスタンスに、k8sのサービスを構築する

  • etcdをインストールします。
curl -L  https://github.com/coreos/etcd/releases/download/v2.3.0-alpha.1/etcd-v2.3.0-alpha.1-darwin-amd64.zip -o etcd-v2.3.0-alpha.1-darwin-amd64.zip
unzip etcd-v2.3.0-alpha.1-darwin-amd64.zip
cd etcd-v2.3.0-alpha.1-darwin-amd64
git clone https://github.com/kubernetes/kubernetes
cd kubernetes
  • hack/local-up-cluster.sh の中のlocalhost及び127.0.0.10.0.0.0に書き換えます。

  • etcdPATHに通します。

export PATH=$PATH:/path/to/etcd
  • cluster/kubectl.shで、serverのアドレスを設定します。
cluster/kubectl.sh config set-cluster local --server=http://*.*.*.*:8080 --insecure-skip-tls-verify=true
  • k8sを起動します。
hack/local-up-cluster.sh

3-2. 手元のMacOSにkubectlをダウンロードしてパスを通し、AWSのk8sへの接続設定をする

  • kubectlをダウンロードします
export K8S_VERSION=1.2.0-alpha.7
wget http://storage.googleapis.com/kubernetes-release/release/v${K8S_VERSION}/bin/linux/amd64/kubectl

export PATH=$PATH:`pwd`
  • kubectlでAWS上のk8sのIP設定をする
kubectl config set-cluster local --server=http://*.*.*.*:8080 --insecure-skip-tls-verify=true

3-3. 手元のMacOSにspreadをインストールする

ここはREADMEにある通りコマンド二発で実施できました^^

sudo brew tap redspread/spread
sudo brew install spread

3-4. mattermost用のspreadの定義をgitからcloneする

git clone https://github.com/redspread/kube-mattermost.git
cd kube-mattermost

3-5. spred deployコマンドを利用してmattermostをデプロイする

  • .k2e/app-service.ymlで、portsとexternalIpsを編集する
k2e/app-service.yml
apiVersion: v1
kind: Service
metadata:
  name: mattermost-app
spec:
  selector:
    app: mattermost-app
  ports:
  - name: http
    protocol: TCP
    port: 8081
    targetPort: 80
  externalIPs:
    - *.*.*.*
    - x.x.x.x
  • spread deploy ./ を実施する
spread deploy ./
  • 作成できたかkubectlで確認してみる
kubectl get services
NAME             CLUSTER-IP   EXTERNAL-IP                  PORT(S)     SELECTOR              AGE
kubernetes       10.0.0.1     <none>                       443/TCP     <none>                1h
mattermost-app   10.0.0.100   *.*.*.*,x.x.x.x   8081/TCP    app=mattermost-app    4s
nginx            10.0.0.27    *.*.*.*,x.x.x.x   80/TCP      name=nginx            5m
redis-sentinel   10.0.0.234   <none>                       26379/TCP   redis-sentinel=true   45m
  • 作成できたかWebブラウザで確認してみる

スクリーンショット 2016-03-10 10.18.13.png

動いているみたいですね^^

4. 所感

  • kubernetesの環境や設定ファイル群が手元にあるのであれば、お手軽なコマンドラインツールとして利用するのはアリだと思いました。
  • どちらかというとGUIでkubernetesで利用するPods, SVC, RC等のymlを生成してくれるyed的なツールがほしい('-'*)
  • helmの方は、k8sのgithubのREADMEにも載ってたしこっちのが主流なのかな。ちょっと見てみたいです。
  • spreadのソースコードはk8sのapiを叩いてる、というシンプルな作りなのでがっつり見てみたいです。

5. 参考


本日は以上となります。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4