$30 off During Our Annual Pro Sale. View Details »

Orbsを使ってAWSへ簡単デプロイ

Kim, Hirokuni
February 23, 2019
1.4k

 Orbsを使ってAWSへ簡単デプロイ

JAWS Days 2019での登壇資料

Kim, Hirokuni

February 23, 2019
Tweet

Transcript

  1. 1
    Orbsを使ってAWSへ簡単デ
    プロイ
    #jawsdays #circlecijp

    View Slide

  2. 2
    イントロダクション

    View Slide

  3. 3
    宣伝 (会社)
    ● 日本語サポート
    ● ドキュメントの日本語化
    ● ユーザーコミュニティー
    CircleCI初の海外支社
    @CircleCIJapan

    View Slide

  4. 4
    自己紹介:
    Kim, Hirokuni (金 洋国)
    - 元CircleCI 開発者
    - CircleCI Japan Tech Lead
    ”この発言は個人の見解ではなく所属する組
    織を代表しています”

    View Slide

  5. 5
    宣伝 (個人)
    電動キックボードを体験できるサービス Hop-on! を運営
    ● 日本で唯一のサービス(のはず)
    ● “みなとみらい” “電動キックボード” 検索
    ● 続きは https://www.hop-on.jp/ で!

    View Slide

  6. 6
    解決したい問題

    View Slide

  7. 7
    その前に: CircleCIの思想
    ● コンフィグはファイルに書かれるべき
    ● 明示的であるべき
    ● No Magic!
    デメリット
    - 1から設定を書かないといけない
    - 冗長になる

    View Slide

  8. 8
    CircleCIとAWSを連携するのは色々大変

    View Slide

  9. 9
    AWS連携の問題
    ● aws cliちゃんとインストールしたり...
    ● docker loginでecrにログインしないとだったり...
    ● 手動でaws CLIをバシバシ叩かないといけない...
    ● 同じようなプロジェクトが複数あると大変

    View Slide

  10. 10
    解決方法

    View Slide

  11. 11
    CircleCI Orbsを使おう

    View Slide

  12. 12
    Orbsとは?
    ● コンフィグのパッケージ機構
    ● プロジェクトをまたいで共有可能
    ● 誰でも登録して使える

    View Slide

  13. 13
    Orbsレジストリ
    Orbsの種類
    - Certified (CircleCI)
    - Partner (CircleCI認定パートナー)
    - 3rd Party (その他)
    https://circleci.com/orbs/registry

    View Slide

  14. 14
    Demo

    View Slide

  15. 15
    デモイメージ
    http://kim-app2-612788733.us-ea
    st-1.elb.amazonaws.com/

    View Slide

  16. 16
    準備: 環境変数の設定
    APIキーとパスを環境変数から登録しておく

    View Slide

  17. 17
    ECRへDockerイメージのデプロイ
    version: 2.1
    orbs:
    aws-ecr: circleci/[email protected] # ECRのOrbをインポート
    workflows:
    build-and-deploy:
    jobs:
    - aws-ecr/build_and_push_image: # 用意されているジョブにパラメータを渡して呼ぶ
    account-url: AWS_ECR_ACCOUNT_URL # ECRのアカウントの環境変数
    repo: 'nginx' # イメージのレポジトリ
    tag: '${CIRCLE_SHA1}' # イメージのタグにコミットのSHAを使う
    https://github.com/kimh/picard-test/blob/jaws-days/.circleci/config.yml

    View Slide

  18. 18
    ECSへサービスのデプロイ
    version: 2.1
    orbs:
    ...
    aws-ecs: circleci/[email protected] # ECSのOrbをインポート
    workflows:
    build-and-deploy:
    jobs:
    - aws-ecr/build_and_push_image:
    ...
    - aws-ecs/deploy-service-update: # 用意されているジョブにパラメータを渡して呼ぶ
    requires:
    - aws-ecr/build_and_push_image # 最初にnginxイメージをビルド
    family: 'kim-app-nginx' # ECSのタスク定義
    cluster-name: 'default-kim5' # ECSのクラスター名
    # タスクで使うコンテナイメージを指定
    container-image-name-updates:
    'container=nginx,image-and-tag=833371238208.dkr.ecr.us-east-1.amazonaws.com/nginx:${CIRCLE_SHA1}'
    https://github.com/kimh/picard-test/blob/jaws-days/.circleci/config.yml

    View Slide

  19. 19
    結果
    370 → 20

    View Slide

  20. 20
    結果
    コンフィグの削減量
    370行 → 20行
    展開されたコンフィグは https://circleci.com/gh/kimh/picard-test/3219#config/containers/0 で確認できます

    View Slide

  21. 21
    まとめ

    View Slide

  22. 22
    まとめ
    ● AWSのOrbsでECR/ECSへのデプロイが簡単に
    ● コンフィグの量を劇的にコンパクトにできる
    ● Orbsは誰でも登録して使える

    View Slide

  23. 23
    CircleCI ユーザーコミュニティーのご紹介
    FB Community Group
    @CircleCIJapan

    View Slide

  24. 24
    Orbsの由来
    Orb (オーブ)

    View Slide

  25. 25
    Orbsの由来
    Orb (オーブ) 丸い

    View Slide

  26. 26
    Orbsの由来
    Orb (オーブ) 丸い Circle

    View Slide

  27. 27
    お後がよろしいようで

    View Slide