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