Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Project Quay
Search
Hirofumi Kojima
April 27, 2020
Technology
0
860
Project Quay
OpenShift Meetup Tokyo #8 で紹介した資料
Hirofumi Kojima
April 27, 2020
Tweet
Share
More Decks by Hirofumi Kojima
See All by Hirofumi Kojima
DockerユーザのためのPodman/Buildah with Red Hat Enterprise Linuxを利用したコンテナアプリケーション開発
kouxyz21
1
4.5k
Other Decks in Technology
See All in Technology
ゼロから始めるSREの事業貢献 - 生成AI時代のSRE成長戦略と実践 / Starting SRE from Day One
shinyorke
PRO
0
240
Webの技術とガジェットで那須の子ども達にワクワクを! / IoTLT_20250720
you
PRO
0
130
An introduction to Claude Code SDK
choplin
3
3.3k
今日からあなたもGeminiを好きになる
subaruhello
1
590
Power Automate のパフォーマンス改善レシピ / Power Automate Performance Improvement Recipes
karamem0
0
190
DatabricksのOLTPデータベース『Lakebase』に詳しくなろう!
inoutk
0
110
Building GoReleaser - from shell script to paid product
caarlos0
0
270
2025/07/22_家族アルバム みてねのCRE における生成AI活用事例
masartz
2
110
Jitera Company Deck / JP
jitera
0
150
AIを使っていい感じにE2Eテストを書けるようになるまで / Trying to Write Good E2E Tests with AI
katawara
3
1.7k
AI工学特論: MLOps・継続的評価
asei
10
1.6k
Wasmで社内ツールを作って配布しよう
askua
0
130
Featured
See All Featured
Designing for humans not robots
tammielis
253
25k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
How to train your dragon (web standard)
notwaldorf
96
6.1k
Building an army of robots
kneath
306
45k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Making Projects Easy
brettharned
116
6.3k
Become a Pro
speakerdeck
PRO
29
5.4k
Transcript
#openshiftjp Project Quayを使ってみよう 2020/04/27 OpenShift Meetup Tokyo #8 Hirofumi Kojima
(@kouxyz21) 1
#openshiftjp 目次 • Quayとは? • Quayの種類 • Project Quayを使ってみよう!! ◦
Fedora編 (Podman) ◦ OKD4編 • Red Hat Quayを試してみる (参考) 2
#openshiftjp お願い事項 • 個人の見解であり、所属する組織の公式見解ではありません • 他社製品についての言及もありますが、動作を保証するものではありません。本ス ライドに記載してある情報は、Red Hat公式情報ではなく、参考情報であるとご認識 ください。 •
こうしたらいいよ!改善情報はどしどしツイート、コメントください 3
#openshiftjp 自己紹介 • 名前: 小島 啓史 (コジマ ヒロフミ) / @kouxyz21
• 所属: レッドハット株式会社 ◦ ソリューションアーキテクト (東日本地区のパートナー企業担当のプリセールス ) ◦ 主にLinux/Ansible/OpenShift などを推進 • 最近のパブリックな活動 ◦ OpenShift ウェビナーシリーズを話したり … ◦ Ansible/OpenShiftのブログ記事/小冊子書いたり… ◦ Software Designの連載記事を担当したり … ▪ 2020年6月号から始まるFedora連載の初回記事を担当しました!! ▪ Fedoraディストリビューションの特徴を、リレー形式で紹介するので、ぜひとも買ってみてくだ さいね!! 4
#openshiftjp Quayとは? • コンテナ環境用の分散型コンテナイメージレジストリ ◦ 起源: 2013年に提供開始したQuay.ioというSaaS型のサービス ◦ CoreOSがQuay.ioを買収してオンプレミス版のQuay Enterpriseも合
わせて提供 ◦ さらにRed HatがCoreOSを2018年に買収してから、Quay Enterprise をRed Hat Quayという名前に変更して提供開始 5
#openshiftjp Quayの特徴 • OpenShift環境の場合: ◦ 内部にコンテナレジストリが自動作成され、複数の開発チームでの利用が可能 • さらにQuayを使うと... ◦ リポジトリ使用状況の可視化
(いつ誰がイメージをPush/Pullしたか、などの情報を保持 ) ◦ Clairと連携したコンテナイメージ脆弱性情報の可視化 ◦ リポジトリへのイメージ Pushやイメージ脆弱性検知時などのイベントの自動通知 ◦ OpenShift環境とは独立した認証情報の利用 (LDAPやOpenID Connectなど) ◦ registry.redhat.ioなど外部レジストリからのリポジトリの自動ミラーリング ◦ Geo-Replicationによる遠隔地への非同期コピー ◦ GitHubなどのWebhookを利用した、Dockerfileからのイメージ自動ビルド ◦ OAuth 2 RESTful APIによる外部アプリとの連携 ◦ 様々なパブリック/プライベートのクラウドストレージサービスを Quayのバックエンドストレージとして 利用可能 6
#openshiftjp Quayの(理想的な)利用イメージ • DevSecOpsや大規模な分散レジストリとしての利用が「理想」 ◦ グローバルでガバナンスを効かせるという壮大なアーキテクチャ • もちろん、小規模なプライベートレジストリとしての利用もアリ ◦ この場合は、後述の
Red Hat Quay.ioを使ってスモールスタートするのがいいかも … 7
#openshiftjp 参考: Kubernetes KubeFed • Kubernetes/OpenShiftのマルチクラスタに対して、1つのAPIからサービスをデプ ロイできるようになるOSSプロジェクト • Quay/Kubernetes/OpenShiftと組み合わせて使うと多分いい感じ ◦
参考: Using KubeFed to Deploy Applications to OCP3 and OCP4 Clusters 8
#openshiftjp Quayの種類 • OSSコミュニティ版としては、Project Quay ◦ 2019年11月にオープンソース化した Project Quayをリリース •
Red Hatの製品/サービスとしては下記の2種類 ◦ Red Hat Quay.io (SaaS版) ◦ Red Hat Quay (オンプレミス版) • 一番手っ取り早く触れるのはSaaS版 ◦ アカウント作成して利用プランを選択するだけ ◦ どの利用プランでも30日あいだの無料トライアルを利用可能 ◦ 無料期間終了後も 15USドル/1ヶ月〜 で利用可能 9
#openshiftjp QuayのWebインタフェース • Red Hat Quay.ioに、Project Quayのコンテナイメージもアップロードされているの で、そこからどんな感じかを見ることもできます ◦ https://quay.io/projectquay/quay
10
#openshiftjp Information 11
#openshiftjp Tag 12
#openshiftjp Tag History 13
#openshiftjp Manifest Layers 14
#openshiftjp • Quay.ioにイメージをアップロードすると、自動的に脆弱性Scanが実行 Security Scan 15
#openshiftjp Included Packages 16
#openshiftjp Project Quayを使ってみよう!! 17
#openshiftjp Podman編 • 基本的には下記ガイドを参照 • Getting Started With Quay ◦
PostgreSQLコンテナ (Quayのデータベース用)を作成 ◦ Redisコンテナ (ユーザイベント用)を作成 ◦ Quayコンテナを起動し、設定画面にアクセスして設定情報を入力して、 Quayコンテナを終了 ◦ 上記で設定した情報をダウンロードしたファイルを読み込ませて、 Quayコンテナを起動 • Fedora31のPodmanでテストした結果正常に動作 ◦ Fedoraだとdnfコマンドでインストール可能 18 $ sudo dnf -y install podman
#openshiftjp OKD4編 • OKD4のOperatorでProject Quayを自動インストール可能 • OKD4をインストールするには… ◦ AWSで試すのが一番簡単 ◦
デフォルトだと、Fedora CoreOSを使って以下の構成をインストール ▪ Master x3 (m4.xlarge) ▪ Worker x3 (m4.large) ◦ 節約したいのであれば、Workerは2台でもOKD4を実行可能 19
#openshiftjp OKD4編 • OKD4 on AWSのインストール手順 ◦ https://origin-release.svc.ci.openshift.org/ からインストーラとCLIツールを入手 ◦
事前にRoute53などでOKD4に使う独自ドメインを取得しておく必要あり 20 $ oc adm release extract --tools \ registry.svc.ci.openshift.org/origin/release:4.4.0-0.okd-2020-04-25-221705 $ tar xf openshift-client-*.tar.gz $ tar xf openshift-install-*.tar.gz $ ./openshift-install create install-config $ ./openshift-install create cluster
#openshiftjp OKD4編 • Operator HubからQuayを選択してインストール 21
#openshiftjp OKD4編 • インストール時に選択するものは全てデフォルト値でSubscribe 22
#openshiftjp OKD4編 • 「Installed Operators」->「Quay」->「QuayEcosystem」->「Create QuayEcosystem」を選択 • 下記のYAMLファイルを入力して「Create」をクリック 23 apiVersion:
redhatcop.redhat.io/v1alpha1 kind: QuayEcosystem metadata: name: example-quayecosystem spec: quay: image: quay.io/projectquay/quay:latest
#openshiftjp OKD4編 • こんな感じのPod一覧になれば、Project Quay on OKD4のインストール完了 • Routeに表示されているProject QuayアプリのURLにアクセスして利用可能
◦ User: quay, Password: password でログイン可能 24
#openshiftjp OKD4編 • ログイン後のProject Quayお試しコマンド (busyboxのpush/pull) ◦ Podman編の場合でも同様ですが、その場合は QuayのURLやユーザ名を適宜修正して下さい 25
$ podman login --tls-verify=false -u=quay -p=password \ example-quayecosystem-quay-XXXXXX.net $ podman pull busybox $ podman images $ podman tag <busyboxイメージのContainer ID> \ example-quayecosystem-quay-XXXXXX.net/quay/testbusybox (<- QuayのURLの後にユーザ名(quay)と作成するリポジトリ名 (testbusybox)を指定) $ podman push --tls-verify=false \ example-quayecosystem-quay-XXXXXX.net/quay/testbusybox $ podman pull --tls-verify=false \ example-quayecosystem-quay-XXXXXX.net/quay/testbusybox
#openshiftjp OKD4編 • コンテナイメージPush/Pullのログ 26
#openshiftjp (参考) Container Security Operator • コンテナイメージ脆弱性の静的解析ツールであるClairを利用して、OKD4環境上の コンテナイメージ脆弱性を静的解析可能 • Clairが利用する脆弱性情報は、Red
HatやNISTなどが公開している情報 • Operator Hubからインストール可能で、Operatorをデプロイするだけで、OKD4環 境のScanが自動実行 27
#openshiftjp Quay Image Security • ダッシュボードから発見された脆弱性のHTMLレポートを確認可能 28
#openshiftjp Quay Image Security • 脆弱性が見つかった場合は、Project QuayのHTMLレポートか ImageManifestVulnというリソースをocコマンドで参照可能 29
#openshiftjp Quay Image Security 30 $ oc get ImageManifestVuln --all-namespaces
NAMESPACE NAME AGE quay-enterprise sha256.5073e39508248811c10398ce1dbb59d753ff47f690eb97e7938b80e13c628ab7 17m quay-enterprise sha256.93b911c720930a49d327f8f97c38dcd510db0692251f139ed709cb83fe00f903 17m quay-enterprise sha256.af7de1465d9992b8c5756723f75190d80ca8b18a08a0be7971792668120ee92d 17m $ oc get ImageManifestVuln/sha256.5073e39508248811c10398ce1dbb59d753ff47f690eb97e7938b80e13c628ab7 -o yaml apiVersion: secscan.quay.redhat.com/v1alpha1 kind: ImageManifestVuln metadata: creationTimestamp: "2020-02-15T08:25:46Z" ... spec: features: - name: perl-Git namespaceName: centos:7 version: 1.8.3.1-20.el7 versionformat: rpm vulnerabilities: - description: 'Git is a distributed revision control system with a decentralized ...
#openshiftjp 31
#openshiftjp (参考) OKD4 利用料金イメージ • Fedora CoreOSを利用するので、OKD4 on AWSだとAWSの利用料金のみ •
下記は Master x3, Worker x2 をある程度の時間利用したAWSのレポート 32
#openshiftjp Red Hat Quayを使ってみよう!! 33
#openshiftjp Red Hat Quay • Project Quayと同じくOKD4, OpenShift 4のOperator Hubからデプロイ可能
• Red Hat製品版のコンテナイメージをPULLする際に必要な認証情報をSecretとし て作成する必要あり 34 $ cat << EOF > redhat-quay-pull-secret.yaml apiVersion: v1 kind: Secret metadata: name: redhat-pull-secret data: .dockerconfigjson: XXXXXXXXXX type: kubernetes.io/dockerconfigjson EOF $ oc login -u kubeadmin <OKD/OpenShift 4環境のAPI URL> $ oc new-project quay-enterprise $ oc create -f redhat-quay-pull-secret.yaml
#openshiftjp Red Hat Quayのデプロイ • Quay Ecosystemを作成するときに入力するYAMLのイメージは下記 • Clairもデプロイしておくと、Quay上のリポジトリにイメージをアップロードした際に、 Clairによるイメージの脆弱性Scanが自動実行
35 apiVersion: redhatcop.redhat.io/v1alpha1 kind: QuayEcosystem metadata: name: example-quayecosystem spec: quay: imagePullSecretName: redhat-pull-secret (前ページで作成した Secretを指定) enableRepoMirroring: true (レポジトリのミラーリングを有効化 ) clair: enabled: true (QuayにClairによる脆弱性Scanを有効化) imagePullSecretName: redhat-pull-secret
#openshiftjp Red Hat Quayのデプロイ • 大体こんな感じです。デプロイ完了したら、quay/password でログイン可能 36
#openshiftjp リポジトリのミラーリング設定 • ミラーリングに利用する空リポジトリを作成 • リポジトリの設定画面から、上記リポジトリの Repository Stateを「Mirror」に変更 • 上記リポジトリに書き込み権限を持つ、ミラーリング用のロボットアカウントを作成
• リポジトリのミラーリング設定画面から、ミラーリング対象のリポジトリの URL/認証情報、同期間隔などを 設定して同期開始 37
#openshiftjp 38
#openshiftjp リポジトリのミラーリングログ 39
#openshiftjp おわりに • Project QuayはPodmanやOperatorを使ってデプロイ可能 ◦ ただし、現時点ではミラーリング設定やClairによる脆弱性スキャン用の手順は 整理されていません • Red
Hat QuayはOperatorを使ってデプロイ可能 ◦ ミラーリング/Clair用のコンテナも自動デプロイして利用可能 ◦ 他にもPodmanやOpenShiftへの手動インストールも可能 • Container Security Operatorはコミュニティ版のOperator ◦ Red Hat製品ではないので、Red Hat サポートは無し ◦ Project QuayとRed Hat Quayで利用可能 • 詳細は、赤帽エンジニアブログのQuay紹介記事もご参照ください!! ◦ https://rheb.hatenablog.com/entry/202002-quay 40
#openshiftjp Thank you !! 41