CI/CDデモ環境構築作業メモ その1
ちょっとしたデモやテストに使えるような、ローカルPC単独で使えるデモ環境を作ることにした。
躊躇なく汚したり壊したりできるように、仮想マシンの中に全ての機能を押し込んで構築する。
Linux仮想マシンを一つ用意し、CI/CDツールはすべてDockerコンテナで用意、ランタイム環境にはMinikubeを使用する構成にした。
完成形イメージ
CI/CD環境については、ソースリポにGitLab、CIツールはJenkins、アーティファクトリポにJFrog、その他Dockerイメージレジストリと開発者用コンソールにそれぞれコンテナを用意する。
JenkinsのコンテナについてはKubernetes環境を操作できるようkubectlとその他Ansibleやmavenなど入れておいてもいいかも。
CentOS環境の準備
Linux仮想マシンは、手元のVMWare fusionに、過去にKVMを設定したCentOSイメージを使用した。
# cat /etc/centos-release CentOS Linux release 7.1.1503 (Core)
CentOSのインストールとKVMの設定はここでは割愛。
IPフォワードの設定
実際の操作にあたっては母艦のブラウザからCentOSのIP経由でDockerコンテナにアクセスするため、CentOSのIPフォワードを有効にしておく。 /etc/sysctl.confに1行追加しネットワークサービスを再起動。
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
# systemctl restart network
正しく設定されると、/proc/sys/net/ipv4/ip_forward
が1
に書き換わる
CentOSへのDockerインストール
ドキュメント に従い、Dockerリポジトリを追加
2017年3月17日追記
上記オフィシャルドキュメントが作業時点から書き換わっているおり、現時点では以下のコマンドでは作業できない。オフィシャルドキュメントに従ってください…
# yum-config-manager --add-repo \ https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo
リポジトリキャッシュの更新
# yum makecache fast
Dockerエンジンインストール
# yum install docker-engine
Dockerデーモンの有効化、開始
# systemctl enable docker
# systemctl start docker
確認
# docker version
# docker run hello-world
# docker ps -a
Minikubeのインストール
[ドキュメント] (https://github.com/kubernetes/minikube/blob/master/DRIVERS.md#kvm-driver)に従いkvm-driverをインストール
今回はMinikubeが使用する仮想プラットフォームにKVMを使用するため、まずKVM用のドライバをインストールする。
# curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.7.0/docker-machine-driver-kvm ¥
-o /usr/local/bin/docker-machine-driver-kvm
# chmod +x /usr/local/bin/docker-machine-driver-kvm
# yum install libvirt-daemon-kvm
[minikubeインストール] (https://github.com/kubernetes/minikube/releases)
# curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.16.0/minikube-linux-amd64
# chmod +x minikube
# mv minikube /usr/local/bin/
[kubectlインストール] (https://kubernetes.io/docs/user-guide/prereqs/)
# curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
常に最新バージョンをダウンロードするためにcurlが入れ子になっている
# chmod +x kubectl
# mv kubectl /usr/local/bin
minikube起動および確認
Minikubeの仮想環境にKVMを使用しているため--vm-driverオプションにkvmを指定して起動する。
# minikube start --vm-driver=kvm
確認
# kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
# kubectl expose deployment hello-minikube --type=NodePort
# kubectl get pod
ダッシュボードURLを確認
# minikube dashboard --url
このコマンドにより、minikubeがKVM上に起動する仮想マシンのIPアドレスを確認できる。
仮想マシンにはデフォルトでdockerユーザが作成されており、SSHを使用してパスワードtcuserでログインできる。
SSH接続は、IPアドレスやパスワードがわからなくても、minikube ssh
コマンドで可能
minikubeのインストールと確認にあたっては[minikubeでローカルKubernetesクラスタを5分でつくる方法] (http://qiita.com/mumoshu/items/8f55ee830d8e5c172dd4)も参考にさせていただいた。
疎通確認
pingを使って簡単な疎通確認をしておく。
CentOS <-> Docker Container
CentOS <-> minikube VM
Docker Container <-> minikube VM
つづく?