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
680
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
0
4k
Other Decks in Technology
See All in Technology
こんなに簡単!AWSマルチアカウント
takuya_terada
0
120
戦略的DDDを実践するための跳躍力 / OOC 2024
pictiny
6
4.2k
初心者が行く!サーバレスWebアプリ開発の道
nagaharutogawa
0
450
現実世界の事象から学ぶSOLID原則
h0r15h0
25
10k
HoneycombとOpenTelemetryでオブザーバビリティに入門してみる
sumiren
2
160
中央集権体制からDataOpsへの転換 / centralized-to-dataops-transformation
pei0804
7
1.6k
SaaS型Webサービス「カオナビ」のチーム開発でPackage by Featureを取り入れた話/Implementing Package by Feature in kaonavi
kaonavi
0
110
オブジェクト指向CSSが叶えたかったことと、CSSのいま / The aims of Object-oriented CSS and the current state of CSS usage
shinkufencer
11
3.7k
データ品質をコード化! LINEヤフーのMLOpsを最適化する "ACP Data Quality" の紹介
lycorptech_jp
PRO
2
280
複数の LLM モデルを扱う上で直面した辛みまとめ
kazuyaseki
1
260
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
21
4.1k
KTC_DBRE.pdf
_awache
1
290
Featured
See All Featured
The Mythical Team-Month
searls
214
42k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.8k
Code Review Best Practice
trishagee
54
15k
KATA
mclloyd
14
11k
What's new in Ruby 2.0
geeforr
335
31k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
The Cult of Friendly URLs
andyhume
73
5.6k
Pencils Down: Stop Designing & Start Developing
hursman
115
11k
4 Signs Your Business is Dying
shpigford
174
21k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
12
1.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
58
14k
How to train your dragon (web standard)
notwaldorf
71
5.1k
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