spread로kubernetes에 mattermost 용기를 배치해 보세요!

1. 하고 싶은 일


Docker 컨테이너를 이용한 배포 툴을 찾는다면 kubernetes 및 AWS의 ECS를 참조하십시오.
내부의 원본도 읽을 수 있기 때문에 쿠베르네츠 씨를 만져보았지만 Pods, Services, Replication Controllers 등의 설정이 많아서 조금 간단한 느낌은 좋지 않았습니다.
그렇다면 좋은 도구가 있을까요? 찾다가 다음 두 가지를 발견했습니다.
  • spread
  • helm
  • 둘 다 같은 일을 할 수 있지만 전에 발견한spread를 시험해 보기로 했어요.

    2. 구현 단계

  • AWS의 단일 사례에서 k8s 서비스 구축
  • 옆에 있는 MacOS에서kubectl을 다운로드하고 경로를 통해 AWS와 k8s의 연결을 설정
  • MacOS에 spread 설치
  • gitclone에서mattermost의spread에 대한 정의
  • 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
    

  • kubernetesgit clone을 진행합니다.
  • git clone https://github.com/kubernetes/kubernetes
    cd kubernetes
    
  • hack/local-up-cluster.sh의 localhost127.0.0.10.0.0.0 로 변경합니다.
  • etcd통과PATH.
  • export PATH=$PATH:/path/to/etcd
    
  • cluster/kubectl.sh에서 서버 주소를 설정합니다.
  • 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. git clone에서 mattermost로 정의spread

    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
    
  • 웹 브라우저에서 작성되었는지 확인

  • 움직이는 것 같아.

    4. 느끼는 것

  • kubernetes의 환경과 설정 파일 그룹이 옆에 있으면 간단한 명령행 도구로 사용할 수 있습니다.
  • 어쨌든 GUI에서kubernetes가 사용하는 Pods, SVC, RC 등yml('-'*)
  • 을 생성하는 yed 도구를 원합니다.
  • helm은 k8s의github의README에도 기록되어 있는데 이것이 주류죠.한번 보고 싶어요.
  • spread의 원본 코드는 k8s를 두드리는api처럼 간단하게 만들어져서 같이 보고 싶어요.
  • 5. 참조

  • etcd 설치 설명
  • kubernetes의 설치 절차
  • Docker로 Slack Lack의 mattermost를 간단히 이동해 보세요!
  • Slack 클론을 사용한 Mattermost - 가져오기, 초기 설정편 -
  • kubernetes 설정 서비스
  • 오늘은 이만 마치겠습니다.

    좋은 웹페이지 즐겨찾기