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 설정 ( 정책 )
  • 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 환경 설정


    $ vi 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, 비밀번호로 로그인

    좋은 웹페이지 즐겨찾기