Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OperatorLifecycleManager 101

Shingo.Kitayama
September 07, 2020

OperatorLifecycleManager 101

CloudNative Days Tokyo 2020 (2020/09/08-09)
「そーいうことね。Operator Lifecycle Manager完全に理解した。」
で発表した資料です。
https://event.cloudnativedays.jp/cndt2020/talks/23

Shingo.Kitayama

September 07, 2020
Tweet

More Decks by Shingo.Kitayama

Other Decks in Technology

Transcript

  1. を利用することで、 を自動的に最新 の状態に保つための 方式を提供する。 プラットフォームや他の への依存 関係を解決し、自動で必要なリソースをインストールす る。 インストールされた とそのサービスを、テナン

    トの に展開する。 同じ を所有して、競合する がインス トールされることを防ぐ。 を活用し、マネージドサービスプロバイダのように 管理のインターフェイスを提供する。
  2. 展開先 作成 設定 が利用する 作成 展開 の作成 $ kubectl create

    ns <namespace> $ kubectl create -f deploy/service_account.yaml –n <namespace> $ kubectl create -f deploy/crds/operator_crd.yaml $ kubectl create -f deploy/operator.yaml -n <namespace> $ kubectl create –f deploy/crds/operator_cr.yaml とりあえず全部手動で を作る方法
  3. 展開先 作成 設定 が利用する 作成 展開 の作成 $ kubectl create

    ns <namespace> $ kubectl create -f deploy/service_account.yaml –n <namespace> $ kubectl create -f deploy/crds/operator_crd.yaml $ kubectl create -f deploy/operator.yaml -n <namespace> $ kubectl create –f deploy/crds/operator_cr.yaml $ helm repo add jenkins https://raw.githubusercontent.com/jenkinsci/kubernetes- operator/master/chart $ helm install jenkins/jenkins-operator 追加 が 化されている もある。
  4. $ export olm_release=0.15.1 $ kubectl apply -f https://github.com/operator-framework/operator- lifecycle-manager/releases/download/${olm_release}/crds.yaml $

    kubectl apply -f https://github.com/operator-framework/operator- lifecycle-manager/releases/download/${olm_release}/olm.yaml $ kubectl get crd NAME catalogsources.operators.coreos.com clusterserviceversions.operators.coreos.com installplans.operators.coreos.com operatorgroups.operators.coreos.com subscriptions.operators.coreos.com $ kubectl get deploy -n olm NAME READY UP-TO-DATE AVAILABLE AGE catalog-operator 1/1 1 1 88s olm-operator 1/1 1 1 88s packageserver 2/2 2 2 73s $ kubectl get packagemanifest NAME CATALOG AGE federatorai Community Operators 23m mariadb-operator-app Community Operators 23m nuodb-operator-bundle Community Operators 23m cluster-manager Community Operators 23m tidb-operator Community Operators 23m kubemq-operator Community Operators 23m jaeger Community Operators 23m …
  5. 【 】 単一のバージョンの を形 成するパッケージ。 ・ を識別するメタ情報 ・ ・リソースなどが記載された では、

    として管理される。 展開先 作成 設定 が利用する 作成 展開 の作成 $ kubectl create ns <namespace> $ kubectl create -f deploy/service_account.yaml –n <namespace> $ kubectl create -f deploy/crds/operator_crd.yaml $ kubectl create -f deploy/operator.yaml -n <namespace> $ kubectl create –f deploy/crds/operator_cr.yaml
  6. を に 届けてください。 【 】 と の更新元を定義し、パッケージ内の とバインドして の更新を維持するもの。 Operator

    Ⅰ を監視 apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: argocd-operator namespace: olm spec: channel: alpha installPlanApproval: Automatic name: argocd-operator source: operatorhubio-catalog sourceNamespace: olm startingCSV: argocd-operator.v0.0.12
  7. Ⅱ の作成 には と と が入っています。 こちらでいいですか? 【 】 の自動インストール、またはアップグレードするため

    に作成されるリソースの計算された一覧。 おねがいします。 $ kubectl -n olm get installplan NAME CSV APPROVAL APPROVED install-gbtsx argocd-operator.v0.0.12 Automatic true
  8. $ kubectl -n olm get csv NAME DISPLAY VERSION REPLACES

    PHASE argocd-operator.v0.0.12 Argo CD 0.0.12 Succeeded $ kubectl get crd |grep argo applications.argoproj.io appprojects.argoproj.io argocdexports.argoproj.io argocds.argoproj.io Ⅲ を作成 【 】 のデプロイを支援するリソース。 を監視
  9. Ⅳ リソースを作成 【 】 と同じ にデプロイされた のデプロイ制限を行う。 が届けられる。 を確認 あのぉ

    。 届いたんだけど $ kubectl -n olm get deployment,pod,sa NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/argocd-operator 1/1 1 1 11m NAME READY STATUS RESTARTS AGE pod/argocd-operator-5d59c9c447 1/1 Running 0 11m NAME SECRETS AGE serviceaccount/argocd-application-controller 2 11m serviceaccount/argocd-dex-server 2 11m serviceaccount/argocd-operator 2 11m serviceaccount/argocd-redis-ha 2 11m serviceaccount/argocd-server 2 11m $ kubectl -n openshift-operator-lifecycle-manager logs pod/olm- operator-7d9844479b-wlcx5 --tail=10 time="2020-08-16T09:17:30Z" level=info msg="csv in operatorgroup" csv=argocd-operator.v0.0.12 id=GP0ZJ namespace=olm opgroup=olm- wxgq8 phase=Succeeded
  10. apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion <…ellipsis…> spec: <…ellipsis…> description: | ##

    Overview The Argo CD Operator manages the full lifecycle… displayName: Argo CD icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4w… mediatype: image/svg+xml links: - name: Argo CD Project url: https://argoproj.github.io/argo-cd/ - name: Operator Documentation url: https://argocd-operator.readthedocs.io - name: Operator Source Code url: https://github.com/argoproj-labs/argocd-operator maintainers: - email: [email protected] name: John McKenzie maturity: alpha provider: name: Argo CD Community replaces: argocd-operator.v0.0.11 version: 0.0.12 の情報を記載することで、特定の や ソースコードの情報を提供。
  11. apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: argocd-operator namespace: olm spec:

    channel: alpha installPlanApproval: Automatic name: argocd-operator source: operatorhubio-catalog sourceNamespace: olm startingCSV: argocd-operator.v0.0.12 status: installedCSV: argocd-operator.v0.0.13 currentCSV: argocd-operator.v0.0.13 に到達するまで を バージョンずつ更新 が作成されると、そのパッケージの最新 がインストールされる。
  12. 新しく入れるクラスタは、 新しいバージョンを導入 最新バージョンに到達するまで、全ての のバー ジョンを更新することは、安全ではない。 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion <…ellipsis…>

    spec: <…ellipsis…> description: | ## Overview The Argo CD Operator manages the full lifecycle… displayName: Argo CD icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4w… replaces: argocd-operator.v0.0.11 skips: - argocd-operator.v0.0.12 version: 0.0.13 すでに導入済みのクラス タへの影響を与えないよ うに
  13. apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion <…ellipsis…> spec: <…ellipsis…> install: spec: clusterPermissions:

    - rules: - apiGroups: - '*' resources: - ‘*’ … verbs: - get - list serviceAccountName: argocd-application-controller deployments: - name: argocd-operator spec: replicas: 1 selector: matchLabels: name: argocd-operator strategy: {} template: を実行するために必要なリソースの 定義 、 など が直接行われる。
  14. で定義された が所属する を特定するこ とで、メンバー内の に必要な を生成する。 ▶ クラスタ管理者が を介して に付与する権限を制

    御することが目的 kind: OperatorGroup apiVersion: operators.coreos.com/v1 metadata: name: og-single namespace: argocd spec: targetNamespaces: - argocd とみなす条件 が と同じ にある が をサポートしている場合 でインストール対象 情報を伝える 基本は つの に対して、 つの の指定を行う。
  15. でインストール対象 情報を伝える メンバー に必要な アクセスを生成するた めの情報を で に提供 env: -

    name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: 'metadata.annotations[''olm.targetNamespaces'']' の名前 の 内にあるターゲットの を介して、 のインスタンスに反映される の配置方法で異なる
  16. では、4つの をサポートしている。 「 」「 」のどちらかをサポートしている が多い。 管理の など に をインストールし、ク

    ラスタのすべての を監視します。 がデプロイされてい る 以外の複数の指 定された のイベン トを監視します。 がデプロイされてい る 以外の単一の のイベントを監視 します。 がデプロイされてい る のイベントだけ を監視します。 では、すべて が上記の構成をサポートしているわけではない。 たとえば、クラスターレベルで実行するように設計された に対して、単一の を定義する を設定すべきではない。
  17. を設定した と同じ の のみを監視する。 kind: OperatorGroup apiVersion: operators.coreos.com/v1 metadata: name:

    og-ownnamespace namespace: argocd spec: targetNamespaces: - argocd 他のユーザーに影響を与えることなく のアップグ レードなどを処理できる。 ・ 内に指定される のみを監視する ・リソースにアクセスする および を設定
  18. すべての の を監視する。 kind: OperatorGroup apiVersion: operators.coreos.com/v1 metadata: name: og-allnamespaces

    namespace: olm リソースの再利用性を促進し、クラスター全体で定義され たリソースを管理する 。 ・クラスター内の全ての に指定される を監視する ・ および を設定
  19. ・ の作成時に が生成され、 のメンバーが になった時に が設 定される。 ・ ・ ・

    ・ ・ ・ ・ をリストで指定することで、 に対応した をまとめられる
  20. apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion <…ellipsis…> spec: customresourcedefinitions: owned: - kind:

    Application name: applications.argoproj.io version: v1alpha1 displayName: Application description: An Application is a group… - kind: AppProject name: appprojects.argoproj.io version: v1alpha1 displayName: AppProject description: An AppProject is a logical… - kind: ArgoCDExport name: argocdexports.argoproj.io version: v1alpha1 displayName: ArgoCDExport description: ArgoCDExport describes… - kind: ArgoCD name: argocds.argoproj.io version: v1alpha1 displayName: ArgoCD description: ArgoCD is the representation… に必要な のリンク、依存関係の管 理を設定する。
  21. apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: <…ellipsis…> spec: customresourcedefinitions: owned: -

    kind: ArgoCD name: argocds.argoproj.io version: v1alpha1 displayName: ArgoCD description: ArgoCD is the representation… <…ellipsis…> specDescriptors: - description: 'The container image tag (version) … displayName: Version path: version x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:fieldGroup:ArgoCD' - 'urn:alm:descriptor:com.tectonic.ui:text’ - description: 'The container image … displayName: Image path: image x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:fieldGroup:ArgoCD' - 'urn:alm:descriptor:com.tectonic.ui:text’ - description: 'The number of operation processors… displayName: 'Operation Processor Count' path: controller.processors.operation x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:fieldGroup… - 'urn:alm:descriptor:com.tectonic.ui:number'
  22. は、相互に機能しない の共存を防 止する。 ・提供できない を必要とする の インストール ・依存関係のある に対して、障害を発生さ せる方法での

    の更新 が複数の によって所有される場合、 は、後方互換性の条件を全て満たす場合にアップ グレードされる。 希望 に更新 えっ まぢで 新しいの
  23. は、相互に機能しない の共存を防 止する。 ・提供できない を必要とする の インストール ・依存関係のある に対して、障害を発生さ せる方法での

    の更新 が複数の によって所有される場合、 は、後方互換性の条件を全て満たす場合にアップ グレードされる。 希望 に更新 えっ まぢで 新しいの バージョンの依存関係とは
  24. kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 spec: names: kind: GitRepo <…ellipsis…> versions:

    - name: v1alpha1 served: true storage: true apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion <…ellipsis…> spec: customresourcedefinitions: required: - kind: GitRepo name: gitrepos.gitproj.io version: v1alpha1 displayName: GitRepo description: GitRepo is the representation… の に新たな を追記 の提供可能可否 のメイン提供
  25. kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 spec: names: kind: GitRepo <…ellipsis…> versions:

    - name: v1alpha1 served: true storage: false - name: v1beta1 served: true storage: true apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion <…ellipsis…> spec: customresourcedefinitions: required: - kind: GitRepo name: gitrepos.gitproj.io version: v1alpha1 displayName: GitRepo description: GitRepo is the representation… の に新たな を追記 の提供可能可否 のメイン提供 非推奨バージョン で提供
  26. kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 spec: names: kind: GitRepo <…ellipsis…> versions:

    - name: v1alpha1 served: true storage: false - name: v1beta1 served: true storage: true apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion <…ellipsis…> spec: customresourcedefinitions: required: - kind: GitRepo name: gitrepos.gitproj.io version: v1beta1 displayName: GitRepo description: GitRepo is the representation… 側の 利用バージョンを変更する 更新 時点で、 自身が新規 バージョンに対応 の 入れ替え する必要がある。 対応
  27. kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 spec: names: kind: GitRepo <…ellipsis…> versions:

    - name: v1alpha1 served: false storage: false - name: v1beta1 served: true storage: true apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion <…ellipsis…> spec: customresourcedefinitions: required: - kind: GitRepo name: gitrepos.gitproj.io version: v1beta1 displayName: GitRepo description: GitRepo is the representation… をバージョンアップするには以下を満たす必要がある。 ・既存 として有効化されたバージョンが、新規 に存在する。 ・検証が新規 の検証スキーマに対して行われる場合、 の有効にされたバー ジョンに関連付けられる既存インスタンスまたはカスタムリソース すべてが有効である。 提供廃止 削除可能
  28. Operator によって が並べられている? $ kubectl get packagemanifests NAME CATALOG AGE

    federatorai Community Operators 23m mariadb-operator-app Community Operators 23m nuodb-operator-bundle Community Operators 23m cluster-manager Community Operators 23m tidb-operator Community Operators 23m kubemq-operator Community Operators 23m jaeger Community Operators 23m …
  29. /argocd-operator ├── 0.0.12 │ ├── Dockerfile │ ├── manifests │

    │ ├── argocd-operator.v.0.0.12.clusterserviceversion.yaml │ │ ├── argoproj.io_applications_crd.yaml │ │ ├── argoproj.io_appprojects_crd.yaml │ │ ├── argoproj.io_argocdexports_crd.yaml │ │ └── argoproj.io_argocds_crd.yaml │ └── metadata │ ├── annotations.yaml │ └── dependencies.yaml └── 0.0.11 ├── Dockerfile ├── manifests │ ├── argocd-operator.v.0.0.11.clusterserviceversion.yaml │ ├── argoproj.io_applications_crd.yaml │ ├── argoproj.io_appprojects_crd.yaml │ ├── argoproj.io_argocdexports_crd.yaml │ └── argoproj.io_argocds_crd.yaml └── metadata ├── annotations.yaml └── dependencies.yaml /argocd-operator ├── 0.0.12 │ ├── argocd-operator.v.0.0.12.clusterserviceversion.yaml │ ├── argoproj.io_applications_crd.yaml │ ├── argoproj.io_appprojects_crd.yaml │ ├── argoproj.io_argocdexports_crd.yaml │ └── argoproj.io_argocds_crd.yaml ├── 0.0.11 │ ├── argocd-operator.v.0.0.11.clusterserviceversion.yaml │ ├── argoproj.io_applications_crd.yaml │ ├── argoproj.io_appprojects_crd.yaml │ ├── argoproj.io_argocdexports_crd.yaml │ └── argoproj.io_argocds_crd.yaml ├── 0.0.9 ├── 0.0.8 ├── … └── argocd-operator.package.yaml は、「 」「 」ディレクトリ で構成され、 拡張が容易になっている
  30. /argocd-operator ├── 0.0.12 │ ├── Dockerfile │ ├── manifests │

    │ ├── argocd-operator.v.0.0.12.clusterserviceversion.yaml │ │ ├── argoproj.io_applications_crd.yaml │ │ ├── argoproj.io_appprojects_crd.yaml │ │ ├── argoproj.io_argocdexports_crd.yaml │ │ └── argoproj.io_argocds_crd.yaml │ └── metadata │ ├── annotations.yaml │ └── dependencies.yaml └── 0.0.11 ├── Dockerfile ├── manifests │ ├── argocd-operator.v.0.0.11.clusterserviceversion.yaml │ ├── argoproj.io_applications_crd.yaml │ ├── argoproj.io_appprojects_crd.yaml │ ├── argoproj.io_argocdexports_crd.yaml │ └── argoproj.io_argocds_crd.yaml └── metadata ├── annotations.yaml └── dependencies.yaml に追加する方法についての形式や、 から選択できる などを定義する annotations: mediatype.v1: "registry+v1" manifests.v1: "manifests/" metadata.v1: "metadata/" package.v1: “argocd-operator" channels.v1: “alpha, beta" channel.default.v1: “alpha" 利用可能な を指定
  31. /argocd-operator ├── 0.0.12 │ ├── Dockerfile │ ├── manifests │

    │ ├── argocd-operator.v.0.0.12.clusterserviceversion.yaml │ │ ├── argoproj.io_applications_crd.yaml │ │ ├── argoproj.io_appprojects_crd.yaml │ │ ├── argoproj.io_argocdexports_crd.yaml │ │ └── argoproj.io_argocds_crd.yaml │ └── metadata │ ├── annotations.yaml │ └── dependencies.yaml └── 0.0.11 ├── Dockerfile ├── manifests │ ├── argocd-operator.v.0.0.11.clusterserviceversion.yaml │ ├── argoproj.io_applications_crd.yaml │ ├── argoproj.io_appprojects_crd.yaml │ ├── argoproj.io_argocdexports_crd.yaml │ └── argoproj.io_argocds_crd.yaml └── metadata ├── annotations.yaml └── dependencies.yaml 明示的に バージョンの依存関係を指定するこ とで、 利用時に によって検出される。 dependencies: - type: olm.package packageName: git-operator version: >0.21.0 - type: olm.gvk group: gitproj.io kind: GitRepo version: v1alpha1 特定の バージョンを指定
  32. /argocd-operator ├── 0.0.12 │ ├── Dockerfile │ ├── manifests │

    │ ├── argocd-operator.v.0.0.12.clusterserviceversion.yaml │ │ ├── argoproj.io_applications_crd.yaml │ │ ├── argoproj.io_appprojects_crd.yaml │ │ ├── argoproj.io_argocdexports_crd.yaml │ │ └── argoproj.io_argocds_crd.yaml │ └── metadata │ ├── annotations.yaml │ └── dependencies.yaml └── 0.0.11 ├── Dockerfile ├── manifests │ ├── argocd-operator.v.0.0.11.clusterserviceversion.yaml │ ├── argoproj.io_applications_crd.yaml │ ├── argoproj.io_appprojects_crd.yaml │ ├── argoproj.io_argocdexports_crd.yaml │ └── argoproj.io_argocds_crd.yaml └── metadata ├── annotations.yaml └── dependencies.yaml は、 と に関連付けられたメタデータを格納するコンテ ナイメージ。 は、 の特定のバー ジョンを提示する。 FROM scratch # We are pushing an operator-registry bundle # that has both metadata and manifests. LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=test-operator LABEL operators.operatorframework.io.bundle.channels.v1=beta,stable LABEL operators.operatorframework.io.bundle.channel.default.v1=stable ADD test/*.yaml /manifests ADD test/metadata/annotations.yaml /metadata/annotations.yaml
  33. すべてのバージョンの 情 報が含まれるデータベースイメージ。 へのポインター 参照先 が記載さ れたデータベースが含まれている。 の実態ではない $ grpcurl

    -plaintext localhost:50051 ¥ api.Registry/ListPackages { "name": "3scale-community-operator" } <…ellipsis…> { "name": "argocd-operator" } { "name": "argocd-operator-helm" } $ grpcurl -plaintext -d '{"pkgName":"argocd- operator","channelName":"alpha"}’ ¥ localhost:50051 ¥ api.Registry/GetBundleForChannel "providedApis": [ { "group": "argoproj.io", "version": "v1alpha1", "kind": "Application", "plural": "applications" } <…ellipsis…>
  34. $ kubectl -n olm get pod NAME READY STATUS catalog-operator-c8bc7f97c-2fxds

    1/1 Running olm-operator-84cfcdbdb8-qdzwd 1/1 Running operatorhubio-catalog-7bg4v 1/1 Running packageserver-7bc5d956c5-pxtz2 1/1 Running packageserver-7bc5d956c5-rffbv 1/1 Running を増やしていくことによって、導入でき る のパッケージ数 カタログ を増やせる 同一のカタログが入っている を同じクラスタ上 に展開すると を起こす。
  35. 「 」 を管理しているプロセス。 が追加されると、情報 を取りに行き、特定の 名と のリストを作る。 $ kubectl -n

    olm get pod NAME READY STATUS catalog-operator-c8bc7f97c-2fxds 1/1 Running olm-operator-84cfcdbdb8-qdzwd 1/1 Running operatorhubio-catalog-7bg4v 1/1 Running packageserver-7bc5d956c5-pxtz2 1/1 Running packageserver-7bc5d956c5-rffbv 1/1 Running $ kubectl get packagemanifests NAME CATALOG AGE federatorai Community Operators 23m mariadb-operator-app Community Operators 23m nuodb-operator-bundle Community Operators 23m cluster-manager Community Operators 23m tidb-operator Community Operators 23m kubemq-operator Community Operators 23m jaeger Community Operators 23m …
  36. ## Create Index Image $ opm index add ¥ --bundles

    quay.io/<registry-namespace>/bundle:0.0.1 ¥ --tag quay.io/<registry-namespace>/my-index:1.0.0 $ podman push quay.io/<registry-namespace>/my- index:1.0.0 ## Add Index to a current Image $ opm index add ¥ --bundles quay.io/<registry-namespace>/bundle:0.0.2 ¥ --from-index quay.io/<registry-namespace>/my- index:1.0.0 ¥ --tag quay.io/<registry-namespace>/my-index:1.0.1 の作成は「 」という プロジェクトによって管理されている。 管理者は、 コマンド を利用することで、 を作ることができる。
  37. ## Create Index Image $ opm index add ¥ --bundles

    quay.io/<registry-namespace>/bundle:0.0.1 ¥ --tag quay.io/<registry-namespace>/my-index:1.0.0 $ podman push quay.io/<registry-namespace>/my- index:1.0.0 ## Add Index to a current Image $ opm index add ¥ --bundles quay.io/<registry-namespace>/bundle:0.0.2 ¥ --from-index quay.io/<registry-namespace>/my- index:1.0.0 ¥ --tag quay.io/<registry-namespace>/my-index:1.0.1 の作成は「 」という プロジェクトによって管理されている。 管理者は、 コマンド を利用することで、 を作ることができる。 誰が を管理しているのか $ kubectl -n olm get pod NAME READY STATUS catalog-operator-c8bc7f97c-2fxds 1/1 Running olm-operator-84cfcdbdb8-qdzwd 1/1 Running operatorhubio-catalog-7bg4v 1/1 Running packageserver-7bc5d956c5-pxtz2 1/1 Running packageserver-7bc5d956c5-rffbv 1/1 Running $ kubectl -n olm get deploy NAME READY UP-TO-DATE AVAILABLE catalog-operator 1/1 1 olm-operator 1/1 1 packageserver 2/2 2 「 」には、 は、存在しない。
  38. が、 の情報をもとに を管理し、 メタデータのストア先 を指示する。 を作成すると、 の が作成される。 同様に 監視を行う

    apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: operatorhubio-catalog namespace: olm spec: sourceType: grpc image: quay.io/operator-framework/upstream- community-operators:latest displayName: Community Operators publisher: OperatorHub.io
  39. が、 の情報をもとに を管理し、 メタデータのストア先 を指示する。 を作成すると、 の が作成される。 同様に 監視を行う

    を更新することで、新しいパッケージ情 報 など が更新される。 利用している の が新しくなると、動的に更 新される 。
  40. には、 つの がある。 を提供する をポーリングし、 を管理する。 所定アドレスに対する へのアクセスを試し、 そこから 情報

    を取得する。 データを解析して、 を提供でき る を管理する。 apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource <…ellipsis…> spec: address: community-operators.openshift- marketplace.svc:50051 displayName: Community Operators インターネット上の を通じて 情報を取得する community-operators.openshift- marketplace.svc:50051
  41. の の認定を受けた が、サポートしてい る 群 コミュニティで提供されて いる であり、基本 はプロダクトのコントリ ビューターによってサポート

    されている。 社がミドルウェア プロダクトを 化し て提供している。 がデフォルトで管理している には、以下の 種類がある。 すべて、 を経由して展開される。