diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..e32a0065a --- /dev/null +++ b/404.html @@ -0,0 +1,438 @@ + + + +
+ + + + + + + + + + + + + + +Extension authors can publish their products in catalogs. +Catalogs are curated collections of Kubernetes extensions, such as Operators. +Cluster administrators can add these catalogs to their cluster. +Cluster administrators can enable polling to get over-the-air updates to catalogs when extension authors publish changes such as bug fixes and new features.
+For example, the Kubernetes community Operators catalog is a catalog of curated extensions that is developed by the Kubernetes community. +You can see the available extensions at Operatorhub.io. +This catalog is distributed as an image quay.io/operatorhubio/catalog that can be installed on clusters.
+kind
, using an account with cluster-admin
permissionskubectl
) installed on your workstationCreate a catalog custom resource (CR):
+apiVersion: catalogd.operatorframework.io/v1alpha1
+kind: Catalog
+metadata:
+ name: operatorhubio
+spec:
+ source:
+ type: image
+ image:
+ ref: <catalog_image>
+ pollInterval: <poll_interval_duration>
+
catalog_name
quay.io/operatorhubio/catalog:latest
.poll_interval_duration
24h
.
+ Valid units include seconds (s
), minutes (m
), and hours (h
).
+ To disable polling, set a zero value, such as 0s
.Apply the catalog CR:
+ + +Run the following commands to verify the status of your catalog:
+Check if your catalog is available on the cluster:
+ + +Check the status of your catalog:
+ +Name: operatorhubio
+Namespace:
+Labels: <none>
+Annotations: <none>
+API Version: catalogd.operatorframework.io/v1alpha1
+Kind: Catalog
+Metadata:
+ Creation Timestamp: 2024-03-12T19:34:50Z
+ Finalizers:
+ catalogd.operatorframework.io/delete-server-cache
+ Generation: 2
+ Resource Version: 6469
+ UID: 2e2778cb-dda6-4645-96b7-992e8dd37503
+Spec:
+ Source:
+ Image:
+ Poll Interval: 15m0s
+ Ref: quay.io/operatorhubio/catalog:latest
+ Type: image
+Status:
+ Conditions:
+ Last Transition Time: 2024-03-12T19:35:34Z
+ Message:
+ Reason: UnpackSuccessful
+ Status: True
+ Type: Unpacked
+ Content URL: http://catalogd-catalogserver.catalogd-system.svc/catalogs/operatorhubio/all.json
+ Observed Generation: 2
+ Phase: Unpacked
+ Resolved Source:
+ Image:
+ Last Poll Attempt: 2024-03-12T19:35:26Z
+ Ref: quay.io/operatorhubio/catalog:latest
+ Resolved Ref: quay.io/operatorhubio/catalog@sha256:dee29aaed76fd1c72b654b9bc8bebc4b48b34fd8d41ece880524dc0c3c1c55ec
+ Type: image
+Events: <none>
+
The packages available for installation/receiving updates on cluster can be explored by querying the Package
and BundleMetadata
CRs:
$ kubectl get packages
+NAME AGE
+operatorhubio-ack-acm-controller 3m12s
+operatorhubio-ack-apigatewayv2-controller 3m12s
+operatorhubio-ack-applicationautoscaling-controller 3m12s
+operatorhubio-ack-cloudtrail-controller 3m12s
+operatorhubio-ack-dynamodb-controller 3m12s
+operatorhubio-ack-ec2-controller 3m12s
+operatorhubio-ack-ecr-controller 3m12s
+operatorhubio-ack-eks-controller 3m12s
+operatorhubio-ack-elasticache-controller 3m12s
+operatorhubio-ack-emrcontainers-controller 3m12s
+operatorhubio-ack-eventbridge-controller 3m12s
+operatorhubio-ack-iam-controller 3m12s
+operatorhubio-ack-kinesis-controller 3m12s
+operatorhubio-ack-kms-controller 3m12s
+operatorhubio-ack-lambda-controller 3m12s
+operatorhubio-ack-memorydb-controller 3m12s
+operatorhubio-ack-mq-controller 3m12s
+operatorhubio-ack-opensearchservice-controller 3m12s
+.
+.
+.
+
+$ kubectl get bundlemetadata
+NAME AGE
+operatorhubio-ack-acm-controller.v0.0.1 3m58s
+operatorhubio-ack-acm-controller.v0.0.2 3m58s
+operatorhubio-ack-acm-controller.v0.0.4 3m58s
+operatorhubio-ack-acm-controller.v0.0.5 3m58s
+operatorhubio-ack-acm-controller.v0.0.6 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.10 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.11 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.12 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.13 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.14 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.15 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.16 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.17 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.18 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.19 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.20 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.21 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.22 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.0.9 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.1.0 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.1.1 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.1.2 3m58s
+operatorhubio-ack-apigatewayv2-controller.v0.1.3 3m58s
+.
+.
+.
+
Individual Package
/BundleMetadata
CRs can then be explored more by retrieving their yamls. Eg the operatorhubio-argocd-operator
CR has more detailed information about the argocd-operator
:
$ kubectl get packages | grep argocd
+operatorhubio-argocd-operator 5m19s
+operatorhubio-argocd-operator-helm 5m19s
+
+$ kubectl get package operatorhubio-argocd-operator -o yaml
+apiVersion: catalogd.operatorframework.io/v1alpha1
+kind: Package
+metadata:
+ creationTimestamp: "2023-06-16T14:34:04Z"
+ generation: 1
+ labels:
+ catalog: operatorhubio
+ name: operatorhubio-argocd-operator
+ ownerReferences:
+ - apiVersion: catalogd.operatorframework.io/v1alpha1
+ blockOwnerDeletion: true
+ controller: true
+ kind: Catalog
+ name: operatorhubio
+ uid: 9a949664-9069-4376-9a66-a9921f7488e2
+ resourceVersion: "3765"
+ uid: 43396920-4af4-4daf-a069-be68b8a0631e
+spec:
+ catalog:
+ name: operatorhubio
+ channels:
+ - entries:
+ - name: argocd-operator.v0.0.11
+ replaces: argocd-operator.v0.0.9
+ - name: argocd-operator.v0.0.12
+ replaces: argocd-operator.v0.0.11
+ - name: argocd-operator.v0.0.13
+ replaces: argocd-operator.v0.0.12
+ - name: argocd-operator.v0.0.14
+ replaces: argocd-operator.v0.0.13
+ - name: argocd-operator.v0.0.15
+ replaces: argocd-operator.v0.0.14
+ - name: argocd-operator.v0.0.2
+ - name: argocd-operator.v0.0.3
+ replaces: argocd-operator.v0.0.2
+ - name: argocd-operator.v0.0.4
+ replaces: argocd-operator.v0.0.3
+ - name: argocd-operator.v0.0.5
+ replaces: argocd-operator.v0.0.4
+ - name: argocd-operator.v0.0.6
+ replaces: argocd-operator.v0.0.5
+ - name: argocd-operator.v0.0.8
+ replaces: argocd-operator.v0.0.6
+ - name: argocd-operator.v0.0.9
+ replaces: argocd-operator.v0.0.8
+ - name: argocd-operator.v0.1.0
+ replaces: argocd-operator.v0.0.15
+ - name: argocd-operator.v0.2.0
+ replaces: argocd-operator.v0.1.0
+ - name: argocd-operator.v0.2.1
+ replaces: argocd-operator.v0.2.0
+ - name: argocd-operator.v0.3.0
+ replaces: argocd-operator.v0.2.1
+ - name: argocd-operator.v0.4.0
+ replaces: argocd-operator.v0.3.0
+ - name: argocd-operator.v0.5.0
+ replaces: argocd-operator.v0.4.0
+ - name: argocd-operator.v0.6.0
+ replaces: argocd-operator.v0.5.0
+ name: ""
+ defaultChannel: ""
+ description: ""
+ icon:
+ data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2Z==
+ mediatype: image/svg+xml
+ packageName: argocd-operator
+status: {}
+
This CR is most helpful when exploring the versions of a package that are available for installation on cluster, and the upgrade graph of versions (eg if v0.5.0 of argocd-operator
is installed on cluster, what is the next upgrade available? The answer is v0.6.0).
Creating a ClusterExtension CR installs the extension on cluster:
+$ kubectl get packages | grep argocd
+operatorhubio-argocd-operator 5m19s
+operatorhubio-argocd-operator-helm 5m19s
+
+$ kubectl apply -f - <<EOF
+apiVersion: olm.operatorframework.io/v1alpha1
+kind: ClusterExtension
+metadata:
+ name: argocd-operator
+spec:
+ packageName: operatorhubio-argocd-operator
+EOF
+
+$ kubectl get clusterextensions
+NAME AGE
+operatorhubio-argocd-operator 53s
+
+$ kubectl get clusterextension argocd-operator -o yaml
+apiVersion: olm.operatorframework.io/v1alpha1
+kind: ClusterExtension
+metadata:
+ annotations:
+ kubectl.kubernetes.io/last-applied-configuration: |
+ {"apiVersion":"olm.operatorframework.io/v1alpha1","kind":"ClusterExtension","metadata":{"annotations":{},"name":"argocd-operator"},"spec":{"packageName":"argocd-operator"}}
+ creationTimestamp: "2023-06-21T14:57:50Z"
+ generation: 1
+ name: argocd-operator
+ resourceVersion: "10690"
+ uid: 6e0c67a5-eb9c-41c6-a455-140b28714d34
+spec:
+ packageName: operatorhubio-argocd-operator
+status:
+ conditions:
+ - lastTransitionTime: "2023-06-21T14:57:51Z"
+ message: resolved to "quay.io/operatorhubio/argocd-operator@sha256:1a9b3c8072f2d7f4d6528fa32905634d97b7b4c239ef9887e3fb821ff033fef6"
+ observedGeneration: 1
+ reason: Success
+ status: "True"
+ type: Resolved
+ - lastTransitionTime: "2023-06-21T14:57:57Z"
+ message: installed from "quay.io/operatorhubio/argocd-operator@sha256:1a9b3c8072f2d7f4d6528fa32905634d97b7b4c239ef9887e3fb821ff033fef6"
+ observedGeneration: 1
+ reason: Success
+ status: "True"
+ type: Installed
+ installedBundleResource: quay.io/operatorhubio/argocd-operator@sha256:1a9b3c8072f2d7f4d6528fa32905634d97b7b4c239ef9887e3fb821ff033fef6
+ resolvedBundleResource: quay.io/operatorhubio/argocd-operator@sha256:1a9b3c8072f2d7f4d6528fa32905634d97b7b4c239ef9887e3fb821ff033fef6
+
The status condition type Installed
:true
indicates that the extension was installed successfully. We can confirm this by looking at the workloads that were created as a result of this extension installation:
Uninstalling an extension is as simple as deleting an existing ClusterExtension CR:
+ + + + + + + + + + + + + + +{"use strict";/*!
+ * escape-html
+ * Copyright(c) 2012-2013 TJ Holowaychuk
+ * Copyright(c) 2015 Andreas Lubbe
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
+ * MIT Licensed
+ */var Va=/["'&<>]/;qn.exports=za;function za(e){var t=""+e,r=Va.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i