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
770
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.3k
Other Decks in Technology
See All in Technology
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
110
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
440
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
Engineer Career Talk
lycorp_recruit_jp
0
180
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
170
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.4k
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
160
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
220
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
280
複雑なState管理からの脱却
sansantech
PRO
1
150
Terraform Stacks入門 #HashiTalks
msato
0
360
Featured
See All Featured
BBQ
matthewcrist
85
9.3k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
890
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Six Lessons from altMBA
skipperchong
27
3.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Faster Mobile Websites
deanohume
305
30k
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