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