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
960
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Project Quay
OpenShift Meetup Tokyo #8 で紹介した資料
Hirofumi Kojima
April 27, 2020
More Decks by Hirofumi Kojima
See All by Hirofumi Kojima
DockerユーザのためのPodman/Buildah with Red Hat Enterprise Linuxを利用したコンテナアプリケーション開発
kouxyz21
1
4.8k
Other Decks in Technology
See All in Technology
Pavlokで始める電撃駆動開発
sgrsn
0
180
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.1k
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
660
ホームラボ紹介
y_sera15
0
120
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
150
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
330
モダンフロントエンド 開発研修
recruitengineers
PRO
3
560
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
170
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
200
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Leo the Paperboy
mayatellez
8
2.1k
Context Engineering - Making Every Token Count
addyosmani
9
1k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
260
WCS-LA-2024
lcolladotor
0
790
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
950
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
840
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