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..9e24d595d --- /dev/null +++ b/404.html @@ -0,0 +1,429 @@ + + + +
+ + + + + + + + + + + + + + +Extension authors have the mechanisms to offer their product as part of a curated catalog of extensions, that they can push updates to over-the-air (eg publish new versions, publish patched versions with CVEs, etc). Cluster admins can sign up to receive these updates on clusters, by adding the catalog to the cluster. When a catalog is added to a cluster, the kubernetes extension packages in that catalog become available on cluster for installation and receiving updates.
+For example, the k8s-operatorhub/community-operators is a catalog of curated extensions that contains a list of extensions being developed by the community. The list of extensions can be viewed in Operatorhub.io. This catalog is distributed as an image quay.io/operatorhubio/catalog for consumption on clusters.
+To consume this catalog on cluster, create a Catalog
Custom Resource(CR) with the image specified in the spec.source.image
field:
$ kubectl apply -f - <<EOF
+apiVersion: catalogd.operatorframework.io/v1alpha1
+kind: Catalog
+metadata:
+ name: operatorhubio
+spec:
+ source:
+ type: image
+ image:
+ ref: quay.io/operatorhubio/catalog:latest
+EOF
+
+The packages made available for installation/receiving updates on cluster can then 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
+.
+.
+.
+
+
+
+
+
+
+
+ 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:
$ kubectl get namespaces | grep argocd
+argocd-operator-system Active 4m17s
+
+$ kubectl get pods -n argocd-operator-system
+NAME READY STATUS RESTARTS AGE
+argocd-operator-controller-manager-bb496c545-ljbbr 2/2 Running 0 4m32s
+
+
+
+
+
+
+
+ Uninstalling an extension is as simple as deleting an existing ClusterExtension CR:
+$ kubectl get clusterextensions
+NAME AGE
+operatorhubio-argocd-operator 53s
+
+$ kubectl delete clusterextension argocd-operator
+clusterextension.olm.operatorframework.io "argocd-operator" deleted
+$ kubectl get namespaces | grep argocd
+$
+$ kubectl get crds | grep argocd-operator
+$
+
+
+
+
+
+
+
+ {"use strict";/*!
+ * escape-html
+ * Copyright(c) 2012-2013 TJ Holowaychuk
+ * Copyright(c) 2015 Andreas Lubbe
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
+ * MIT Licensed
+ */var _a=/["'&<>]/;Pn.exports=Aa;function Aa(e){var t=""+e,r=_a.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i