github.com/interconnectedcloud/qdr-operator@v0.0.0-20210826174505-576d2b33dac7/deploy/olm-catalog/qdr-operator/0.3.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.3.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.3.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 linkCapacity: 374 type: integer 375 description: Capacity of links within a connection 376 sslProfile: 377 type: string 378 description: Name of the ssl profile to use 379 role: 380 type: boolean 381 expose: 382 type: boolean 383 authenticatePeer: 384 type: boolean 385 description: Require incoming connections to authenticate 386 saslMechanisms: 387 type: string 388 description: List of space separate SASL mechanisms to offer 389 autoLinks: 390 items: 391 properties: 392 address: 393 type: string 394 connection: 395 type: string 396 containerId: 397 type: string 398 direction: 399 type: string 400 externalAddress: 401 type: string 402 phase: 403 format: int32 404 type: integer 405 fallback: 406 type: boolean 407 required: 408 - address 409 - direction 410 type: object 411 type: array 412 connectors: 413 type: array 414 description: Configuration of each individual router connnector 415 items: 416 properties: 417 cost: 418 format: int32 419 type: integer 420 linkCapacity: 421 format: int32 422 type: integer 423 host: 424 type: string 425 name: 426 type: string 427 port: 428 format: int32 429 type: integer 430 routeContainer: 431 type: boolean 432 sslProfile: 433 type: string 434 verifyHostname: 435 type: boolean 436 description: Verify hostname of server when using TLS 437 required: 438 - host 439 - port 440 type: object 441 type: array 442 interRouterConnectors: 443 type: array 444 description: Configuration of each individual inter router connector 445 items: 446 properties: 447 cost: 448 format: int32 449 type: integer 450 linkCapacity: 451 format: int32 452 type: integer 453 host: 454 type: string 455 name: 456 type: string 457 port: 458 format: int32 459 type: integer 460 routeContainer: 461 type: boolean 462 sslProfile: 463 type: string 464 verifyHostname: 465 type: boolean 466 description: Verify hostname of server when using TLS 467 required: 468 - host 469 - port 470 type: object 471 type: array 472 edgeConnectors: 473 type: array 474 description: Configuration of each individual edge uplink connector 475 items: 476 properties: 477 cost: 478 format: int32 479 type: integer 480 linkCapacity: 481 format: int32 482 type: integer 483 host: 484 type: string 485 name: 486 type: string 487 port: 488 format: int32 489 type: integer 490 routeContainer: 491 type: boolean 492 description: Indicator for a router-broker connection 493 sslProfile: 494 type: string 495 verifyHostname: 496 type: boolean 497 description: Verify hostname of server when using TLS 498 required: 499 - host 500 - port 501 type: object 502 type: array 503 interRouterListeners: 504 type: array 505 description: Configuration of each individual inter router listener 506 items: 507 type: object 508 description: interconnect listener configuration 509 properties: 510 name: 511 type: string 512 description: Listener name 513 host: 514 type: string 515 description: Host name 516 port: 517 type: integer 518 description: Port number 519 routeContainer: 520 type: boolean 521 description: Indicator for a router-broker connection 522 http: 523 type: boolean 524 description: Accept HTTP connections 525 cost: 526 type: integer 527 description: Cost metric for inter router connections 528 linkCapacity: 529 type: integer 530 description: Capacity of links within a connection 531 sslProfile: 532 type: string 533 description: Name of the ssl profile to use 534 expose: 535 type: boolean 536 authenticatePeer: 537 type: boolean 538 description: Require incoming connections to authenticate 539 saslMechanisms: 540 type: string 541 description: List of space separate SASL mechanisms to offer 542 edgeListeners: 543 type: array 544 description: Configuration of each individual inter edge listener 545 items: 546 type: object 547 description: interconnect listener configuration 548 properties: 549 name: 550 type: string 551 description: Listener name 552 host: 553 type: string 554 description: Host name 555 port: 556 type: integer 557 description: Port number 558 routeContainer: 559 type: boolean 560 description: Indicator for a router-broker connection 561 http: 562 type: boolean 563 description: Accept HTTP connections 564 cost: 565 type: integer 566 description: Cost metric for inter router connections 567 linkCapacity: 568 type: integer 569 description: Capacity of links within a connection 570 sslProfile: 571 type: string 572 description: Name of the ssl profile to use 573 expose: 574 type: boolean 575 authenticatePeer: 576 type: boolean 577 description: Require incoming connections to authenticate 578 saslMechanisms: 579 type: string 580 description: List of space separate SASL mechanisms to offer 581 addresses: 582 type: array 583 description: Configuration of each address distribution and phasing 584 items: 585 type: object 586 description: address configuration 587 properties: 588 prefix: 589 type: string 590 description: The address prefix for the configured setting 591 pattern: 592 type: string 593 description: A wildcarded pattern for address matching 594 distribution: 595 type: string 596 description: Treatment of traffic associated with the address 597 enum: 598 - balanced 599 - closest 600 - multicast 601 waypoint: 602 type: boolean 603 description: Indicator for waypoint use 604 ingressPhase: 605 type: integer 606 minimum: 0 607 maximum: 9 608 description: Ingress phase override for the address 609 egressPhase: 610 type: integer 611 minimum: 0 612 maximum: 9 613 description: Egress phase override for the address 614 priority: 615 type: integer 616 minimum: 0 617 maximum: 9 618 description: Priority assigned to address for inter router transfer 619 enableFallback: 620 type: boolean 621 description: Indicator for treatment of undeliverable messages 622 sslProfiles: 623 items: 624 properties: 625 caCert: 626 type: string 627 ciphers: 628 type: string 629 credentials: 630 type: string 631 generateCredentials: 632 type: boolean 633 generateCaCert: 634 type: boolean 635 name: 636 type: string 637 protocols: 638 type: string 639 mutualAuth: 640 type: boolean 641 type: object 642 type: array 643 linkRoutes: 644 items: 645 properties: 646 addExternalPrefix: 647 type: string 648 connection: 649 type: string 650 containerId: 651 type: string 652 direction: 653 type: string 654 pattern: 655 type: string 656 prefix: 657 type: string 658 delExternalPrefix: 659 type: string 660 type: object 661 type: array 662 issuer: 663 type: string 664 type: object 665 status: 666 type: object 667 required: 668 - pods 669 - conditions 670 properties: 671 revNumber: 672 type: string 673 pods: 674 items: 675 type: string 676 type: array 677 phase: 678 type: string 679 conditions: 680 description: Conditions keeps most recent interconnect conditions 681 items: 682 properties: 683 reason: 684 type: string 685 transitionTime: 686 format: date-time 687 type: object 688 type: 689 type: string 690 required: 691 - type 692 type: object 693 type: array 694 packages: > 695 - #! package-manifest: deploy/olm-catalog/qdr-operator/0.3.0/qdr-operator.v0.3.0.clusterserviceversion.yaml 696 packageName: qdr-operator 697 channels: 698 - name: beta 699 currentCSV: qdr-operator.v0.3.0 700 701 - apiVersion: operators.coreos.com/v1alpha1 702 kind: CatalogSource 703 metadata: 704 name: qdr-resources 705 namespace: operator-lifecycle-manager 706 spec: 707 configMap: qdr-resources 708 displayName: Qdr Operators 709 publisher: Red Hat 710 sourceType: internal 711 status: 712 configMapReference: 713 name: qdr-resources 714 namespace: operator-lifecycle-manager