デブサミ2020【13-B-5】Best Practices In Implementing Container Image Promotion Pipelines -知っておくべきコンテナイメージ・プロモーションの方法 #devsumiB #devsumi

Baruch Sadogursky[JFrog] https://event.shoeisha.jp/devsumi/20200213/session/2347/ Developers Summit 2020の講演資料・参加レポート一覧: https://codezine.jp/article/detail/11981
devsumi デブサミ デブサミ2020
0
comefigo @Xeon9900
席でカエルちゃんたちが待ってくれます🐸 #devsumiB #JFrog pic.twitter.com/Wbsg7JUguS
拡大
cojohnny @cojohnny1
全部の座席にカエルが置いてあったw いいなーJFrog #devsumi #devsumiB pic.twitter.com/Qy0GqCK1S0
拡大
hiroisojp @hiroisojp
Best Practices In Implementing Container Image Promotion Pipelines -知っておくべきコンテナイメージ・プロモーションの方法の資料はここにあるよ。とのこと。 jfrog.com/shownotes/ #devsumi #devsumiB
Shinji Matsumoto @smatsumt
Best Practicies in implementing container image promotion pipelines jflog.com/shownotes CI/CD開発用から本番までのPromotion Pyramid 。 Dockerにより、docker buildで環境を作れる。しかし下手なDockerfileの書き方は色々問題を引き起こす。 #devsumiB
Shinji Matsumoto @smatsumt
バージョン指定をしないこと。 バージョン指定してもセキュリティパッチなどでイメージ変わることもある。 チェックサム指定で完全に固定できる。読みにくいが。 #devsumiB
ogady @gadyma
dockerでただOSバージョンを固定するだけでも不十分である。なぜならパッチが当たったらまた違うイメージになってしまう。 それを保証できない。。。 #devsumiB
comefigo @Xeon9900
バージョン管理はDockerに限った話じゃない気がする #devsumiB
SAKON @sakon310
壁が必要だで、某大統領が出てくるプレゼンw #devsumiB event.shoeisha.jp/devsumi/202002…
hiroisojp @hiroisojp
Dockerは、非常にパワフル、簡単に利用することができる。 ビルドのアーティファクトをプロモーションするのではなく、DockerFileをプロモーションすればよい。アーティファクトのプロモーションより楽。 (容量がでかいアーティファクトよりも)gitでコントロールできる。 #devsumi #devsumiB
hiroisojp @hiroisojp
ただし、DockerFileの書き方は気をつける必要がある。 イミュータブルに保つ必要がある。 #devsumi #devsumiB
hiroisojp @hiroisojp
例えば、 FROM ubuntu ではダメ。 バージョンつける? 同じバージョンでもセキュリティパッチでイメージは変わることがある。 チェックサムをつける? 一意的なことは確認できるが、チェックサムがそのバージョンを示しているかを確認するのが大変。 #devsumi #devsumiB
Shinji Matsumoto @smatsumt
ビルド時にネットからファイルをとること。 ビルドするタイミングで中身が違ってしまう可能性がある。 開発と本番をどう切り離すか。オプション1、LABELを使う。 2、Dockerリポジトリで分ける。3、Dockerレジストリを分ける。 レジストリを分ければ同じ名前でそれぞれの環境を対応させれる #devsumiB
hiroisojp @hiroisojp
Dockerに METADATA TAGをつける。DOCKER REPOSITORYを使う。 環境ごとにレジストリを分ける。 #devsumi #devsumiB
SAKON @sakon310
分けるのか。分けてお互い干渉できないようにする。 #devsumib pic.twitter.com/CkKrbxlbDU
拡大
hiroisojp @hiroisojp
Dockerがイメージへの参照をどのようにしているかの理解が必要。 docker tag host:port/busybox は https://host:port/v2/busybox のようにマッピングされる。 このURLを環境によってリダイレクトして適切なものを返す? #devsumi #devsumiB
SAKON @sakon310
gifがいちいち面白いんだが、果たしてこのまま資料公開されるのかな?#devsumiB twitter.com/sakon310/statu… pic.twitter.com/fpuGr8NUz0
拡大
hiroisojp @hiroisojp
このように環境ごとのコントロールするのは大変。 そこでjfrogのコンテナレジストリがそれをサポートする。 #devsumi #devsumiB
Shinji Matsumoto @smatsumt
Dockerタグの構造。レジストリとタグ、併用すると組み合わせがややこしくなる。 そこで、バーチャルホストを使って関係をシンプルにする。 (?) タグを逐一打つの、手間がかかる。CI側で自動的にpromoteするようにする。 #devsumiB
Shinji Matsumoto @smatsumt
開発者からは単一の仮想Dockerリポジトリのみを扱えば良い。 デプロイ環境からはステージごとに独立したDockerリポジトリがあり、分離ができる。 #devsumiB
hiroisojp @hiroisojp
latestを使いたい場合は、latestにプロパティを追加する。 docker.refersTo = 26 のようにして、バージョンをトラッキングできるようにする。 #devsumi #devsumiB
hiroisojp @hiroisojp
Docker以外の依存関係については? 使い方にもよるが、jfrogのツールでは、docker-remote-cacheや任意のファイル(jdk,tomcatのファイルなど)を管理することができる。(わかっているリソースから使うことができる) #devsumi #devsumiB
hiroisojp @hiroisojp
ビルドは一回だけ、環境はそれぞれにわける、依存関係は自分で管理する。 #devsumi #devsumiB
ogady @gadyma
Dockerで環境構築デプロイするとき - buildは一回だけ - 環境は分ける - ビルドしたものをプロモートする - 自分の依存関係は自分で管理する #devsumiB
Shinji Matsumoto @smatsumt
外部の依存関係は?別途、依存ソフトを取っておく場所を確保して、パッケージ管理ソフトはそっちを見るようにする。依存関係のファイルも自分で管理する。 (バージョン、依存関係管理、ちゃんと固定するの大事だと思いつつ、セキュリティ周りの更新とか面倒だなぁとも💦) #devsumiB
残りを読む(1)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする