Slide 1

Slide 1 text

#openshiftjp Project Quayを使ってみよう 2020/04/27 OpenShift Meetup Tokyo #8 Hirofumi Kojima (@kouxyz21) 1

Slide 2

Slide 2 text

#openshiftjp 目次 ● Quayとは? ● Quayの種類 ● Project Quayを使ってみよう!! ○ Fedora編 (Podman) ○ OKD4編 ● Red Hat Quayを試してみる (参考) 2

Slide 3

Slide 3 text

#openshiftjp お願い事項 ● 個人の見解であり、所属する組織の公式見解ではありません ● 他社製品についての言及もありますが、動作を保証するものではありません。本ス ライドに記載してある情報は、Red Hat公式情報ではなく、参考情報であるとご認識 ください。 ● こうしたらいいよ!改善情報はどしどしツイート、コメントください 3

Slide 4

Slide 4 text

#openshiftjp 自己紹介 ● 名前: 小島 啓史 (コジマ ヒロフミ) / @kouxyz21 ● 所属: レッドハット株式会社 ○ ソリューションアーキテクト (東日本地区のパートナー企業担当のプリセールス ) ○ 主にLinux/Ansible/OpenShift などを推進 ● 最近のパブリックな活動 ○ OpenShift ウェビナーシリーズを話したり … ○ Ansible/OpenShiftのブログ記事/小冊子書いたり… ○ Software Designの連載記事を担当したり … ■ 2020年6月号から始まるFedora連載の初回記事を担当しました!! ■ Fedoraディストリビューションの特徴を、リレー形式で紹介するので、ぜひとも買ってみてくだ さいね!! 4

Slide 5

Slide 5 text

#openshiftjp Quayとは? ● コンテナ環境用の分散型コンテナイメージレジストリ ○ 起源: 2013年に提供開始したQuay.ioというSaaS型のサービス ○ CoreOSがQuay.ioを買収してオンプレミス版のQuay Enterpriseも合 わせて提供 ○ さらにRed HatがCoreOSを2018年に買収してから、Quay Enterprise をRed Hat Quayという名前に変更して提供開始 5

Slide 6

Slide 6 text

#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

Slide 7

Slide 7 text

#openshiftjp Quayの(理想的な)利用イメージ ● DevSecOpsや大規模な分散レジストリとしての利用が「理想」 ○ グローバルでガバナンスを効かせるという壮大なアーキテクチャ ● もちろん、小規模なプライベートレジストリとしての利用もアリ ○ この場合は、後述の Red Hat Quay.ioを使ってスモールスタートするのがいいかも … 7

Slide 8

Slide 8 text

#openshiftjp 参考: Kubernetes KubeFed ● Kubernetes/OpenShiftのマルチクラスタに対して、1つのAPIからサービスをデプ ロイできるようになるOSSプロジェクト ● Quay/Kubernetes/OpenShiftと組み合わせて使うと多分いい感じ ○ 参考: Using KubeFed to Deploy Applications to OCP3 and OCP4 Clusters 8

Slide 9

Slide 9 text

#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

Slide 10

Slide 10 text

#openshiftjp QuayのWebインタフェース ● Red Hat Quay.ioに、Project Quayのコンテナイメージもアップロードされているの で、そこからどんな感じかを見ることもできます ○ https://quay.io/projectquay/quay 10

Slide 11

Slide 11 text

#openshiftjp Information 11

Slide 12

Slide 12 text

#openshiftjp Tag 12

Slide 13

Slide 13 text

#openshiftjp Tag History 13

Slide 14

Slide 14 text

#openshiftjp Manifest Layers 14

Slide 15

Slide 15 text

#openshiftjp ● Quay.ioにイメージをアップロードすると、自動的に脆弱性Scanが実行 Security Scan 15

Slide 16

Slide 16 text

#openshiftjp Included Packages 16

Slide 17

Slide 17 text

#openshiftjp Project Quayを使ってみよう!! 17

Slide 18

Slide 18 text

