tectonic で kubernetes クラスタを構築・管理する(AWS)
概要
tectonic で AWS に kubernetes クラスタを構築する。
対応プラットフォーム(2017.06.09 時点)
- AWS
- Bare Metal
- Microsoft Azure (alpha)
- OpenStack (pre-alpha)
料金
- 10ノードまで無料
環境
インストーラを実行した環境
- Amazon Linux AMI 2017.03
- tectonic 1.6.4
事前準備
セットアップ前に必要な作業
- CoreOS
- CoreOS アカウントサインアップ
- CoreOS License 取得 (tectonic-license.txt)
- Secret 取得 (config.json)
- AWS
- IAM Role 設定 (Policy)
- Route 53 でパブリックホストゾーンの作成
tectonic のインストーラー取得
ダウンロード・解凍
$ wget https://releases.tectonic.com/tectonic-1.6.4-tectonic.1.tar.gz
$ tar xzvf tectonic-1.6.4-tectonic.1.tar.gz
$ cd tectonic
tectonic セットアップ (GUI)
インストーラー起動
$ ./tectonic-installer/linux/installer -address=0.0.0.0:4444 -open-browser=false
Starting Tectonic Installer on 0.0.0.0:4444
ブラウザで インストーラーを起動したホストIPアドレス:4444 にアクセスして、画面に従いセットアップする
tectonic セットアップ (terraform)
インストーラーの環境設定
$ export INSTALLER_PATH=$(pwd)/tectonic-installer/linux/installer
$ export PATH=$PATH:$(pwd)/tectonic-installer/linux
terraform 環境設定
$ sed "s|<PATH_TO_INSTALLER>|$INSTALLER_PATH|g" terraformrc.example > .terraformrc
$ export TERRAFORM_CONFIG=$(pwd)/.terraformrc
cluster resources 取得
$ terraform get platforms/aws
credential を環境変数に設定
$ export AWS_ACCESS_KEY_ID=AK***************
$ export AWS_SECRET_ACCESS_KEY=**************************************
$ export AWS_REGION=ap-northeast-1
クラスタ設定
クラスタ名を設定
$ export CLUSTER=cluster-1
クラスタ環境設定
$ mkdir -p build/${CLUSTER}
$ cp examples/terraform.tfvars.aws build/${CLUSTER}/terraform.tfvars
terraform 環境設定
build/cluster-1/terraform.tfvars
tectonic_admin_email = "********************" #tectonic console ログインID
tectonic_admin_password_hash = "*************" #ログインパスワード※
tectonic_aws_az_count = "1"
tectonic_aws_region = "ap-northeast-1"
tectonic_aws_ssh_key = "************" #AWS に登録した Key pair
tectonic_base_domain = "*************" #Route 53 に登録したドメイン
tectonic_cluster_name = "cluster-1" #クラスタ名
tectonic_license_path = "/path/to/tectonic-license.txt" #事前に取得した CoreOS Lisence
tectonic_pull_secret_path = "/path/to/config.json" #事前に取得した CoreOS Secret
tectonic_worker_count = "2" #worker ノード数
※ tectonic_admin_password_hash
は bcrypt で hash 化する (bcrypt-hash tool)
$ wget https://github.com/coreos/bcrypt-tool/releases/download/v1.0.0/bcrypt-tool-v1.0.0-linux-amd64.tar.gz
$ tar zxvf bcrypt-tool-v1.0.0-linux-amd64.tar.gz
$ ./bcrypt-tool/bcrypt-tool
Enter password:
Re-enter password:
$2a$10$*****************************************************
plan 実行
$ terraform plan -var-file=build/${CLUSTER}/terraform.tfvars platforms/aws
Plan: 116 to add, 0 to change, 0 to destroy.
クラスタをデプロイ
apply 実行
$ terraform apply -var-file=build/${CLUSTER}/terraform.tfvars platforms/aws
クラスタへのアクセス
作成された kubeconfig を読み込み
$ export KUBECONFIG=generated/auth/kubeconfig
クラスタ確認
$ kubectl cluster-info
Kubernetes master is running at https://cluster-1-api.***.****.jp:443
KubeDNS is running at https://cluster-1-api.***.****.jp:443/api/v1/proxy/namespaces/kube-system/services/kube-dns
ノード確認
$ kubectl get node
NAME STATUS AGE VERSION
ip-10-0-22-59.ap-northeast-1.compute.internal Ready 4m v1.6.4+coreos.0
ip-10-0-37-60.ap-northeast-1.compute.internal Ready 2m v1.6.4+coreos.0
ip-10-0-52-127.ap-northeast-1.compute.internal Ready 1m v1.6.4+coreos.0
tectonic console にアクセス
ブラウザで https://{{ tectoniccluster_name }}.{{ tectonic_base_domain }}/ にアクセス
設定したログインID、パスワードでログインする