github.com/interconnectedcloud/qdr-operator@v0.0.0-20210826174505-576d2b33dac7/deploy/olm-catalog/qdr-operator/0.2.0/catalog-source.yaml (about) 1 apiVersion: v1 2 kind: List 3 items: 4 - apiVersion: v1 5 kind: ConfigMap 6 metadata: 7 name: qdr-resources 8 namespace: operator-lifecycle-manager 9 data: 10 clusterServiceVersions: | 11 - apiVersion: operators.coreos.com/v1alpha1 12 kind: ClusterServiceVersion 13 metadata: 14 annotations: 15 alm-examples: >- 16 [{"apiVersion":"interconnectedcloud.github.io/v1alpha1","kind":"Interconnect","metadata":{"name":"amq-interconnect"},"spec":{"deploymentPlan":{"size":2,"role":"interior","placement":"Any"}}}] 17 capabilities: Basic Install 18 categories: Messaging 19 name: qdr-operator.v0.2.0 20 namespace: placeholder 21 spec: 22 apiservicedefinitions: {} 23 customresourcedefinitions: 24 owned: 25 - version: v1alpha1 26 kind: Interconnect 27 description: An instance of Interconnect 28 displayName: Interconnect 29 name: interconnects.interconnectedcloud.github.io 30 resources: 31 - kind: Service 32 version: v1 33 - kind: Deployment 34 version: v1 35 - kind: ServiceAccount 36 version: v1 37 - kind: interconnects 38 version: v1alpha1 39 - kind: rolebindings 40 version: v1 41 - kind: pods 42 version: v1 43 - kind: configmaps 44 version: v1 45 - kind: roles 46 version: v1 47 - kind: routes 48 version: v1 49 - kind: secrets 50 version: v1 51 specDescriptors: 52 - description: The role and placement plan for the interconnect deployment 53 displayName: DeploymentPlan 54 path: deploymentPlan 55 - description: Listeners for incoming connections to the router 56 displayName: Listeners 57 path: listeners 58 - description: Listeners for inter router mesh connections 59 displayName: InterRouterListeners 60 path: interRouterListeners 61 - description: Listeners for edge downlink connections 62 displayName: EdgeListeners 63 path: edgeListeners 64 - description: TLS/SSL configuration for connections 65 displayName: SslProfiles 66 path: sslProfiles 67 - description: Address configuration for distribution and phasing 68 displayName: Addresses 69 path: addresses 70 - description: Auto links address configuration 71 displayName: AutoLinks 72 path: autoLinks 73 - description: Link routes address configuration 74 displayName: LinkRoutes 75 path: linkRoutes 76 - description: Outbound client connections to AMQP 1.0 entity 77 displayName: Connectors 78 path: connectors 79 - description: Outbound interior router connections for mesh operation 80 displayName: InterRouterConnectors 81 path: interRouterConnectors 82 - description: Outbound edge router connections for edge uplink 83 displayName: EdgeConnectors 84 path: edgeConnectors 85 statusDescriptors: 86 - description: The current revision of the Interconnect cluster 87 displayName: Revision Number 88 path: revNumber 89 - description: The current pods 90 displayName: Pods 91 path: pods 92 - description: The current conditions 93 displayName: Conditions 94 path: conditions 95 description: | 96 97 The Qdr Operator is a lightweight [AMQP 1.0](https://www.amqp.org/) message router for building large, highly resilient messaging networks for hybrid cloud and IoT/edge deployments. Qdr transparently learns the addresses of messaging endpoints (such as clients, servers, and message brokers) and flexibly routes messages between them. 98 99 ### Core Capabilities 100 101 * High throughput, low latency, shortest path message forwarding based on Layer 7 address routing mechanisms. 102 103 * `Interior` mode deployments for any arbitrary topology of geographically-distributed and interconnected Qdrs. 104 105 * `Edge` mode deployments for extremely large scale device endpoint connectivity. 106 107 * Automatic message traffic re-routing when the network topology changes (resiliency without restrictions). 108 109 * Flexible addressing schemes and delivery semantics (anycast, multicast, closest, balanced). 110 111 * Integrated management with full support for the draft AMQP management specification. 112 113 * Full-featured security capabilities for authentication, authorization, and policy-based resource access control. 114 115 ### Operator Features 116 117 * **Flexible deployment plans** - Configurable deployment plans are available for `interior` and `edge` mode scenarios. These plans include all dependent resources. 118 119 * **Placement directives** - Directives are provided to control how the pods should be scheduled. 120 121 * **Connectivity configuration defaults** - Configuration defaults are automatically generated for listeners, connectors, and SSL/TLS setup. 122 123 * **Exposes the service** - Integrated management of OpenShift Routes for exposed listener services for client, inter-router, and edge communications. 124 125 * **Security certificate management** - Certificates are created and managed through integration with [jetstack cert-manager](https://github.com/jetstack/cert-manager). 126 127 ### Troubleshooting 128 129 After deploying Interconnect, check any of the following to verify that it is operating correctly: 130 131 * The Interconnect instance 132 133 * The Deployment (or DaemonSet) instance 134 135 * An individual pod for the Deployment (or DaemonSet) 136 137 * A Route created for exposed services 138 139 In addition, use `qdstat` commands to verify connectivity. 140 141 displayName: Qdr Operator 142 install: 143 spec: 144 deployments: 145 - name: qdr-operator 146 spec: 147 replicas: 1 148 selector: 149 matchLabels: 150 name: qdr-operator 151 template: 152 metadata: 153 labels: 154 name: qdr-operator 155 spec: 156 serviceAccountName: qdr-operator 157 containers: 158 - command: 159 - qdr-operator 160 env: 161 - name: WATCH_NAMESPACE 162 valueFrom: 163 fieldRef: 164 fieldPath: metadata.namespace 165 - name: POD_NAME 166 valueFrom: 167 fieldRef: 168 fieldPath: metadata.name 169 - name: OPERATOR_NAME 170 value: qdr-operator 171 image: quay.io/interconnectedcloud/qdr-operator 172 imagePullPolicy: Always 173 name: qdr-operator 174 ports: 175 - containerPort: 60000 176 name: metrics 177 resources: {} 178 permissions: 179 - rules: 180 - apiGroups: 181 - "" 182 resources: 183 - pods 184 - services 185 - endpoints 186 - serviceaccounts 187 - persistentvolumeclaims 188 - events 189 - configmaps 190 - secrets 191 verbs: 192 - '*' 193 - apiGroups: 194 - "route.openshift.io" 195 resources: 196 - routes 197 - routes/custom-host 198 - routes/status 199 verbs: 200 - get 201 - list 202 - watch 203 - create 204 - delete 205 - apiGroups: 206 - rbac.authorization.k8s.io 207 resources: 208 - rolebindings 209 - roles 210 verbs: 211 - get 212 - list 213 - watch 214 - create 215 - delete 216 - apiGroups: 217 - "" 218 resources: 219 - namespaces 220 verbs: 221 - get 222 - apiGroups: 223 - apps 224 resources: 225 - deployments 226 - daemonsets 227 - replicasets 228 - statefulsets 229 verbs: 230 - '*' 231 - apiGroups: 232 - "certmanager.k8s.io" 233 resources: 234 - issuers 235 - certificates 236 verbs: 237 - get 238 - list 239 - watch 240 - create 241 - delete 242 - apiGroups: 243 - monitoring.coreos.com 244 resources: 245 - servicemonitors 246 verbs: 247 - get 248 - create 249 - apiGroups: 250 - interconnectedcloud.github.io 251 resources: 252 - '*' 253 verbs: 254 - '*' 255 serviceAccountName: qdr-operator 256 strategy: deployment 257 installModes: 258 - supported: true 259 type: OwnNamespace 260 - supported: true 261 type: SingleNamespace 262 - supported: false 263 type: MultiNamespace 264 - supported: true 265 type: AllNamespaces 266 maturity: alpha 267 provider: {} 268 version: 0.2.0 269 customResourceDefinitions: | 270 - apiVersion: apiextensions.k8s.io/v1beta1 271 kind: CustomResourceDefinition 272 metadata: 273 name: interconnects.interconnectedcloud.github.io 274 spec: 275 group: interconnectedcloud.github.io 276 names: 277 kind: Interconnect 278 listKind: InterconnectList 279 plural: interconnects 280 singular: interconnect 281 scope: Namespaced 282 version: v1alpha1 283 subresources: 284 status: {} 285 validation: 286 # openAPIV3Schema is the schema for validating custom objects. 287 openAPIV3Schema: 288 required: 289 - spec 290 properties: 291 spec: 292 properties: 293 deploymentPlan: 294 type: object 295 properties: 296 image: 297 type: string 298 description: The image used for the interconnect deployment 299 size: 300 type: integer 301 minimum: 1 302 maximum: 16 303 description: The number of interconnect pods to deploy 304 role: 305 description: The interconnect deployment role 306 type: string 307 enum: 308 - edge 309 - interior 310 placement: 311 description: The interconnect placement plan 312 type: string 313 enum: 314 - Any 315 - Every 316 - AntiAffinity 317 - Node 318 resources: 319 type: object 320 properties: 321 requests: 322 type: object 323 properties: 324 cpu: 325 type: string 326 memory: 327 type: string 328 limits: 329 type: object 330 properties: 331 cpu: 332 type: string 333 memory: 334 type: string 335 issuer: 336 type: string 337 description: The externally provided credentials 338 livenessPort: 339 type: integer 340 description: The liveness probe port number 341 serviceType: 342 type: string 343 description: The type of service to create 344 users: 345 type: string 346 description: The name of a secret holding user and password details 347 listeners: 348 type: array 349 description: Configuration of each individual interconnect listener 350 minItems: 1 351 items: 352 type: object 353 description: interconnect listener configuration 354 properties: 355 name: 356 type: string 357 description: Listener name 358 host: 359 type: string 360 description: Host name 361 port: 362 type: integer 363 description: Port number 364 routeContainer: 365 type: boolean 366 description: Indicator for a router-broker connection 367 http: 368 type: boolean 369 description: Accept HTTP connections 370 cost: 371 type: integer 372 description: Cost metric for inter router connections 373 sslProfile: 374 type: string 375 description: Name of the ssl profile to use 376 role: 377 type: boolean 378 expose: 379 type: boolean 380 authenticatePeer: 381 type: boolean 382 description: Require incoming connections to authenticate 383 saslMechanisms: 384 type: string 385 description: List of space separate SASL mechanisms to offer 386 autoLinks: 387 items: 388 properties: 389 address: 390 type: string 391 connection: 392 type: string 393 containerId: 394 type: string 395 direction: 396 type: string 397 externalAddress: 398 type: string 399 phase: 400 format: int32 401 type: integer 402 fallback: 403 type: boolean 404 required: 405 - address 406 - direction 407 type: object 408 type: array 409 connectors: 410 type: array 411 description: Configuration of each individual router connnector 412 items: 413 properties: 414 cost: 415 format: int32 416 type: integer 417 host: 418 type: string 419 name: 420 type: string 421 port: 422 format: int32 423 type: integer 424 routeContainer: 425 type: boolean 426 sslProfile: 427 type: string 428 verifyHostname: 429 type: boolean 430 description: Verify hostname of server when using TLS 431 required: 432 - host 433 - port 434 type: object 435 type: array 436 interRouterConnectors: 437 type: array 438 description: Configuration of each individual inter router connector 439 items: 440 properties: 441 cost: 442 format: int32 443 type: integer 444 host: 445 type: string 446 name: 447 type: string 448 port: 449 format: int32 450 type: integer 451 routeContainer: 452 type: boolean 453 sslProfile: 454 type: string 455 verifyHostname: 456 type: boolean 457 description: Verify hostname of server when using TLS 458 required: 459 - host 460 - port 461 type: object 462 type: array 463 edgeConnectors: 464 type: array 465 description: Configuration of each individual edge uplink connector 466 items: 467 properties: 468 cost: 469 format: int32 470 type: integer 471 host: 472 type: string 473 name: 474 type: string 475 port: 476 format: int32 477 type: integer 478 routeContainer: 479 type: boolean 480 description: Indicator for a router-broker connection 481 sslProfile: 482 type: string 483 verifyHostname: 484 type: boolean 485 description: Verify hostname of server when using TLS 486 required: 487 - host 488 - port 489 type: object 490 type: array 491 interRouterListeners: 492 type: array 493 description: Configuration of each individual inter router listener 494 items: 495 type: object 496 description: interconnect listener configuration 497 properties: 498 name: 499 type: string 500 description: Listener name 501 host: 502 type: string 503 description: Host name 504 port: 505 type: integer 506 description: Port number 507 routeContainer: 508 type: boolean 509 description: Indicator for a router-broker connection 510 http: 511 type: boolean 512 description: Accept HTTP connections 513 cost: 514 type: integer 515 description: Cost metric for inter router connections 516 sslProfile: 517 type: string 518 description: Name of the ssl profile to use 519 expose: 520 type: boolean 521 authenticatePeer: 522 type: boolean 523 description: Require incoming connections to authenticate 524 saslMechanisms: 525 type: string 526 description: List of space separate SASL mechanisms to offer 527 edgeListeners: 528 type: array 529 description: Configuration of each individual inter edge listener 530 items: 531 type: object 532 description: interconnect listener configuration 533 properties: 534 name: 535 type: string 536 description: Listener name 537 host: 538 type: string 539 description: Host name 540 port: 541 type: integer 542 description: Port number 543 routeContainer: 544 type: boolean 545 description: Indicator for a router-broker connection 546 http: 547 type: boolean 548 description: Accept HTTP connections 549 cost: 550 type: integer 551 description: Cost metric for inter router connections 552 sslProfile: 553 type: string 554 description: Name of the ssl profile to use 555 expose: 556 type: boolean 557 authenticatePeer: 558 type: boolean 559 description: Require incoming connections to authenticate 560 saslMechanisms: 561 type: string 562 description: List of space separate SASL mechanisms to offer 563 addresses: 564 type: array 565 description: Configuration of each address distribution and phasing 566 items: 567 type: object 568 description: address configuration 569 properties: 570 prefix: 571 type: string 572 description: The address prefix for the configured setting 573 pattern: 574 type: string 575 description: A wildcarded pattern for address matching 576 distribution: 577 type: string 578 description: Treatment of traffic associated with the address 579 enum: 580 - balanced 581 - closest 582 - multicast 583 waypoint: 584 type: boolean 585 description: Indicator for waypoint use 586 ingressPhase: 587 type: integer 588 minimum: 0 589 maximum: 9 590 description: Ingress phase override for the address 591 egressPhase: 592 type: integer 593 minimum: 0 594 maximum: 9 595 description: Egress phase override for the address 596 priority: 597 type: integer 598 minimum: 0 599 maximum: 9 600 description: Priority assigned to address for inter router transfer 601 enableFallback: 602 type: boolean 603 description: Indicator for treatment of undeliverable messages 604 sslProfiles: 605 items: 606 properties: 607 caCert: 608 type: string 609 ciphers: 610 type: string 611 credentials: 612 type: string 613 generateCredentials: 614 type: boolean 615 generateCaCert: 616 type: boolean 617 name: 618 type: string 619 protocols: 620 type: string 621 mutualAuth: 622 type: boolean 623 type: object 624 type: array 625 linkRoutes: 626 items: 627 properties: 628 addExternalPrefix: 629 type: string 630 connection: 631 type: string 632 containerId: 633 type: string 634 direction: 635 type: string 636 pattern: 637 type: string 638 prefix: 639 type: string 640 delExternalPrefix: 641 type: string 642 type: object 643 type: array 644 issuer: 645 type: string 646 type: object 647 status: 648 type: object 649 required: 650 - pods 651 - conditions 652 properties: 653 revNumber: 654 type: string 655 pods: 656 items: 657 type: string 658 type: array 659 phase: 660 type: string 661 conditions: 662 description: Conditions keeps most recent interconnect conditions 663 items: 664 properties: 665 reason: 666 type: string 667 transitionTime: 668 format: date-time 669 type: object 670 type: 671 type: string 672 required: 673 - type 674 type: object 675 type: array 676 packages: > 677 - #! package-manifest: deploy/olm-catalog/qdr-operator/0.2.0/qdr-operator.v0.2.0.clusterserviceversion.yaml 678 packageName: qdr-operator 679 channels: 680 - name: beta 681 currentCSV: qdr-operator.v0.2.0 682 683 - apiVersion: operators.coreos.com/v1alpha1 684 kind: CatalogSource 685 metadata: 686 name: qdr-resources 687 namespace: operator-lifecycle-manager 688 spec: 689 configMap: qdr-resources 690 displayName: Qdr Operators 691 publisher: Red Hat 692 sourceType: internal 693 status: 694 configMapReference: 695 name: qdr-resources 696 namespace: operator-lifecycle-manager