#openshiftjp Podman編 ● 基本的には下記ガイドを参照 ● Getting Started With Quay ○ PostgreSQLコンテナ (Quayのデータベース用)を作成 ○ Redisコンテナ (ユーザイベント用)を作成 ○ Quayコンテナを起動し、設定画面にアクセスして設定情報を入力して、 Quayコンテナを終了 ○ 上記で設定した情報をダウンロードしたファイルを読み込ませて、 Quayコンテナを起動 ● Fedora31のPodmanでテストした結果正常に動作 ○ Fedoraだとdnfコマンドでインストール可能 18 $ sudo dnf -y install podman

Slide 19

Slide 19 text

#openshiftjp OKD4編 ● OKD4のOperatorでProject Quayを自動インストール可能 ● OKD4をインストールするには… ○ AWSで試すのが一番簡単 ○ デフォルトだと、Fedora CoreOSを使って以下の構成をインストール ■ Master x3 (m4.xlarge) ■ Worker x3 (m4.large) ○ 節約したいのであれば、Workerは2台でもOKD4を実行可能 19

Slide 20

Slide 20 text

#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

Slide 21

Slide 21 text

#openshiftjp OKD4編 ● Operator HubからQuayを選択してインストール 21

Slide 22

Slide 22 text

#openshiftjp OKD4編 ● インストール時に選択するものは全てデフォルト値でSubscribe 22

Slide 23

Slide 23 text

#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

Slide 24

Slide 24 text

#openshiftjp OKD4編 ● こんな感じのPod一覧になれば、Project Quay on OKD4のインストール完了 ● Routeに表示されているProject QuayアプリのURLにアクセスして利用可能 ○ User: quay, Password: password でログイン可能 24

Slide 25

Slide 25 text

#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 \ 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

Slide 26

Slide 26 text

#openshiftjp OKD4編 ● コンテナイメージPush/Pullのログ 26

Slide 27

Slide 27 text

#openshiftjp (参考) Container Security Operator ● コンテナイメージ脆弱性の静的解析ツールであるClairを利用して、OKD4環境上の コンテナイメージ脆弱性を静的解析可能 ● Clairが利用する脆弱性情報は、Red HatやNISTなどが公開している情報 ● Operator Hubからインストール可能で、Operatorをデプロイするだけで、OKD4環 境のScanが自動実行 27

Slide 28

Slide 28 text

#openshiftjp Quay Image Security ● ダッシュボードから発見された脆弱性のHTMLレポートを確認可能 28

Slide 29

Slide 29 text

#openshiftjp Quay Image Security ● 脆弱性が見つかった場合は、Project QuayのHTMLレポートか ImageManifestVulnというリソースをocコマンドで参照可能 29

Slide 30

Slide 30 text

#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 ...

Slide 31

Slide 31 text

#openshiftjp 31

Slide 32

Slide 32 text

#openshiftjp (参考) OKD4 利用料金イメージ ● Fedora CoreOSを利用するので、OKD4 on AWSだとAWSの利用料金のみ ● 下記は Master x3, Worker x2 をある程度の時間利用したAWSのレポート 32

Slide 33

Slide 33 text

#openshiftjp Red Hat Quayを使ってみよう!! 33

Slide 34

Slide 34 text

#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 $ oc new-project quay-enterprise $ oc create -f redhat-quay-pull-secret.yaml

Slide 35

Slide 35 text

#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

Slide 36

Slide 36 text

#openshiftjp Red Hat Quayのデプロイ ● 大体こんな感じです。デプロイ完了したら、quay/password でログイン可能 36

Slide 37

Slide 37 text

#openshiftjp リポジトリのミラーリング設定 ● ミラーリングに利用する空リポジトリを作成 ● リポジトリの設定画面から、上記リポジトリの Repository Stateを「Mirror」に変更 ● 上記リポジトリに書き込み権限を持つ、ミラーリング用のロボットアカウントを作成 ● リポジトリのミラーリング設定画面から、ミラーリング対象のリポジトリの URL/認証情報、同期間隔などを 設定して同期開始 37

Slide 38

Slide 38 text

#openshiftjp 38

Slide 39

Slide 39 text

#openshiftjp リポジトリのミラーリングログ 39

Slide 40

Slide 40 text

#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

Slide 41

Slide 41 text

#openshiftjp Thank you !! 41