コンテナレジストリサーバーにコンテナ以外のものを格納する

 コンテナレジストリサーバーにコンテナ以外のものを格納する

OpenShift.Run 2020 SummerのLTで話した内容になります。

A15b71ae6fbdecb3216bdcba552d9a77?s=128

SSSSSSSSSSSSHHHHHHHHHH

September 24, 2020
Tweet

Transcript

  1. コンテナレジストリサーバーにコン テナ以外のものを格納する 原木

  2. 目次 OCI Artifactsについて話します 2 1 成果物管理 成果物管理に関して抱えている課題を共有します 2 OCI Artifacts

    OCI規格と事例について紹介します 3 今後予測しうる技術展開 クラウドプロバイダーやベンダーの動向で 気になったことを取りまとめます
  3. 成果物管理という課題 クラウドネイティブ時代だから起こりうる問題 3

  4. (よくある) クラウドネイティブなCI/CD環境 4 commit アプリケーションの ソースコード 環境設定の ソースコード ビルド &テスト

    開発&テスト 環境 本番環境 ArgoCD Project コンテナ レジストリ リポジトリ の更新 git clone ArgoCDの 実行 https://ibm-cloud-architecture.github.io/cloudpak-for-applications/liberty/ をベースに作成 コンテナイ メージの作成 &ビルド
  5. (粒度をちょっと細かくした) クラウドネイティブなCI/CD環境 5 commit アプリケーションの ソースコード 環境設定の ソースコード ビルド テストレポートの

    出力 コンテナイメージ の作成 コンテナレジスト リへの登録 リグレッション テスト 単体テスト 開発&テスト 環境 本番環境 ArgoCD Project privateコンテナ レジストリ リポジトリ の更新 git clone ArgoCDの 実行 ライブラリ管理1 conftest 機械学習用 推論モデル管理 データプレーン 用プラグイン ライブラリ管理2 publicコンテナ レジストリ
  6. このあたりにトラブルの種が… 6 commit アプリケーションの ソースコード 環境設定の ソースコード ビルド テストレポートの 出力

    コンテナイメージ の作成 コンテナレジスト リへの登録 リグレッション テスト 単体テスト 開発&テスト 環境 本番環境 ArgoCD Project privateコンテナ レジストリ リポジトリ の更新 git clone ArgoCDの 実行 ライブラリ管理1 conftest 機械学習用 推論モデル管理 データプレーン 用プラグイン ライブラリ管理2 publicコンテナ レジストリ 1 2 3
  7. クラウドネイティブ環境における (ダメな)特徴 1. イミュータブルインフラストラクチャ 7 3. マイクロサービス 2. 宣言的設定 “不変”だからこそ、いつでもパブリックリポジトリから

    取得可能…そのコンテナ、賞味期限がありませんか? 何でも宣言するのでgitで履歴管理は万全…その結果、初 心者お断りの構成管理になってませんか? 独立不羈なチーム体制…その結果、サービスごとの成果 物は無秩序に管理していませんか?
  8. クラウドネイティブ環境における 成果物管理の業務要件は(実際)多い 8 ⚫ プライベートリポジトリでパッケージやライブラリを個別 管理したい ⚫ 構成ファイル群を一つのサービスごとにバンドルして管理 したい ⚫

    デプロイ方法はできるだけシンプルにしたい ⚫ 多種多様なサービス=成果物をどんなものでも入れられる ようにしたい ⇒コンテナレジストリサーバーを 成果物管理サービスとして使おう
  9. (成果物管理を集約した) クラウドネイティブなCI/CD環境 9 commit アプリケーションの ソースコード 環境設定の ソースコード ビルド テストレポートの

    出力 コンテナイメージ の作成 コンテナレジスト リへの登録 リグレッション テスト 単体テスト 開発&テスト 環境 本番環境 ArgoCD Project リポジトリ の更新 git clone ArgoCDの 実行 conftest アーティファクトス トア(成果物管理)
  10. OCI ARTIFACTS コンテナレジストリサーバーは 「なんでも入るレジストリ」*1サーバーへ 10

  11. OCI Artifactsとは? 11 ⚫アーティファクト(成果物)をコンテナイ メージと同じ枠組みで格納、配布できるよ うにするための仕様 ⚫Open Container Initiativeによって策定 1.

    アーティファクトの種類の定義方法 – コンテナイメージのmanifestとindex(正確には manifest.config.mediaType)を利用 2. アーティファクトの出し入れ方法 – 配布仕様(Distribution Specification)をコンテナイメー ジと共通化
  12. そもそもコンテナイメージってなんだろ う?(OCI仕様を例に) 12 参考: https://github.com/opencontainers/image-spec/blob/master/spec.md https://github.com/opencontainers/image-spec/blob/master/image-layout.md アーティファクトの種類の定義方法 アーティファクトの出し入れ方法 $ oci-image-downloader

    example.com/app {oci-runtime-bundle-path} ⇒実際にこういうcliツールがあるわけではな い。dockerLikeな操作性が重要。参考実装は 次に紹介するorasを参考のこと
  13. 事例紹介 OCI Artifactsの応用事例について紹介します 13 1 oras OCI Registry As Storage

    2 ormb 機械学習の推論モデルの管理用レジストリ 3 WebAssembly WebAssembly on the server is the future of computing.
  14. oras OCI Registry As Storage 14 ⚫ 元とはhelmをコンテナイメージと同じようにレジストリ サーバーに格納できないかとhelmの開発元である deislabsの人が中心となって開発しているOSS

    ⚫ OCI Artifactsのクライアント側の参照実装 ⚫ コンテナレジストリサーバーを”ブロブストレージ”のよ うに取り扱う仕組み ⚫ orasライブラリという形でも公開されていてwasm-to-oci という後で紹介するツールでも使用されている ⚫ とりあえず、OPAのregoファイルやhelmチャートをコン テナレジストリに格納したい(要は単なるブロブストレー ジとして利用したい)場合は便利。
  15. ormb OCI-based Registry for ML/DL Model Bundle 15 ⚫ ByteDance社の人が中心となって開発しているOSS

    ⚫ コンテナレジストリサーバーを機械学習モデル(推論モデ ル)の配布先として使えるようにするためのクライアント ツール ⚫ サーバー側はHarborが対応済み ⚫ クラウドネイティブ環境における親和性やRBACなどの権 限管理を考えて、Harborを機能拡張して利用することに したとのこと 参考情報: ByteDance社は単に機械学習用モデルをHarborに対応させた、というだけでは なく、アーティファクトの種類が今後増えていったときにProcessorと呼ばれ るコンテナのindexやmanifestファイルの解釈処理をどうやって拡張させる か?といったプロポーザルなども出しているので面白い https://github.com/goharbor/community/blob/master/proposals/enhanced- default-processor.md
  16. WebAssembly on the server is the future of computing. 16

    ⚫ Dockerの創業者Hykesさんによるtweet ⚫ “WebAssemblyは、ウェブブラウザのクライアントサイド スクリプトとして動作するプログラミング言語(低水準 言語)”でしたが、昨今ではサーバーサイドでの利用が目 されている ⚫ Wasmが近い将来、LinuxContainerやWindowsContainerなど とならんで実行される未来が来た場合、現状普及してい るKubernetes&コンテナランタイム環境というエコシステ ムを流用する可能性が高い(私見) ⚫ その未来が来たときにコンテナと同じようにwasmを扱う krustletやWebAssemblyHubが活躍する日も近い https://twitter.com/solomonstre/status/1111004913222324225
  17. Krustlet と WebAssemblyHub 17 ⚫ Krustlet: deislabsが中心となって開発しているk8sのエコ システム上でwasmを実行するための仕組み – https://www.publickey1.jp/blog/20/kuberneteswebasssemblykrustl

    et.html – https://www.slideshare.net/shihoasa/krustlet101 ⚫ WebAssemblyHub: solo.io社が中心となって開発してい る、Envoy用のWebFilterの配布サービス ⚫ mediaType=“OCI Artifactsの種類”を見る限り、どうみて も別物 今後が不安…
  18. 今後予測しうる技術展開 18

  19. 動向紹介 OCI Artifactsの応用事例について紹介します 19 1 ソースコード管理がOCI Artifactsを実装 GitLab/GitHubの事例から 2 クラウドプロバイダーがサービスを充足

    コンテナレジストリサービスの発展形 3 k8s&コンテナランタイム環境との 親和性の高いサービスの要素として登場(予想)
  20. ソースコード管理がOCI Artifactsを実装 20 commit ビルド テストレポートの 出力 コンテナイメージ の作成 コンテナレジスト

    リへの登録 リグレッション テスト 単体テスト 開発&テスト 環境 本番環境 ArgoCD Project リポジトリ の更新 git clone ArgoCDの 実行 conftest アーティファクトス トア(成果物管理) アプリケーションの ソースコード 環境設定の ソースコード
  21. クラウドプロバイダーによるサポート 21

  22. ⚫K8s&コンテナランタイム環境とのより高 次元での統合 – OPAのConftest/Gatekeeperは現在コンテナレジストリサーバーから直接デプロイ できるように開発中 https://github.com/open-policy-agent/opa/issues/1464 – 参考事例: dockerコマンドと各クラウドプロバイダーのコンテナレジストリサー バーとの統合

    ⚫OCI Artifacts Hub(予想) – 今後も様々なmediaType…派生型OCIイメージが出てくる ⇒一括管理できるサービスの登場 k8s&コンテナランタイム環境との親和性 の高いサービスの要素として登場(予測) 22
  23. 振り返り OCI Artifactsについて本日は紹介しました 23 1 成果物管理 クラウドネイティブ環境でありがちな 成果物管理の課題をOCI Artifactsが解決することを 説明しました。

    2 OCI Artifacts OCI Artifactsと事例について紹介しました。 3 今後予測しうる技術展開 Kubernetesとコンテナレジストリサーバーという プラットフォームが前提&親和性の高いサービス が発展するはず。
  24. 参考文献その1 24 ⚫ OCI Artifacts – https://github.com/opencontainers/artifacts – OCI Artifactsの仕様書に関するリポジトリ

    ⚫ New OCI Artifacts Project – https://opencontainers.org/posts/blog/2019-09-10-new-oci-artifacts-project/ – Open Container Initiativeによる新規プロジェクト “OCI Artifacts”開始の案内(2019年9月) ⚫ Cloud Native Artifact Registries evolve from Docker Container Registries – https://stevelasker.blog/2019/01/25/cloud-native-artifact-stores-evolve-from-container-registries/ – AzureのProgram ManagerのSteve Laskerさんによる”コンテナレジストリの進化”について説明した記事 – 下記の記事も非常に理解の参考になります。 – https://stevelasker.blog/2019/05/11/authoring-oci-registry-artifacts-quick-guide/ – https://stevelasker.blog/2019/08/25/oci-artifacts-and-a-view-of-the-future/ – https://stevelasker.blog/2020/02/17/registry-namespace-repo-names/ ⚫ OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう! – https://www.slideshare.net/KoheiTokunaga/ociv2 – NTT ソフトウェアイノベーションセンタの徳永さんによる2019年6月のOCI動向に関する資料(2019年6月) この資料で2p分に簡潔で分かりやすくまとめられた内容を膨らましたのが本資料… 基本的にこちらの資料で説明されていた状況が昨今に至るまで踏襲されているといえる。 ⚫ Distributing WebAssembly modules using OCI registries – https://radu-matei.com/blog/wasm-to-oci/ – OCIレジストリサーバーをwasmの格納先として活用するための概念実証事例。 実際にこの後、krustletやEnvoyのwasmプラグインのデプロイサーバーとして活用されるようになる。
  25. 参考文献その2 25 ⚫ OCI Artifacts(ブログ) – https://medium.com/@jzelinskie/oci-artifacts-f5f3b4ef2889 – CoreOS社(現在はRed Hat社の一部/OpenShift

    v3からk8sベースに代わり、大きく成長した立役者)の中の 人によるRed Hat QuayとOCI Artifactsのかかわりについて説明した記事 – Kubesprayのオリジナルを作成したAntoine Legrandさんによって、OCI Artifactsの仕様が固まるずっと前 からDockerレジストリプロトコルを拡張してコンテナ以外のArtifactsもサポートするビジョンが見えていた よという話 – 記事にもあるが、このプロジェクト…AppRegistryはPythonで書かれていたことなどもあり、自然消滅して しまったらしい https://github.com/app-registry – 時代は早すぎた!というのもあるが、OCI Artifactsの仕様を見る限りではdeislabsの意向が強く反映されてい るので、仕様調整でコミュニティの協力が得られなかったのかもしれない(私見: 過去のIssueやOCIの議事録 を拝見させていただいたが単純に言い切れるほどには読み切れなかった)。 – このブログ記事の後、VMware Harbor Registry, Red Hat Quay, クラウドプロバイダーの各コンテナレジ ストリサーバーがOCI Artifactsに対応したのは周知の事実である。 ⚫ OpenContainerInitiative – https://opencontainers.org/community/overview/ – コンテナイメージ、コンテナイメージの配布仕様に関する標準仕様策定を進めるコミュニティ。
  26. 参考文献その3 26 ⚫ OCI Artifact Support In Amazon ECR –

    https://aws.amazon.com/blogs/containers/oci-artifact-support-in-amazon-ecr/ – AWSのECRがOCI Artifactをサポートしたという記事。 – 著者のMichael Hausenblasさんは元RedHat社(=CoreOS社)のContainerSecurity周りやKubernetes Operator関連 で精力的に活動されている方 ⚫ Harbor is extending its reach with key image distribution features and support for Machine Learning artifacts – https://goharbor.io/blog/harbor-extending-its-reach/ – http://gaocegege.com/Blog/ormb – HarborがByteDance社と協力して機械学習モデルを格納・配布できるようになったという記事 – ByteDance社は、 クラウドネイティブ機械学習プラットフォームのCleverを展開しているCaiyun Technology 社を直近で買収しており、k8s&コンテナランタイム環境上で機械学習の推論モデルをSaaS環境として展開し ようとしている