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
850
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
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
180
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
15
5.3k
フィンテック養成勉強会#54
finengine
0
180
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
560
HiMoR: Monocular Deformable Gaussian Reconstruction with Hierarchical Motion Representation
spatial_ai_network
0
110
なぜ私はいま、ここにいるのか? #もがく中堅デザイナー #プロダクトデザイナー
bengo4com
0
470
生成AI時代の開発組織・技術・プロセス 〜 ログラスの挑戦と考察 〜
itohiro73
1
260
"サービスチーム" での技術選定 / Making Technology Decisions for the Service Team
kaminashi
1
140
Lambda Web Adapterについて自分なりに理解してみた
smt7174
3
120
あなたの声を届けよう! 女性エンジニア登壇の意義とアウトプット実践ガイド #wttjp / Call for Your Voice
kondoyuko
4
460
Tech-Verse 2025 Keynote
lycorptech_jp
PRO
0
220
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
0
1.1k
Featured
See All Featured
BBQ
matthewcrist
89
9.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
What's in a price? How to price your products and services
michaelherold
246
12k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Writing Fast Ruby
sferik
628
61k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Music & Morning Musume
bryan
46
6.6k
Why Our Code Smells
bkeepers
PRO
337
57k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
220
Faster Mobile Websites
deanohume
307
31k
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