๐ฑ [Monorepo]: Move the hack demo scripts to the root by camilamacedo86 ยท Pull Request #1739 ยท operator-framework/operator-controller
Closes: #1704
We are moving the demo scripts to the root
In the future, we might want to update the demo to be of the whole project instead only catalogd.
$ make demo-update
hack/demo/generate-asciidemo.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5481 100 5481 0 0 13378 0 --:--:-- --:--:-- --:--:-- 13368
asciinema: recording asciicast to /var/folders/n4/j272tr6d7hq63mf7_skv6zr80000gn/T/generate-asciidemo.XXXXX.3ps3gffYCb/catalogd-demo.cast
asciinema: exit opened program when you're done
๐ฅ Begin recording - demo-script.sh
๐ญ Welcome to the catalogd demo
โฏ trap "trap - SIGTERM && kill -- -$^Z$" SIGINT SIGTERM EXIT
โฏ ^Z^Zkind delete cluster
Deleting cluster "kind" ...
Deleted nodes: ["kind-control-plane"]
โฏ kind create cluster
Creating cluster "kind" ...
โ Ensuring node image (kindest/node:v1.31.2) ๐ผ
โ Preparing nodes ๐ฆ
โ Writing configuration ๐
โ Starting control-plane ๐น๏ธ
โ Installing CNI ๐
โ Installing StorageClass ๐พ
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community ๐
โฏ kubectl cluster-info --context kind-kind
Kubernetes control plane is running at https://127.0.0.1:49803
CoreDNS is running at https://127.0.0.1:49803/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
๐ญ use the install script from the latest github release
โฏ curl -L -s https://github.com/operator-framework/operator-controller/releases/latest/download/install.sh | bash
namespace/cert-manager created
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io created
serviceaccount/cert-manager-cainjector created
serviceaccount/cert-manager created
serviceaccount/cert-manager-webhook created
clusterrole.rbac.authorization.k8s.io/cert-manager-cainjector created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-issuers created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-clusterissuers created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-certificates created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-orders created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-challenges created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-ingress-shim created
clusterrole.rbac.authorization.k8s.io/cert-manager-cluster-view created
clusterrole.rbac.authorization.k8s.io/cert-manager-view created
clusterrole.rbac.authorization.k8s.io/cert-manager-edit created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-approve:cert-manager-io created
clusterrole.rbac.authorization.k8s.io/cert-manager-controller-certificatesigningrequests created
clusterrole.rbac.authorization.k8s.io/cert-manager-webhook:subjectaccessreviews created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-cainjector created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-issuers created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-clusterissuers created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-certificates created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-orders created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-challenges created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-ingress-shim created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-approve:cert-manager-io created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-controller-certificatesigningrequests created
clusterrolebinding.rbac.authorization.k8s.io/cert-manager-webhook:subjectaccessreviews created
role.rbac.authorization.k8s.io/cert-manager-cainjector:leaderelection created
role.rbac.authorization.k8s.io/cert-manager:leaderelection created
role.rbac.authorization.k8s.io/cert-manager-webhook:dynamic-serving created
rolebinding.rbac.authorization.k8s.io/cert-manager-cainjector:leaderelection created
rolebinding.rbac.authorization.k8s.io/cert-manager:leaderelection created
rolebinding.rbac.authorization.k8s.io/cert-manager-webhook:dynamic-serving created
service/cert-manager created
service/cert-manager-webhook created
deployment.apps/cert-manager-cainjector created
deployment.apps/cert-manager created
deployment.apps/cert-manager-webhook created
mutatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
deployment.apps/cert-manager-webhook condition met
deployment.apps/cert-manager-cainjector condition met
deployment.apps/cert-manager condition met
mutatingwebhookconfigurations/cert-manager-webhook has {.webhooks[0].clientConfig.caBundle}.
validatingwebhookconfigurations/cert-manager-webhook has {.webhooks[0].clientConfig.caBundle}.
namespace/olmv1-system created
customresourcedefinition.apiextensions.k8s.io/clusterextensions.olm.operatorframework.io created
serviceaccount/operator-controller-controller-manager created
role.rbac.authorization.k8s.io/operator-controller-leader-election-role created
role.rbac.authorization.k8s.io/operator-controller-manager-role created
clusterrole.rbac.authorization.k8s.io/operator-controller-clusterextension-editor-role created
clusterrole.rbac.authorization.k8s.io/operator-controller-clusterextension-viewer-role created
clusterrole.rbac.authorization.k8s.io/operator-controller-extension-editor-role created
clusterrole.rbac.authorization.k8s.io/operator-controller-extension-viewer-role created
clusterrole.rbac.authorization.k8s.io/operator-controller-manager-role created
clusterrole.rbac.authorization.k8s.io/operator-controller-metrics-reader created
clusterrole.rbac.authorization.k8s.io/operator-controller-proxy-role created
rolebinding.rbac.authorization.k8s.io/operator-controller-leader-election-rolebinding created
rolebinding.rbac.authorization.k8s.io/operator-controller-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/operator-controller-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/operator-controller-proxy-rolebinding created
service/operator-controller-service created
deployment.apps/operator-controller-controller-manager created
certificate.cert-manager.io/olmv1-ca created
certificate.cert-manager.io/olmv1-cert created
clusterissuer.cert-manager.io/olmv1-ca created
issuer.cert-manager.io/self-sign-issuer created
namespace/olmv1-system configured
customresourcedefinition.apiextensions.k8s.io/clustercatalogs.olm.operatorframework.io created
serviceaccount/catalogd-controller-manager created
role.rbac.authorization.k8s.io/catalogd-leader-election-role created
clusterrole.rbac.authorization.k8s.io/catalogd-manager-role created
clusterrole.rbac.authorization.k8s.io/catalogd-metrics-reader created
clusterrole.rbac.authorization.k8s.io/catalogd-proxy-role created
rolebinding.rbac.authorization.k8s.io/catalogd-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/catalogd-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/catalogd-proxy-rolebinding created
service/catalogd-service created
deployment.apps/catalogd-controller-manager created
certificate.cert-manager.io/olmv1-ca configured
certificate.cert-manager.io/catalogd-service-cert created
clusterissuer.cert-manager.io/olmv1-ca unchanged
issuer.cert-manager.io/self-sign-issuer unchanged
mutatingwebhookconfiguration.admissionregistration.k8s.io/catalogd-mutating-webhook-configuration created
Waiting for deployment "catalogd-controller-manager" rollout to finish: 0 of 1 updated replicas are available...
Waiting for deployment "catalogd-controller-manager" rollout to finish: 0 of 1 updated replicas are available...
deployment "catalogd-controller-manager" successfully rolled out
deployment.apps/catalogd-controller-manager condition met
deployment.apps/operator-controller-controller-manager condition met
clustercatalog.olm.operatorframework.io/operatorhubio created
clustercatalog.olm.operatorframework.io/operatorhubio condition met
๐ญ inspect crds (clustercatalog)
โฏ kubectl get crds -A
NAME CREATED AT
certificaterequests.cert-manager.io 2025-02-10T16:47:43Z
certificates.cert-manager.io 2025-02-10T16:47:43Z
challenges.acme.cert-manager.io 2025-02-10T16:47:44Z
clustercatalogs.olm.operatorframework.io 2025-02-10T16:48:01Z
clusterextensions.olm.operatorframework.io 2025-02-10T16:48:01Z
clusterissuers.cert-manager.io 2025-02-10T16:47:44Z
issuers.cert-manager.io 2025-02-10T16:47:44Z
orders.acme.cert-manager.io 2025-02-10T16:47:44Z
โฏ kubectl get clustercatalog -A
NAME LASTUNPACKED SERVING AGE
operatorhubio 5s True 11s
โฏ echo "... checking catalogd controller is available"
... checking catalogd controller is available
โฏ kubectl wait --for=condition=Available -n olmv1-system deploy/catalogd-controller-manager --timeout=1m
deployment.apps/catalogd-controller-manager condition met
โฏ echo "... checking clustercatalog is serving"
... checking clustercatalog is serving
โฏ kubectl wait --for=condition=Serving clustercatalog/operatorhubio --timeout=60s
clustercatalog.olm.operatorframework.io/operatorhubio condition met
โฏ echo "... checking clustercatalog is finished unpacking"
... checking clustercatalog is finished unpacking
โฏ kubectl wait --for=condition=Progressing=False clustercatalog/operatorhubio --timeout=60s
error: timed out waiting for the condition on clustercatalogs/operatorhubio
๐ญ port forward the catalogd-service service to interact with the HTTP server serving catalog contents
โฏ (kubectl -n olmv1-system port-forward svc/catalogd-service 8081:443)&
0๏ธโฃ 3๏ธโฃ Forwarding from 127.0.0.1:8081 -> 8443
Forwarding from [::1]:8081 -> 8443
๐ญ check what 'packages' are available in this catalog
โฏ curl -k https://localhost:8081/catalogs/operatorhubio/api/v1/all | jq -s '.[] | select(.schema == "olm.package") | .name'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Handling connection for 8081
100 20.8M 100 20.8M 0 0 94.5M 0 --:--:-- --:--:-- --:--:-- 94.3M
"ack-acm-controller"
"ack-documentdb-controller"
"ack-athena-controller"
"ack-apigatewayv2-controller"
"ack-cloudtrail-controller"
"ack-acmpca-controller"
"ack-applicationautoscaling-controller"
"ack-cloudwatchlogs-controller"
"ack-apigateway-controller"
"ack-cloudwatch-controller"
"ack-dynamodb-controller"
"ack-cloudfront-controller"
"ack-ec2-controller"
"ack-ecr-controller"
"ack-ecs-controller"
"ack-efs-controller"
"ack-eks-controller"
"ack-elasticache-controller"
"ack-elbv2-controller"
"ack-iam-controller"
"ack-eventbridge-controller"
"ack-emrcontainers-controller"
"ack-kafka-controller"
"ack-keyspaces-controller"
"ack-kinesis-controller"
"ack-kms-controller"
"ack-lambda-controller"
"ack-memorydb-controller"
"ack-mq-controller"
"ack-networkfirewall-controller"
"ack-opensearchservice-controller"
"ack-organizations-controller"
"ack-pipes-controller"
"ack-prometheusservice-controller"
"ack-rds-controller"
"ack-recyclebin-controller"
"ack-route53-controller"
"ack-route53resolver-controller"
"ack-s3-controller"
"ack-sagemaker-controller"
"ack-secretsmanager-controller"
"ack-ses-controller"
"ack-sfn-controller"
"ack-sns-controller"
"ack-sqs-controller"
"ack-ssm-controller"
"aerospike-kubernetes-operator"
"ack-wafv2-controller"
"airflow-helm-operator"
"akka-cluster-operator"
"aiven-operator"
"anchore-engine"
"apch-operator"
"alvearie-imaging-ingestion"
"api-operator"
"alloydb-omni-operator"
"apicast-community-operator"
"api-testing-operator"
"apicurio-api-controller"
"apicurio-registry"
"application-services-metering-operator"
"apimatic-kubernetes-operator"
"aqua"
"app-director-operator"
"appranix"
"argocd-operator-helm"
"atlasmap-operator"
"authorino-operator"
"argocd-operator"
"azure-service-operator"
"appdynamics-operator"
"aws-auth-operator"
"banzaicloud-kafka-operator"
"beegfs-csi-driver-operator"
"bookkeeper-operator"
"camel-k"
"camel-karavan-operator"
"bpfman-operator"
"cassandra-operator"
"cc-operator"
"cass-operator-community"
"awss3-operator-registry"
"ceph-s3-operator"
"chaosblade-operator"
"carbonetes-operator"
"cert-manager"
"clever-operator"
"cluster-aas-operator"
"cloudnative-pg"
"cluster-impairment-operator"
"cluster-manager"
"cockroachdb"
"community-trivy-operator"
"composable-operator"
"cos-bucket-operator"
"couchbase-enterprise"
"clickhouse"
"community-kubevirt-hyperconverged"
"cryostat-operator"
"credstash-operator"
"customized-user-remediation"
"dapr-kubernetes-operator"
"datadog-operator"
"datasance-pot-operator"
"datatrucker-operator"
"debezium-operator"
"dell-csm-operator"
"deployment-validation-operator"
"ditto-operator"
"dns-operator"
"dnext-operator"
"druid-operator"
"cte-k8s-operator"
"ecr-secret-operator"
"dynatrace-operator"
"eginnovations-operator"
"elastic-cloud-eck"
"ember-csi-operator"
"enc-key-sync"
"enmasse"
"edp-keycloak-operator"
"elastic-phenix-operator"
"esindex-operator"
"etcd"
"event-streams-topic"
"ext-postgres-operator"
"eventing-kogito"
"falco"
"external-secrets-operator"
"federatorai"
"fence-agents-remediation"
"flagsmith"
"fossul-operator"
"function-mesh"
"flux-operator"
"flink-kubernetes-operator"
"gingersnap"
"galaxy-operator"
"github-arc-operator"
"gitlab-operator-kubernetes"
"gitlab-runner-operator"
"grafana-operator"
"flux"
"halkyon"
"ham-deploy"
"hawkbit-operator"
"hawtio-operator"
"hive-operator"
"hazelcast-platform-operator"
"horreum-operator"
"hpa-operator"
"hpe-csi-operator"
"hyperfoil-bundle"
"ibm-application-gateway-operator"
"hpe-ezmeral-csi-operator"
"hedvig-operator"
"ibm-block-csi-operator-community"
"ibm-quantum-operator"
"ibm-security-verify-access-operator"
"ibm-security-verify-directory-operator"
"ibm-spectrum-scale-csi-operator"
"ibmcloud-iam-operator"
"infinispan"
"ibmcloud-operator"
"instana-agent-operator"
"instaslice-operator"
"integrity-shield-operator"
"intel-device-plugins-operator"
"intel-ethernet-operator"
"integration-operator"
"iot-simulator"
"istio"
"istio-workspace-operator"
"ipfs-operator"
"joget-tomcat-operator"
"kaap"
"jenkins-operator"
"kaoto-operator"
"keda"
"jaeger"
"k8gb"
"kernel-module-management-hub"
"keycloak-operator"
"kernel-module-management"
"keydb-operator"
"kiali"
"klusterlet"
"knative-operator"
"keycloak-permissions-operator"
"kogito-operator"
"kom-operator"
"kong"
"kong-gateway-operator"
"konveyor-operator"
"krateo-installer"
"ks-releaser-operator"
"kuadrant-operator"
"kube-green"
"kepler-operator"
"kubefed-operator"
"kube-arangodb"
"kubemod"
"kubeflow"
"kubemq-operator"
"kubensync"
"kubernetes-nmstate-operator"
"kubernetes-imagepuller-operator"
"kubero-operator"
"kubestone"
"layer7-operator"
"kyverno-operator"
"leaksignal-operator"
"kubeturbo"
"lightbend-console-operator"
"kube-loxilb-operator"
"limitador-operator"
"lbconfig-operator"
"litmuschaos"
"lms-moodle-operator"
"lib-bucket-provisioner"
"mariadb-operator"
"logging-operator"
"machine-deletion-operator"
"mariadb-operator-app"
"log2rbac"
"mcad-operator"
"marin3r"
"mercury-operator"
"metallb-operator"
"metering-upstream"
"microcks"
"loki-operator"
"minio-operator"
"mongodb-atlas-kubernetes"
"mondoo-operator"
"meshery-operator"
"mongodb-enterprise"
"mongodb-operator"
"moodle-operator"
"monocle-operator"
"multi-nic-cni-operator"
"multicluster-operators-subscription"
"mysql"
"myvirtualdirectory"
"nacos-operator"
"ndb-operator"
"move2kube-operator"
"ndmspc-operator"
"netobserv-operator"
"nexus-operator"
"neuvector-operator"
"nfs-operator"
"node-healthcheck-operator"
"node-maintenance-operator"
"nri-plugins-operator"
"noobaa-operator"
"nexus-operator-m88i"
"nuxeo-operator"
"oci-ccm-operator"
"oneagent"
"nfs-provisioner-operator"
"openshift-qiskit-operator"
"openshift-node-upgrade-mutex-operator"
"opentelemetry-operator"
"oracle-database-operator"
"nfd-operator"
"otc-rds-operator"
"ovms-operator"
"nsm-operator-registry"
"parodos-operator"
"patterns-operator"
"pcc-operator"
"parseable-operator"
"percona-postgresql-operator"
"percona-server-mongodb-operator"
"percona-xtradb-cluster-operator"
"pinot-operator"
"pixie-operator"
"pmem-csi-operator"
"portworx"
"portworx-essentials"
"postgres-operator"
"openebs"
"postgres-operator-krestomatio"
"postgresql-operator"
"postgresql"
"prometheus"
"project-quay-container-security-operator"
"project-quay"
"postgresql-operator-dev4devs-com"
"prometheus-exporter-operator"
"prometurbo"
"pulp-operator"
"pubsubplus-eventbroker-operator"
"planetscale"
"pulsar-resources-operator"
"pulsar-operator"
"pystol"
"quay-api-operator"
"rabbitmq-cluster-operator"
"qserv-operator"
"rabbitmq-messaging-topology-operator"
"rabbitmq-single-active-consumer-operator"
"redis-enterprise"
"radanalytics-spark"
"redis-operator"
"registry-operator"
"ripsaw"
"robin-operator"
"rook-ceph"
"rocketmq-operator"
"rsct-operator"
"rook-edgefs"
"sailoperator"
"sap-btp-operator"
"security-profiles-operator"
"seldon-operator"
"service-binding-operator"
"self-node-remediation"
"sematext"
"shipwright-operator"
"sap-hana-express-operator"
"siddhi-operator"
"silicom-sts-operator"
"skupper-operator"
"sigstore-helm-operator"
"sn-operator"
"searchpe-operator"
"sonataflow-operator"
"sosivio"
"sonar-operator"
"spark-gcp"
"skydive-operator"
"spinnaker-operator"
"snapscheduler"
"splunk"
"simple-authenticator"
"stackgres"
"starboard-operator"
"steerd-presto-operator"
"storageos"
"strimzi-kafka-operator"
"submariner"
"susql-operator"
"routernetes-operator"
"synapse-operator"
"t8c"
"tagger"
"telegraf-operator"
"tektoncd-operator"
"tempo-operator"
"temporal-operator"
"tf-controller"
"tf-operator"
"tidb-operator"
"topolvm-operator"
"trident-operator"
"trustee-operator"
"trustify-operator"
"ublhub-operator"
"traefikee-operator"
"universal-crossplane"
"vault"
"trivy-operator"
"vault-helm"
"victoriametrics-operator"
"verticadb-operator"
"virt-gateway-operator"
"varnish-operator"
"wandb-operator"
"wavefront"
"windup-operator"
"wso2am-operator"
"xrootd-operator"
"yaks"
"zookeeper-operator"
"yugabyte-operator"
"zoperator"
"wildfly"
๐ญ check what channels are included in the wavefront package
โฏ curl -k https://localhost:8081/catalogs/operatorhubio/api/v1/all | jq -s '.[] | select(.schema == "olm.channel") | select(.package == "wavefront") | .name'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Handling connection for 8081
100 20.8M 100 20.8M 0 0 116M 0 --:--:-- --:--:-- --:--:-- 116M
"alpha"
๐ญ check what bundles are included in the wavefront package
โฏ curl -k https://localhost:8081/catalogs/operatorhubio/api/v1/all | jq -s '.[] | select(.schema == "olm.bundle") | select(.package == "wavefront") | .name'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Handling connection for 8081
100 20.8M 100 20.8M 0 0 119M 0 --:--:-- --:--:-- --:--:-- 119M
"wavefront-operator.v0.1.0"
๐ฌ End recording - demo-script.sh
(Powered by https://github.com/zechris/asciinema-rec_script v1.2.0-rc4-28-g1cf5261-dirty)
asciinema: recording finished
asciinema: asciicast saved to /var/folders/n4/j272tr6d7hq63mf7_skv6zr80000gn/T/generate-asciidemo.XXXXX.3ps3gffYCb/catalogd-demo.cast
View the recording at:
https://asciinema.org/a/0aKeOR0bWbgc0QWjkek1bzHsV
This asciinema CLI hasn't been linked to any asciinema.org account.
Recordings uploaded from unrecognized systems, such as this one, are automatically
deleted 7 days after upload.
If you want to preserve all recordings uploaded from this machine,
authenticate this CLI with your asciinema.org account by opening the following link:
https://asciinema.org/connect/054dd205-c559-4711-80ae-a01034074c79