diff --git a/operators/pubsubplus-eventbroker-operator/1.1.1/manifests/pubsubplus-eventbroker-operator.clusterserviceversion.yaml b/operators/pubsubplus-eventbroker-operator/1.1.1/manifests/pubsubplus-eventbroker-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..9a85e9883d7 --- /dev/null +++ b/operators/pubsubplus-eventbroker-operator/1.1.1/manifests/pubsubplus-eventbroker-operator.clusterserviceversion.yaml @@ -0,0 +1,414 @@ +apiVersion: operators.coreos.com/v1beta1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "pubsubplus.solace.com/v1beta1", + "kind": "PubSubPlusEventBroker", + "metadata": { + "name": "non-ha-standalone-example" + }, + "spec": { + "redundancy": false + } + } + ] + capabilities: Seamless Upgrades + categories: Streaming & Messaging + certified: "true" + com.redhat.delivery.operator.bundle: "true" + com.redhat.openshift.versions: v4.10 + containerImage: docker.io/solace/pubsubplus-eventbroker-operator:1.1.1 + createdAt: "2024-07-31T18:47:51Z" + description: The Solace PubSub+ Event Broker Operator deploys and manages the + lifecycle of PubSub+ Event Brokers + operators.openshift.io/valid-subscription: '[]' + operators.operatorframework.io/builder: operator-sdk-v1.34.1 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + repository: https://github.com/SolaceProducts/pubsubplus-kubernetes-quickstart + support: Solace Products + name: pubsubplus-eventbroker-operator.v1.1.1 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: PubSub+ Event Broker + displayName: PubSub+ Event Broker + kind: PubSubPlusEventBroker + name: pubsubpluseventbrokers.pubsubplus.solace.com + resources: + - kind: ConfigMap + name: "" + version: v1 + - kind: Deployment + name: "" + version: v1 + - kind: Pod + name: "" + version: v1 + - kind: Secret + name: "" + version: v1 + - kind: Service + name: "" + version: v1 + - kind: StatefulSet + name: "" + version: v1 + specDescriptors: + - description: Redundancy true specifies HA deployment, false specifies Non-HA. + displayName: Redundancy + path: redundancy + - description: Developer true specifies a minimum footprint scaled-down deployment, + not for production use. If set to true it overrides SystemScaling parameters. + displayName: Developer + path: developer + - description: SystemScaling provides exact fine-grained specification of the + event broker scaling parameters and the assigned CPU / memory resources + to the Pod. + displayName: System Scaling + path: systemScaling + version: v1beta1 + description: | + ## Solace PubSub+ Platform + Solace [PubSub+ Platform](https://solace.com/products/platform/) is a complete event streaming and management platform + for real-time enterprises. The [PubSub+ Software Event Broker](https://solace.com/products/event-broker/software/) efficiently streams + event-driven information between applications, IoT devices, and user interfaces running in the cloud, on-premises, + and in hybrid environments using open APIs and protocols like AMQP, JMS, MQTT, REST and WebSocket. + It can be installed into a variety of public and private clouds, PaaS, and on-premises environments. + Event brokers in multiple locations can be linked together in an [Event Mesh](https://solace.com/what-is-an-event-mesh/) + to dynamically share events across the distributed enterprise. + + ## Solace PubSub+ Event Broker Operator + Solace Pubsub+ Event Broker Operator automatically deploys and manages PubSub+ Software Event Brokers on Kubernetes and OpenShift environments. + + Features include: + * Initial deployment configuration: Production-ready HA, non-HA or for developers + * Rolling update for configuration changes or broker upgrades + * Prometheus monitoring support + + ## Getting started + Refer to the [Solace PubSub+ Event Broker Operator Quick Start](https://github.com/SolaceProducts/pubsubplus-kubernetes-quickstart/blob/main/README.md) + displayName: Solace PubSub+ Event Broker Operator + icon: + - base64data: iVBORw0KGgoAAAANSUhEUgAABwgAAAH0CAYAAAApE3neAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAFeySURBVHhe7d0/rjzLeSZoLUFL0BJ6Cb2CwV3CYKwxuQM549NqTwABeW2xLXoDOTQGaoNEG03QaIqABBCQAAoSIICGgDv93XNLv/MnzqmsyojIiO97HuDFYFqX956qysqMiDcy68++BwAAAAAAAMpQEAIAAAAAAEAhCkIAAAAAAAAoREEIAAAAAAAAhSgIAQAAAAAAoBAFIQAAAAAAABSiIAQAAAAAAIBCFIQAAAAAAABQiIIQAAAAAAAAClEQAgAAAAAAQCEKQgAAAAAAAChEQQgAAAAAAACFKAgBAAAAAACgEAUhAAAAAAAAFKIgBAAAAAAAgEIUhAAAAAAAAFCIghAAAAAAAAAKURACAAAAAABAIQpCAAAAAAAAKERBCAAAAAAAAIUoCAEAAAAAAKAQBSEAAAAAAAAUoiAEAAAAAACAQhSEAAAAAAAAUIiCEAAAAAAAAApREAIAAAAAAEAhCkIAAAAAAAAoREEIAAAAAAAAhSgIAQAAAAAAoBAFIQCwpb/8+7/9/s/+v/8iSQIAAADAPApCAGBLCsJcAQAAAGAeBSEAsCUFYa4AAAAAMI+CEADYkoIwVwAAAACYR0EIAGxJQZgrAAAAAMyjIAQAtqQgzBUAAAAA5lEQAgBbUhDmCgAAAADzKAgBgC0pCHMFAAAAgHkUhADAlhSEuQIAAADAPApCAGBLCsJcAQAAAGAeBSEAsCUFYa4AAAAAMI+CEABI4W/+5R++/8nvf/n9f/of/7VZQMnaAQAAAGAeBSEAkM7f/elfv//ZP/7m++9++4tmGSXrBQAAAIB5FIQAQGr//O9/+qEsdGfh2gEAAABgHgUhAFBOlIbxG4Z//t//qllWyfwAAAAAMI+CEAAoS1G4TgAAAACYR0EIAJQXRaHfK7w2AAAAAMyjIAQAeOVX//ZP7ii8IAAAAADMoyAEAHgn7ihUEs4NAAAAAPMoCAEAGuJOwlaRJWMCAAAAwDwKQgCAL/zFr/66WWhJ3wAAAAAwj4IQAOALP/vH3zQLLekbAAAAAOZREAIA3OH3CMcHAAAAgHkUhAAAd/zNv/xDs9SSfgEAAABgHgUhAMAB7iIcGwAAAADmURACABzwl3//t81iS/oEAAAAgHkUhAAAB3jM6NgAAAAAMI+CEADggH/+9z81iy3pEwAAAADmURACABz0n//nf2uWW3I+AAAAAMyjIAQAOOi73/6iWW7J+QAAAAAwj4IQAOCgv/z7v22WW3I+AAAAAMyjIAQAOOhn//ibZrkl5wMAAADAPApCAICD/uZf/qFZbsn5AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghAA4CAF4bgAAAAAMI+CEADgIAXhuAAAAAAwj4IQAOAgBeG4AAAAADCPghCAh0VJcjawozh2W+WWnA8AMMf7cfkz+bs//euP/zYAAHalICwoBvK3Qf3P/vE33//l3//tf+Qnv//l9//5f/63w/nut79487//6R9+bcIAm7p9d2/f5/h+377rrcX83mmdV37+x9/98Df987//6ce/Eq4Vx2Pr+JXzgSvE9eV2/YvEWPZ2Dbrl//xf/+9/XKOeSfzv3/87I7dr3C2udcCz3p/DXs/r/9P/+K/N627vxH/n9t98f55zfoN+Xq/pvR+3PDpmiXPF6//97d9rPQ+gDgXh5mKgHYPuuJDHxf0vfvXXzcH6qvnz//5X/zEoibIyBiIVPPs5VXl/6ONX//ZPP3yvbgsErWMqS2JBIiZDMUGK1w2jxHm4dQzK+cAzbotkMRa+Xe92Gw8/m3id8XpvBWS8D66BsL/bxoX4XsfGuezntNuaQLzeWNtQJlLJznP2+Htva3nGHwD7UhBuJhZB4uIbCwGZJwqx2J91oBGvqfWaj0RByFduCwkxUI+JdusYqpTbQoPvDT3F8dQ63uR84J73i2iudZ8nxtK3O/LjvOVOAFhXnNtik1uFMvBobusBCkMyuW3w37EMPJIYl8V5zKZdgL0oCDcQA4jsheC9ZBponBkIKjp47fViQut4kbe5FYYmK5yhIBwXeO39UzJax4w8FnfpwBpuY3jntuO5FYbG8ewm5g5x7MYx3Dq2MyfGHbGWGZu7jDkA1qUgXMitCGxdWOXrRHl622G4qhgQnS15FYQ13c4N7pQYlyhZTVw4QkE4LtRjkXy9xFj1tpjnrkN4Xnx/4vxWsRSYmVsBsfI6APn5vj+eGPuZfwOsQUF4sRhIxC5ejxLpl9vdhqstbESB2fp7H4mCsI5YNFUKzo9FBu5REI4LNdw2vRj77pHbXTvGoHCfkuDa3DYNr7QGQF5RbMWak6f5nE+MC40zAK6jILxIXPwMJOZkhYWNWAxr/W2PxqApt5hkxKKCRdM1YpGBljgPt44XOR/ycid8jthEAx/dSgJ3Qq+V291J0JuNvOMS8+9YD3FXIcBcCsJJYiJt0X+9xGcSg7tRdxvG595z4KggzCWOO+eFvRKfV9z1bdJSl4JwXNifjS41cysOjVPJ7lYGukNwv8R5ysY/HhXHS8z9lIHXJW6sML4AGEtBOFhcyOwm3Ce3wjAWt878AHr8b0fcIWpgtL9YWDDJ2D8WGepSEI4L+4rvRYyfWp+r1MptI43rI5nE8RzjPuP3HInrlXMUX4njw7hmrcS6qvUwgDEUhIPEgMIjRHMkBiIxIYzdojEgeX/nUPz/x/97/N/jnxu5a96AaF+KwbyxyFBLnIdbx4GcD/txJ7x8lZgLeRwpO1MS5I4xPO/5zq8fRSFAfwrCjuIiZZFERsZAaB8KwbqJSeX7jQTkoSAcF9YWi2buoJGzsSDPyuIa7+k/NRPXtniKELXEnE0huHfMvQHOUxB2EBejWDBpXaxEekZBuIeYXFpArZ34/KMgNlnJR0E4LqzJbnoZkTimjGtZhfOc3BK/L+nclF/M0WzmzZPb3BuA5ygIT4gSoHVxEhkVk5U1xaKCRwrLV4nd6Gd+15R1KAjHhXVYNJPZ8cgwZnOek3uJ48NjkvOIObs7hGvEXYUAj1EQPiEuNMoAuSIWTtZjcUEeSRwvJit7UxCOC9fzm4JydWKO5RGkjBTXcec5eSRxXjJ+31vMwVqfreSNgh/gOAXhg2LCGo+daF2AREZHQbiO+CycC14SOzEjsVMvJl+txMQ6/hnv2X/5YVHKd3lfCsJx4Tpxh7Nd9bJS7P6nt4pP/IgF8ji3x1g8NoDEGObeEy3iexf/XPzz8TMqxu4vUTbsKY73isfwbX4e3+H38/Jbbv9M9g0TCn6A+xSEB8UAuXWxyZ4YTMUFNQYQ8UjVmCxEjuzsjcHY7Z+P/238O+LfZZLxfOK95Drx/lfccRzf2zgHjhxYx787/hvVFm6UhfuJz6v1Wcr5MFcsdGa7psXriWLpNmadKca98Z7exrsVxwujEnOHe6UGtFR5pGCcb+K8N+Pu2zi3Vv+9RuektVUoBWd85+N9jIIx09OS4vUoCwE+UhAeUKkcjAlULGzMWFSJAUe8tzHBUBoeiyLhOvG9aH0mWROTjnjNVwygY6IT/+1Ki6sxWWEPCsJxYY44r2fajHHbxDJjYfxR8TfdxroKw/OJsQEcFYvn2X8GIObuV80P479boXz9LHFsxfmdtcT3vvV5ZclV3/k41rOMYxT8AB8pCO+oUArMuDvoiNeLKNknc89GQThfHJeVCuwY+K802Y2/pcr5wGRlDwrCcWG8OH4znFPjfLnC2PVRt934ysLnE5/9imUw64jzQvbi6spi8L1KY/VWbPJbQ/bv/Srf+fi+ZxjDKPgB3lIQfiLrYzPiQnjVXUHPir81Lt6VSprPoiCcI465So/O2WWxLRZWq5wH4vjb6TxdiYJwXBgjw0aXOCdmLYXiXB9j88oL7M/GwjyvxfHQOk6yJDb1rj42rDR/ep+4zhq7z5f5jsHV5+hZNp1F+eq7C1SnIGyIMqp14dg9GRacYxBSeeKhIBwvw0LqI9nxcV3ZF4BuWX1SWJWCcFzoL34Tb+fFmzgPVhn73IrC1vsgn8fCHhXG7lGC7EJJ6Hw0Q7zPmY+1eG07yHL+jdfgST5AZQrCdzKWg/EIgGyLKzEQqTj5UBCOFe9vlR388Tpj4XhXca6u8FnFa/S9X0t8Hq3PSs6HvnYvm3bcwNJDjHEzPyZtRCzK15V97B6vbbdF6/guZi9sv4rz0XjZNwXstCEgZPnO73i+BehFQfijuBBkm1zssuuoh5gcVpiIKArGqFQ2x/ck08A347n7s1Q6p69MQTgunLf7Ik387RZWv4lrXIXxba9Y3KshzhHZx+4ZzoXV74h2Pesv65O+btl9Y9TuY9DXiWMNoBIF4f+WcYG56gUtdltlLgsUhH3FILbSLv34bmScqFYqCXf4/ZnsFITjwjm7L8xYTG3b/XOdHSVhbhW+D1nOhfEaqozPP4vrWj/ZC+csG0EzzcuVhEAl5QvCjJOM6heyzI9mUhD2U2GB4XWyL5hVKm0sNlxLQTguPG/3x205r91X6WkHZ6MkzCk+0/jpjNZnniVx7GY6F1b53fCvEusSnFPhjuFMMt3pqSQEqihdEGbbhRR3lvBWTCQzlUAKwvMy7Wo7mkoD20oLqBZAr6EgHBceFwvJuy+YW3w5rtrmprNRPOeQabH5q+z82+Bfcc56iWvdY6pc73b7vcGj4vPLtObi+wtkV7YgzLbAZwL8uXhfspQGCsJzYuJdrRzM8riSo+L7nn13+esoCedTEI4Lj8mweObOisfF3aLVxjJnYgPl3qqUg7v/9thXqv8W4S3G7MdlGN8cSfYxUJSfrde9a5SEQGYlC8Jsj5/MuutohN3vHlMQPqfK4sL7VJ6EVnukkUWHeRSE48JxUXq03sOdEps5eJ5H9z0WY+i9VBm7x/gtSv/sWq+9auLcTVuVYjCSeVPAaxnP5ebcQEblCsJsu1jsvH5cXNB3HXha3Hhc1XKwyqTjMzHBrHaHhZJwDgXhuHBMlmLIIuk51e6YP5u4RsZ7xvoqPS6+ykbfbBu0z8ac/qNK5WC161G2sYo5N5BRqYIwTuKtE/zOqbDjcIRdB6AmE4+pWg7GINwiWM3P34RlPAXhuHBfPCq79d7tmKy/tzVTpuNhRmysXF+lx1FWOh4rlb5H4g76tyqVg5FqG3mz3aQRsd4CZFOmIMx2UbILto/dBqMKwmMqL5hZ/HqrapkT1wgbSMZQEI4LX8u2eEYfzkmPxfVxTdU2dVX7jXCbGT7GuaheMRip9t2/ybpJoOrnCeRToiCMgVcMwFon9F1T/fGBPe00MFUQ3hd3T2X7vj8Sx8hHVR/BFuc1G0n6sxg/Lnwu41019OPxfY8lfsOTdVQrBysWQ8ZO7VQvFzL8nvKjqVoKZ94kENcwgN2VKAizDTxiUmHRt69dSkLlz9eql4PuHmyr+qjZiJKwP4tc40JbxkfkR+jHeenxGFOvoeIYreJGX+eoz1O1MMp6R9lXqT5Xz7xO4yc+gN2lLwgzPrKg+qMoRlq9KLSY0bZLwTsyysGvVfpNm1Y8/qQfi1zjwkeZz11+g7Cvypthnk38BAXXqLqpr/JTgFrvh7yk0vpO5WtV9U2b2R817OkEwM5SF4QZBx8uOuOtPGFVELZVLwcjjo2vxcS79b5VioXQPhSE48JbsZCUeQHdxoW+sh8vIxLvV/UF2yvEe1718e+VN/q23g95SZXiOOsTEY7EOt6L1nuTKebbwK5SF4QZJx5RejLeqoNXJdBHFR9P8j5xruO+ir9z8T7u2DlPQTguvJX9+hblDH0ZEz2eynd0XSHKwaob+6pvimi9J/KSCtfDKMcrb2Kxjvci+28mxzHuiW/AjtIWhBkHHzGZYq6f/P6Xzc/iqigIv/EorZfEuc7u9+MqT0xviULZMfM8BeG48E2Vosc1rL/W+yxfR0k4R+ZHJt+Lebxz071kvsOs+uYVdw9+U+UuUuMKYDcpC8KsxUGUVcy30i4nBeGLqr9b0kr13ciPcnfFS/xm5fMUhOPCi2qPRLZw1pe75R+PJzGMl/23p+7F3UMKwiPJuGHGpl7f//da71HGuJMQ2EnKgjDrbxoYWFwjBuqrlFEKwtq/W9KKR0Y+pvoC1evYdPIcBeG48KLiRgZj3H7i929a77F8HcfgODb25Sx+HtV6X+Rtsp2HfPdfoih6K/tjRm+xIRfYSbqCMPPFxsTiWis8Fqd6QVj50UStKHieU2VSciQxaTdpfYyCcFyoXe7E+SgWEznPguxzcfz1545Wm/luWu+NvE2mu5lX+6mWq2K+/lGluVSMx6zjAjtIVRDGpK51Us4Srnf1j+pXLggtyn+MhaznuLvibfwuzmOci8aFvE/BOJo4H1lIOU8p81w8tr0v4y2Pr72J83rr/ZGPybBxzxNbvsUGgY+qnQ+UxMAO0hSEcZHJvFvW7enruHKyW7UgdMfXx1jEOsfdFR9jAnuMgnBcqrPb/ltc485xnno+HjV6XszL/RzAS2zme+GcdDy7lwk2qHyLTZifq7a+Yz0XWF2agjAmc60TcZa4oKzlqgFNxYLQ7uN2lDnnVPyNr3vxCJRjLHKNS3UW1N8mHivOc+IOlNZ7KvcTi9ucoyB4ibsHvzF2Op6d133cOfg27hz7XMWfjqm4lgfsI01BmH0iYvfRWq56nG21QUX2xwafiSLnnOybSp6NzSj3WeQal8pc79qxmPK81vspx2KM9Tzjq29RDnxj7PRYdpT9iV7PxIbez1Usk20aAVaWoiCsMhFhLVc8PqfSQlnFXWVH466KPkxi24n3JcPvn4xikWtcKrv6N45Xjo0Lz7nqaRcZ4hG3z3HMfUuMpfjGvO6x7DbnNzb+GGXQfa33LXscF8CqUhSEVR5j4jcM1jN751OVgtCdFF+nUlE8kkdgfR4L8p+zCDIulbXeD/kWvwv3OAvyz0e58zjH29somd9yfDyW3e48s8npYzyu+r6qx40xLbCi7QvCuIurddLNGI8oWNPM3bJViiGTjK9DHxYrvk78/icfKQjHpSrH1P1EYeOxj49xjTsXGzOPs7HvY8zb33I+eizxfu3CY4XbMY+6r+pd5+4iBFa0fUEYz/ZvnXQzxu8Qrit2ibY+s97JXhDGYw1br1u+xe+Z9FNpg8mzsfv1I2XOuFTlbubj8fjj45yrzsWd9MfEInjr/ascx85HCsLHsktB6HP9PNxX+fqhJARWs31BWO1OIwsja5pVbGUvCKvuInskHknR1+zfEd0xdsG/ZdF9XKpyHjoej+07zrnqfPhazH/8nvPHuHPoI0XSY9mhILSx9/Mof46pPk7JvrYH7GXrgrDi3R8mHOuacRdh5kGEx5Mci0de9eXOnfuJSa5H+31j0X1cqmq9F/J5bJY7rvX+yfFYvPuajX3tGKt/pCB8LDs8wWPWE5R2jCewHFO9ZHacACvZuiCs9HjR1zFZXdfogXLWz96k8Vg8sqg/Zc/xWJR/4ZgZl4ocT8/FpoVjWu+dHI/Fu7b4/rnzuR13ObeZ6z2W1c89Ngd8HU9fOa76tcTPxwCr2LogrDowURKsa/QuqIwFoceTHI8BZH+Ov+OxUPpCoTMuFVk0fS6eqHFM672T4/GYuDbnrc/jpwDaHDOPJd6vVRkH34+7iI+rXjbHY7oBVrBtQVh9UVdJuK6Rx2a2gtAE47FkLIhXYBfs8cTv/lbnvDUuFXlE1/OJ8RZfa71v8liMvd6KzUKt90kUyl9RED6WVQvCKL5af698i7nSY5wbbMIF1rBtQRi37bdOrpXi0QXrGlU4ZFukUMw8Fo9UG6Pq46qfTfXd8QrCcanIdfD5uFPnPsfX+bhb9RvXv69jkfdzfmv+sax6fbOp6X7iustxcY1tvY/VYtMbcLVtC0I7TV52KSoM1jSqwM5UECr5Hw9juJ48luo75C2QjktFCpznYzH+PsfX+Xi8+zdxZ0zrPZKXKJM/Z+z0WFac8/tZhmNZ9e7PVTk3vMT1A7jatgWhCe+3ZCqNMhmxGyrLZ20X6eOJHZuMYcL7eCpvUDGRHZeKjGfPxUa5rzm+zsdjI1/E+9B6f+Rb+FrrPZOPWfE3yeJaG39X6++Vt7E295g4tlrvY8X47UrgStsWhCYp3xKDNQsk6xkx2Mky4PT9fTx2I47Ves/l61Q9JhWE41KRAudcLMR9zfHVJ9XZ2Hc/8V3ja+Z/x7Li3fGetnI8HhX5uNb7WDGeWABcaduCsHVCrRyTkjX1fk5/hoUwiwzPZdXfosjCY7MeT9XNKQrCcalIgXMufo/7a46vPqm+q1+xcz8Wdu9zPjqWFR816BxwPDyu9T5WTHzPAK6yZUFoce7zKBHW03NAvXtB6HcHn4+7hMeyM/a5VJzIGIOMS0UWTM/F3fVfc3z1SeX5lWLgWDwa7j7zwPtZcVztOnI88V7xOMfYt/gtQuAqCsKEMUFZS+wobX1Oz2T3gtDg7/kwloLw+VRbODUGGZeKXBfPRUH4NcdXn1Q9zjz143i4z29+389qd6L6zB6LO4mfY6zyLfFUI4ArbFkQ2n32deKxb0rCdcRn0fqcnsnOBaFF9edjoDie4/P5VLuL0LEyLhVZFDkXBeHXHF99UvU4c/fgscT3jGMcU19ntTUcGygfizHJcxxnb+PJUcAVtiwIXUCORVG4jl53Ee5aENp9eC7xW5aM13rv5VgqLY4pCMelImPac7EY9zUFYZ9ULIAUOcfjPHScMdTnWe2JHDblP55d12quZiz8NtZ+gCsoCJMnSkK/S3i9XncR7jro9J09FwsPc7Teezme2AhQgcWtcanII/zOxfXxawrCPqlWELrOPRalwGOUzx+z4tM4oqRo/a3yeWzOf46x8NvEGi7AbArCIvFjt9frMRnadQIag5zW65Fj8f2dw0LquVTZ7WjhdFwqcjydi4Lwa65r/VKJ4+axVNkg1UvP3+fPkhU3dJu/Px6eYyz8McpmYDYFYbHEb5m52Fyjx12EOxaEFhnOZ9dieDcWLM6nwh3rJrHjUpW7KZ6P6+PXjMH6pQp3DT2W+I7xuO9++4vm+1kxK17HfD6PJ9bZeI651ce4tgCzKQgLxmNHr3N2J95uC2F+e7BP/FD1HK4t51NhcmwSOy5VWZB/PnxNQdgvFcR4011DjyWKFB5nLPWSFY+fOA+0/lb5Ogqd5znm2gGYSUFYPLFrfbfSaWdRmMX7/Wx2K4rcFdEnzBHfsdb7L48l+6NGHSfjUpXNNM/Fwvx9CsJ+qfAEltjk03rt8nlsun1e9Wvfz//4ux/fibXYtPRcPPL8nNZ7Wj1+ZgaYSUEoPyQerecuJXqKSU/rWJPHYjfiPIqfPom7DzJznIxLZTbUPB6LcfcpCPslzv2Z9fgphIrJflyMVnVdJ9ZeVuUu4udiTHJO6z2tHhvhgJkUhPIficHgqjvZ2I/dh32iIJzH4036JfO1REE4LpX5DdTH4ze171MQ9kv2Isi4/bnEXXCcU+3O1ZXndsa4z0dBeI5i+mOyb7oF1rJlQejOpDmJQY67CnmG72i/mGzM1foM5LlkvX5YPBmX6pQ5x5P9Uca9OKb6JXNBGI/JbL1m+Tpx5zd9VJg7RhG6+tjYY4afT/ZNJKMZr7TjMdZ8Js4572PTEmdsWRDGgd86eUr/xK4VFyUeZRdyvygI5zIx7pes1w5jkHGpziL98cT3kPssuPVL5mMuHmPWes3ydVa+E2xHma+Bsaay+l3vfg/5XIxLzjFeaWflxxHTV5xDIrH+F4mxWXwvzn43YjPT7d8Tx1P8u+N6G/8tNwTxmoJQDiUWzQ16OMojIvpFQTiXyUm/ZP3dBGOQccFvER6Ju3aOc03rl6zzII9Xfz7x/aKvjCXhDncOBpuUzsVC+znGK+24zuQTm0XifBvrfPH5rjD3i78jbvL46R9+rTgsbMuCMLQOapmXOHm4fZkWdw/2jWJ+Lr8D1jcx+M1GQTguvHAn8+eJDUgmrcdZcOuXrOMxdw8+H5v4xolHju6+4TTmxDtdr2xQOhfOMQf/PH5zey/xed3Kv9bnuWviGhHXtbg+m4vltG1BaACzRhSFvOfuwb5REM4Vg7nW5yDPJa4R2SgIx4UXjrHPEztbOU5B2C8Zx2OxwNN6rXIsGTdBrSTWGHbcMBNz4d2ODY8XPR/OMQf/PK4164vSLNY9Kq2Fxhwj5mX6gDy2LQhNeNeKopAQu2Vax4c8HwXhXCYnfROD5GyUN+PCN3ZSf0wsFPMY86V+yTgei0XH1muVYzFGnyPG5rssusY5d8c1EeeCczE+Oc8c/PPEe8N6KpaCnyXOgVEWurNwb9sWhC4gaycGxyZN9XgsWv8wl/Knf7L9uLpjZFx4KzbdmHS+xOLIcxSE/ZJtXuPuwfOxEDZffA9XOq/FNTquT7sfC57OdS5xTHKO9d3Pk3HD7W5iE4Ux9WO5XR/dSLSPbQtCC3R7RFFYh4WGMWEu15b+ybar1jEyLnzkeLPwdobFjH7JNp+Jne+t1ynHw3Xi+3jl72fG2DYWjDOUxObw52Occp6C8OvYkDJfvOdxXNpAcT5xp2W2cXRG2xaEBjJ7RVGYn4WGMWEui/FjkmnnmGNkXGir/OivWIS1KPI8BWG/ZJvHxGJN63XK8XC9GF/GY81mPMUmFonjqRhxd38m5vDnE2U15ygIv4611HniuhLnek9x6R+9wNq2LQjDlbvG5FxigB0LXuTh8aL9YzfiNVqfhZxLLERmoSAcF75WqSiMSXm2RdgrKAj7JdOCht8MPx9j9D3EQm98d+P6GQXEV4l/Jv7Zatce14nzieOHc8yvvk62n+xYSWxE9Nvv10RhuJatC8K4ELcOMtknisIc3NE7JhYfrtH6LORc4lyfhQnsuHBfhd8ljA1Hfq+iDwu//ZJpASPuuGq9RjkeY3SycJfM+SgIzzO/+jquOf3dHiHqHHh94vi2MfR6WxeEoXVwyb6Jk3OcpD1Oai923IyJgeA13A07Jlk2g5jAjguPybZRzgJbfwrCfslUELZenzwWY3Qy8HjRPjF+Oc/86n44L0ooY+O1E51AbGRjvu0LQl/unFEU7sX3cExMNq7heB6TLI9GMYEdFx4XE93dNzXEHcZ2jY7hetYvWQpC17A+yfTodOrKttHoqngi1nmuTfeTZRxyFee7vRJzGPPDubYvCD0iJXcUhXtofXZyPgrCa1hQHZMoMTIwgR0XnhfXix0fkeM6N5brWb9kWZizQNYnzl1k8N1vf9E8vuWxKG7OM7+6H8fZc+J9i82IrfdU1o/x1jzbF4TBl71WYsem36ZZh5J+XFwMr2FBdVwyTGxMYMeFPlb+TY1YjLTAMY/rWb9kOW533EiwYozRyaB1bMvjMa45z/zqfrI8jWeGDE9YkY/x6NGxUhSEfv+sZhSFa4jPofX5yPlYfLiGa8q4ZBjUmcCOC/3FY6+uLomikIjzqjHbfArCfsmwABwLZq3XJo/HGJ3dOR/0i4LwPPOr+4kxHfe5gSF34nvgCYNjpCgIDW5qx270a1l8GheLD9eI9731ecj5ZPjNHhPYcWGcKOdiwjzrcWJRCsb3/ed//N2PfwFXMEbrlwxzjdgw0Hpt8niM0dmd8Wy/WIs6z/F4P1l+rmOUKI08NrlGYp7pvNtfioIw2CUgt8RiiJPFHMr5sXEcX0NBODa7M4EdF64VJWIc31HqxXnwq8S4O/5Z16m1KQj7JcOx7njolzgPws48MUVkv7hz6qOYt3h8et3EhlTfiz7SFISxqNE6WKRuFIXjxcW49d5Lnzh+rxGLPq3PQ/okNhbsLL6Xrdcl5wOcExPkGJvFZNliSd9kGJO1Xpc8FwUhu7NhQGS/WB96y7qNROLuWiXheWkKwuB2YmlFUTiOC/LYOG6v4bgem90fOaggHBfgcbHpIu7otNg7NruPyTz1o28UhOzuL371181jW0TWze7z6J5iM1zrPZKaiY2Ru29Ev1qqgjAY6Mi9KAz7sRg1No7TayiAxiY28+zM8TEuQFvsio3fj4vzpzsDr8nuYzKbn/rGGJ2defqWyJ6JRwNXFuPhuFus9d6I3BJzJh6XriD04+tyNIrC81rvq/SL4/MaCqCx2f0H1h0f4wJ8Ewu4cWeghZA1svuYzKa+vjFGZ2fGsiJ7Jq7lVSkH5ZEoCR+XriAMSkJ5JnGLeizGcIyJxfhwDcf2+Oz8jHjHx7hARX4zcI/sXgi1XpM8H48YZWfuKBbZN9XEYyONkeXZKAqPS1kQBo8alWcSF54YMPuB0/tiQav1Hkq/cA0F0PjsvNDq+BgXqOD140Jb3wNZM65b8joKQnamIBTZN5UoB6VHlITHpC0I3UUoZxIXISeRr5lYjA/XsJA2PjufXx0f4wJZ3R4XqhTcNzsXhDb19Y+CkJ25FonsmypPPfNIUekZ6/v3pS0Ig0U86ZUYRHv86Ft+y2R8uEYMRlufh/TLzj+wbmwxLrA7vxuYNzsXhPEI29ZrkuejIGRn5vEi+2bn8cgRikEZmezfnzNSF4TBhEh65fb4UV6YWIwP12l9HtIvO//AuoJwXGBHSsEa2XlBwZi9f8wJ2VnrmBaRPRJjzszc4SwjE+v68ehaPkpfEMbuA88slp6JBSC7Dr73vZoQrtP6PKRfFITSCuwiSsEoCPzmeZ3sPPY3Zu8fBSE7ax3TIrJHMl9/3OAjMxLj4uiKeCt9QXhj56SMSJxY4nc9qvEIxjnhOq3PQ/pmVwrCcYHVuDtQbtm1IIxjuPV65FwUhOwq7pxoHdMiskeiRMvG/FquSMbv0hllCsKYHNk9KaMSt8FX2oHgAj4nXKf1eUjf7Mr5b1xgBUpBaWXXgtA1a0x2/i1lanNOENk7Oz+Jp8VavVyZ7I/sfUSZgjDEnV6tA0KkRyrdTWhiMSdcp/V5SN9YbJX3gavEJq+f/eNv/O6JfBrXLHmdbAu01OGcILJ3sl1/bMiTq7PrGL+3UgVhiAUAJyAZnfhNmswnmdhl0Xrd0jdcp/V5SN9YbJX3gRni8WrxSBm7leWR7HrNikdhtl6PnIuCkF3FZpjWMS0ieyTL9ccNPLJSjOsKFoQhFgYsCsiMZP19CosN4+MCda3WZyJ9EwsUO1IQjguMEo8virFLbOBqHXsi97JrQRiPwmy9HjkX43R2ZR4vsnfihpfdxY071uRltVR/3GjJgjDYrSCzEhPIbL9PaGIxPhYertX6TKRvdt1AoSAcF+jp9thQTw6RHtm1IIzxZOv1yLnEZgPYkXm8yP7ZnbGJrJq4oayqsgXhTTxiqHVQiIzIrnfMvGdiMT4Kwmu1PhPpGwWhvA88K+4QjDulKt4hGAVovPb3BZbFl75REMr7wI7M48fE3B3ui/G6Owdl9ey6TnVW+YIw2FksMxOl9O4sNoyPSca1Wp+J9I2CUN4HHhUbryqOSb777S9+eO2x0PIZY7W+2bUgtBA3LrAjBeGYmLvDfcamsksq3kmoIPxRPIZIUSgzE8fbVws7K3NhHx+TjGu1PhPpm12PcQXhuMBnqj4uNM6T8bqfeVS9sVrf7FoQtl6L9MmuxwS1+V3ScQHaYhxrw5Lslmq/SaggfEVJKLMTF8kddyZYdBofBeG1Wp+J9I2CUN4H3osxUjx5odKiQjwmNe7wOLuJzFitbxSE8j4KQnbk2jAuQJuNCbJjYv75zCbNXSkI31ESyuzsWBKaWIyPgvBadriNj4JQ3gduKj46NIrQnoWDsVrfKAjlfar+Rg17c20YF+CjWOtsfV9EdkiGnwg7SkH4CUWhzM5ORaGJxfjsWp5k4Rgfn12PcQXhuFBTfKfiN/Vax0TWxF2CUYKO5DrWNzsWhK5XYxN3RMBuXBvGZdeNJDCKcYhkSJW1WQXhF5SEMju7lIQmFuNT5SK0Ksf4+Ox6jJvojAt1xBg7CrIoylrHQtbEee/nf/zdj+/CWK5jfaMglPcxVmdHrg3joiCEt6qN8yVvKpzfFYR3xAJG3FLaOkBERiQuonHcrczEYnwsOlzLMT4+ux7jFlzHhfzid/XisXzVHuMc57vZE0vXsb7ZcWHA9WpsjNXZkWvDuPz0D7/+8V0GYiNg63sismMqjPkUhA9wgpOZicdtrcrEYnwsOlzLMT4+ux7jFlzHhXzibrmK59MZjxC9x3WsbxSE0grsxrVhXDx2GF5YO5eM2XX96igF4YNiolVt17Ncl1UHmSYW45P94rM6j8MYn12PcQuu40IeFR8fGok5QtwhuQJjtb5REEoru/x+PNy4NoyL+Tu8sJYiWbPjfOAoBeETYiLgtwllVq7egd5iYjE+JhjXan0m0je7HuMWXMeFvcXj0aMcq7ooED9JsNIj4o3V+kZBKK1kXigiJ9eGcTF/B3cPSu5kPs8rCE+K54y3DhqRnolC2qJTrZhgXKv1mUjfxGL6jiy4jgt7uRWClZ+sscrdgi3Gan2jIJRWVj4HQEscs61jWfoEKjPukArZdR3rHgVhB3FHoVuoZXRWOglZdBofBeG1Wp+J9M2ui2omPuPCHhSDL9fov/vTv/74jqzJWK1vFITSivE6u1EQjs3qYwMYKdYsW98LkWzJeK5XEHYSiyVOhjI6P//j73484q7lWB8fCw7Xan0m0jcKQnkf1qYYfEk8PWQHCsK+URBKK/GUF9iJgnBsdrxWQA9RmLS+EyIZs+ta1lcUhAPEidGkXEblu9/+4scj7TomFuOjILxW6zORvlEQyvuwFoXgt/zk97/84f3YiblI3ygI5bPE04RgF+bxY5Nx0RiO8FQ9qZZVbuDpRUE4UOwwtqgiI3L1icjEYnwUhNdqfSbSN7vchfOeBddxYR3GsC+J92DXyZ+CsG8UhPJZdjw2qMs8fmyy/jYVfCXGyq3vg0jmrHDzTk8KwkkstEjvxG72q1hwmBOu0/o8pG92XVBz/hsXrhPHtULpW2LCt9sdg+/5PPtm12tW67VI3ygE2ImF/LGJNT+oJMbL1rqlanbd9N6iIJwoTpyx4NA6qESeyVU/jGqBfE64TuvzkL5REMr7MF+MI4xN3+bKDVg9KQj7RkEon8XvELIT49jxgUp+9o+/aX4PRCok0xhQQXiBGJR5PrP0yFWPoTSxmBOu0/o8pG92vTvH+W9cmCe+f35f8GNikSMLBWHfKAjlq8AujGPHZ9frBTzDRkOpnqtu3OlNQXgxO7flbK4qCVt/i/QN12l9HtI3u7KwMi6MFWNOpdHHREn6q3/7px/fpTx81n2z64Kv42BOMm0uILe43rWOYemX2IAFFXhksch1a/K9KQgXEZPOuDW1dbCJ3MsVixatv0P6huu0Pg/pl50HUQrCcWEcdwu2k7UcDIqhvlEQylfJ8mhiamgdw9IvcQMAVBC/wdv6DohUy+6/XR8UhIuJ3YcWcOTRXLHYrtAeH67T+jykXxSE0gr9Rfnlet1O5nIwKIb6RkEoX2XncQ31tI5h6Re/S0oVfjpL5CVxN+3uFIQLiwbajgw5mjhWZnJsjg/XiHNv6/OQftn50TsKwnGhj3iUqFLw62SYxN2jGOqbXQvCuN62Xo/0T+YNB+RijDA+zgdk99M//Lp57ItUTJTlu1MQbiAWepQxciQzfxzVgsP4cA0F0PjEhGJXjo9x4TxPorifKr8VpiDsGwWh3IvfIWQXrg/jU2EjErXFo3Rbx75I1cxcjx9BQbgRRaHcy8y7cuwYGh+uoQAan10XWoPjY1x4nqdOHMvOdy8/ygJw3+x63XLNmpfZT3OBZ7k+jE+l8QY12ZAo8ja7bxRTEG4sHltgMUjeZ9ZutSisW/996ReuYTFtfHbm+BgXHhfXfBP0+4nHqWX48fhHWADum10LQo9Nn5tq5xn25M7i8cnwuDn4TBQhreNepHJ2//1ZBWEC7iyU15m5e7X135d+2f0W9V0pgMZm94GT42NceIw7+Y8lCtSKvwWkIOybXQvC0Ho9MiYeK8gOjB/mxIYBsrL+LNLOzud9BWEiikK5ZdZJyQ+cj83Oi1E7UwCNTSxa78zxMS4cZ7x3PFV/F0xB2Dc7j8mM1+flJ7//5Y/vOqzLWHZOzOXJyrhCpJ2dz/sKwsQUhnUTPxg8g8eTjI1JxTVMmsdm98V6x8e48LXY/GNCfjzxeK/Ku/cVhH2z85gsSqvWa5IxcdcQq4tjtHXsSt/svikSWuKpHK3jXUT2/j1qBWEBMQCMIsdv1NRJfNYzePb42CgIr6H4Hpvdj2sF4bjwOeXg46n+qD8FYd/sfO0yrpmbqncts5fWsSt9M2tNBmayBijyeXbeGKIgLEhhWCOzHnHT+m9LnygIr2EhbVyi4NidgnBc+Egx+HhifOs3fBWEvbPzmCy+D63XJGMSdy/D6lwj5sSGAbKJp5W1jnUReUnM33ekICxMUZg7sxbiLVyOi4LwGgrCcZn1+OORFITjwlvKwecS53As/vbO7mOy1muScYlHsMHKPHp4TnZ+3By0GF+KfJ1d5wwKQn5YgPrpH379w27H1sEt+2bGzgU7iMbFjsNrKAjHJcPCvYJwXPhGOfhcqv/u4GsWcPpm94LQ8TA3MbeGlZnvzMmsTdswS+s4F5Fv2XUdV0FIUxzQCsP9M2Mx3mL5uLgL4hoW0cYlw8K9c9648CJ2m7feH/k6Huv3lmtZ3+xeECoD5sdmBVYWd7m2jlvpn+q/iUwe5sEi9zPr5756UxDyJUXh3onFodFi8tv6b8v5KAivYVF1TLLsoDUxGhe+/+Guk9Z7I/fjrvu3XMv6ZveC0LVrfpyTWF3ruJX+2XWxGN4zlhC5nxnr8CMoCDlEUbhn4vclZ/AYtDFREF7DouqYZPkNDhOjcanOsfV8Zo13duJa1je7F4Q29M1Pht9dJjfrO3PiCQdkEXfDto5xEfkWBSGlxCTZwsMembGgEQVy678t5+JHza/h3DYmf/enf/3xHd6bEmdcKnPeOZcs55eeHFN9s3tBGPxu+Py4i5CVefTwvDgXkIFzhsix7EhByCmKwvUz4y60WJhr/bflXOK7xXytz0LOJdPOWQXhuFRlsn0u7tJpMz7vmwwFoUcYz4/zEyuzyXdenAvIwJxF5Fh2pCCkC0Xhupn1zPt4vFfrvy/PR0F4jdZnIeeS6W5YBeG4VPSrf/un5nshxxOPO+Ij4/K+yVAQun5dk3i8K6zIGGRePAqdDGJtsXV8i8jb7EhByBBxR1ksCLe+KDI38fuAM9iB2D8Kwmu0Pgs5l0yP/7PAOi7V2IV7Ph7F/TkFYd9kKAiD42J+Zs3F4BlxfLaOW+mfWRu3YRRjCJFj2XH9S0HIUIrCNTKDx4z2jx80n89O2v7JdhwrCMelEtfMPnH34Ocs4vRNloLQxoRrkmmjFLlYq5kXc3t2Z2wpciw7zhu2Kwhj8TZOSmfjUR/XUBhek1knJ59t/zCX8qd/si3gO0bGpYr4TrRevzyWGM/zuXh/Wu+bPJcsBWFovT4ZG8UAqzKunZv4LVjYlbGlyLHsOG/YriDsNYDJNMnbkaJwbmYd7xY9+4e5TJL7JxvHyLhUEQvFrdcvjyXuhOJzFnH6JtPc0bFxTdzxzKpax6uMiUcOszPjB5Fj2XHeULYgtKiwBkXhnMw8ObX++/J83O08l0dv9c13v/3Fj+9sHgrCcanA7/X2S6bCZgSLOH2T6XiLO1har1HGJuOYiBxcL+bGI4fZlXOFyLHsOG8oWxD++X//qx//jawkPl8Xnf6ZWYhb/OwbC6BzKQj7JmPB3WscIh+Tnetjv9iBf5/xdN9kG4+5k/ma2KTMijwFaG48cphdGVuKHMuOyhaEkfg9Q9YUi2hR4rY+N3k8MyejsSOu9TfIc1EQzuWO5n7JulNeQTgu2VmQ75c4V/M1izh9k208ZrxzTWxSZkWxoa91vMq4WItkRzZTixzLjkoXhFFCsa4YqP7k979sfnbyWGbvVo2d/a2/Qx6P89RcFlT7JeuxqyAcl8zszu8bd+Hc53rWN9kKQuek62Jsz4rM3+cm1rlgNwpCkWPZUemC0K39e3Exej6zF9LcRdgvFkHncodPn2T+nR0F4bhk5ZrYP3be36cg7JtsBWGIa3Xrtcr4ZDye2JtNA/MT7znsxG8Yi9xPzMF2VLogjPiB4L3EgpDdbY/nipLJokOf2F04V+szkMeTeXe8gnBcsvI0hP7hPgVh32QsdOJa3XqtMj67Lh6Rl8eMzo/HpbMb82CR+1EQTtL7hOQRH3uy2PZYrigILTr0iQWEuVqfgTyW+H2dWGTIysRoXLJyZ3L/cJ+CsG8yFoQKgWuT8ZhibzZiz0/mORP5mAeL3M+uT9MqXxD6ofC9xR2F8Rm2Plv5lqseUxm74lp/jxxPTNSYw4C3T7IveDlOxiUj18H+sXHmGAVh32S9tnms4LXxNCNWYow7P372iN20jmMR+ZZdfyaqfEEYyb6YmV1MrOx2+zpX3SlrktEnzOF4PZ8Kk1zHybhkZBNT/ygIj1EQ9k3m+aLz1HXxiEFW43wwP9Yj2Ykno4h8nV3P6QrC/x2/8bW/eDSDkvDzXHmCMoA4H+aInT6t91+OJ364PLsR4xB5STbxlIPW65RzURAeoyDsm8wLuO50vjbuImQlzgfzY1zDTowvRb6OgnCSUQtzBuY5eORoO1eeoOK71fqb5HgyL0qtxIT4XKrsgh81DpF8BaEJ9Jjs+tiW2Rx/fZN9LGaj5bUx1mcVfpv0mribuK74zsXnH2uZO7CpWuTz7PxELQXhj6lw10MVFm8/5mqKl3OxaDCHxdRzqXKcusaMSzat1yjnoyA8xjWtb7Jf42Iu3HrdMifxfYVVfPfbXzSPUxkbNy3U9Hq8Fk+3i8JwZebCIp9n5/GcgvBVXJBzMbB9ySo7GOxMfj4WQ+dovfdyLFf9zukVTIrGJRO7a8fFLvtjFIR9k70gDDb0XZsKv+PMHtxFeE3iSVirl0P0c++aG+uZq65Re2qbSDs7r4spCF/FXYS5xODKhWudHQxxomz9fXI/FkPHMxF+PtUWtBSE45KJTUrj4k6bYxSEfVOhIPS7qdfHegSrMI65JjYG1xB3CrY+//eJ9cwVjwljTJF2dnlUcIuC8FXiDidyUUqtVS5FkdD6G+XrWAwdT+nzfKotZjlWxiUT17txcU08xuJN31QoCIPj5tq4g4hV/PyPv2seozI+nmyW2zNrlLFWvdI4xJNSRNrZmYLwXezYyaf6Yu5KAwl3dT4fxjLIfS4Vr5nVrykjk4VjZGxs6DtG0dM3K42nR7PB4fpUOt5Yl8cOX5ed70KhrdfNC7GedvVjDD19SeRjdl8bUxC+i2f/51R5cLvaDjRFzHOxk3Cso4/5kG+pustd+TMuWXh6wfhwn4KwbyoVNs5h18dGCFbgscPXxdMSchlxXY1j5MoiOa5Trb9LpGp2nysoCBupNAGsovLgdjXuInwuzktjWUh9PFXvuJ8xDqmaLGyEGR/uc13rm0rjMGP1NVJ1nMValADXJR7zyv5Gbrq58hixwVrkbXanIPwkFe+KyK7ibti4aK/IwsPjsUgwVus9l89T+XhUEI5LFoqZ8bFp5j7HYd9UO+aM1deIOwlruD3tKD7v1dahnAuuzarrOdw3cv0xvpNXP2Eqzg2tv02kYjKsjykIP4nF+JyqDW5X3nUW37HW3yztfPfbX/z4ztGbx+c8ljiPrrZ4MZOCcFyyUMyMj3H6fY7DvqlYShurrxHnu9zef8+iJFztpyXcKXRt/B7hfkbfnLDKdcEdxiIvyXCeVhB+Er9FmFO13yJc+Xfr7EZ8LLHQxxgKn8dSfaHK8TIuWbi2jU+M5/iagrBvKhaExurrREGQ02clQnzvVvrMY02h9XfKnKx4ZymfG10OrnRn+U//8Ovm3yhSKXHNzkBB+EVWOvHST+uzzphdFs+ijG/9/fIxKxe+O6u2ceBMYsJTnYJwXLJovTbpH4tlX1MQ9k3FgjAoCdeJjRF5HC0Q4ru3yrnH+Pf6VL0O7WJ0MRhZ8ZGz1vOkerL8XqyC8E5chPOpsmCyy0K+ycbxOB+NYRH1WNzF+sI5a1yyaL026Z8sk7ERPDq7fyqPwWYsesqx2Ki1vzg/P1q6r/K5mzNdmzhubI5a04zrZBRxK37+HkEslZPl7sGgILwTC6L5VPk9jZ0GjyYbx+I3SMZovdfyMQrqFwrCccmi9dqkf1bcRb2CZxaf5X6qXwPdIbBOPG50X2fOzyuUhMbA18f65HpmFWSrjkNsSpPKyfR0BwXhgbgI51LhAhbPAt9NleL2TDz2uD8T3fuxW/Utx8y4ZNF6bTImHr39TZynY5zQep/kfFZdmJvJhr514jfJ9tJz48bVi5Fx937r75K5cTfxteL8O+tnSla9c/A1v0UoFRPfzUwUhAdjUphL6zPOlB0XzGLQY3fy/dCXYvp+dtxwMJKCcFyyaL02GRPnpxfKwfExF/z+h/lF672Ra+I3CffQsxy85erP3maBNeK6dI3ZY64dPmfjA6mYbE+zURA+ELt08sg8qN19sey73/6i+brkJRZD+1JKfx0Tz4+uHIdkTxat1ybjUv08NWsHe/W4Hr6IhVGPsF0r1ijWNKIYjKxy96iScI3EMRbHGuPFOGDm9S++6ztxd7FUSsYnTSoIH0i220cryzyg3f1xW/H3W3j4PHYL9xOT69Z7LC/x+15tCsJxyaL12mRcKl8XlYPzoiD8xiLgelESriU+jxHz2ZXKIOPhdaIkHG/2IzR3/UxtvpYqyTjuUhA+mHgcHfvLWhBm2cUwewC2U2xU6MfE9vPEcbbC7uQVOW7GJYvWa5Ox2X1z1DOUg3OjIHzL3UPrRUm4hvgcWp9Pj6z2GbsOrRMl4RgxH77iON/1qVF+vkUqJOuarILwicQjENlbxkltDAozLei7k/DzWADow+Ns23Hn4NcUhOOShd2z16RKgWNB9pooCD+yoW/NmCdcY+S5eZXHirYoBNZKrJ/EXd6cE9e3K9aiMmzSNU6VzMm27v6agvDJuOjuLWNBmHFR38JDOzHo4jwF9Me4c/A+BeG4ZOHOmmuy22+1PMOiy3VRELY5360ZTz2aJ8bNIzcdxnxl9TvDbIxaLzYKPGf09/leMtwFGhv9W69NJEMyb6ZXED6ZzK1xBRkns1kfr+Uur4/Jekv7TDH4br231WMB9D4F4bhkYcH8umRdFL96wUpcHz/jiR/rxobC8eL4j80prfe/V3bYmG5svGbiHGDN8rj4rl15Pdv1saItNrRJ1mRddw8KwpOxM2dPrc9y52RftDDp+Bg7g88xaH2bCnfe9OJ8NC5ZeNzWtcm0iS82s7gzY41kH2ufZWPEuolziN8m62vGdT42hewkrrs2C6yZ+FwylU89XfUo0ddZ+RHCZ1hvkWzJXA4GBeHJxMUk+0GSUeuz3DVVFvYtuL6NQuccE9hvcR17jIJwXLKIzWOt1yfzkmGx5eqd7PI2CsKvKQfWj4LgvBgvzyjDd72GxXWr9XpkjcSxa873Iq7pK2zAiutm1g0ccay1XrPIjsn8aNEbBWGHZN3xkVW2xd1Kd7Hanfw2BvjP8XjRt/Gbuo+xWWFcsizAZxtn7JqdN9I4z6yXLOenkZQD6yfuSrNu8ZxZdxrtXhi4a2jtxPEVY4yq54G4lq+0ppR9Lc/5QDIkzpsVzpkKwo7xuNE9RPPf+vx2TMVjTrnzLe4ifI6i+SWOn+dkuoaslkxl9YxFRDmWHTbyxd+nFFw78flwTHznWu+hrJUoC202/Fycl2eP+bLM7c3X90ncRZd5TWm1QvCW+JuqML6VnRPnyCobKhSEnWN36fqylAOVF/djB2frPamYrI+kGCUu7q33sVqivLAo9BwF87hkWoB3nKyVGDOter2MhTm/M7h+Ki3mnRXjC5sk9sjtbiLeivdk9jGc7fFlSoG9cisKMyyEx2uI17LqZpUdNq71FK/VOFd2TeYNFO8pCAckBpOVTvg72eH4ORKLFC/sUH4533Bc7JZuvY+V4jdozmm9p9Inma5tHrW3bq5+xN5TheD/8399/2f/9//R/r/JtMxYJMi0eUdBsF9uJUElcT24ohC8JfOmX8XA3onPLuaNK29IjvW9KNd3Oc4qb+62eVJ2S7Xvq4JwUKrtCtlFlkfDuWvshUnHS6pN5J8Vx0vr/auU+B0AnhcLt633VfokzudZOFbWTiwEz7x2xrgtxqBPL0BHOfhnf9b+v8m0jNzEEGOUKK/jPJhpDmlj1p6J4zDOkZnXM2Jd6erfx6qwZhTXv6vKV+mXOCfE9yU2wF15zMbxFOemuLbsdlxVX7PxdAHZKRWfrqAgHBgl4XoylEkW+N8y6ci987SnGJS33r8qcZyc566w8ck0bsow5sie+Ixid/yI4+5WCjoOciXmor3F8RfX6Nt/I9NY//1rk70Sc6w4j8X5LINYoI5FvxXOy5XWiqrPwTImvkNR0sX3Ka6LI+5+j/NOzL3ivxEbdHZe86lYNrT4qSDZIXF+q3J9fk1BOCEx+MsyqN7Z1TsEe8SjAT9XfeLhsbNfq3w3T0ymXIP68GiU8ck0gVYo75uYGMb3PY7HVmLBPP7vzgk1E8dADzE2+aw8i2v3iAXXq8Q4pPU6Zc/EcRvnwRGF+VlxrMWcedU7jCqPyzOsx4g8Epv7P4qxzc5lr+ROjG2qUhBOigXaa0X73/pcdooC6L7qO5JWnKSvovKE1HHRR4bryA7JdK1zzIjkzdlra8wL7y2QRQmTibuI8ua2oSI2xswqtuMaG9/DOK5umzZaf9tKsSZks53USaW7hB/lTkJZMdnG3Y9SEE5MDAhj0Mx8MWFpfSY7RcF8TOUiSIncFgPzqrvUYtGEPtwNNi+ZJtN+f0uuSkxyI63/m5zPmYX+RxbGet2tuAqLgnUS85JbcXgrD2Mt55bWtT7Kxdf/TCSOmdu/4/bvbP33Vo9y8EV87q5Nkj3KwfvMkWS1VL9GKwgvSpwMXTDm2L0wqr6L4VlVi0LHy1txnq1YDnqcSV9xHLXeZxmTTJsdHDsyO3H+v80xbGyYk5jXfbaoEJ9FbNY5sxCW8bdQKm/ok1pRDLbFOU1RKNmiGHxMlvV92TsxRkdBeGlisBivh3FiMN5673eKCcXzqi4+uGvsm9ht3HqPMkc52J87HuYn029v2SErs/L+/B/fo9Y/J2MSc7vbHU6RnhuUMi5eKAcke5SDX1MSSqbE9105+DjzbLkySv1vFIQLJBawGWP3Aadj47xdH0NzJganLyoujCoH+4vvUty90Xq/ZVwyHcvu4pIZ+ew707OkkmsTi2iZKAckc5SDxzgPSIb4vp9jM6VcEd/btxSEi0Uh1Mfui3EKnv5i4az1XmdOfA+qqrYgrxgcIwaMFtevSywYZRF3drdeo8jZ3HtqgJ3ZuZLpvHijIJBMiU1lFhwfF+eBiht7Ze/Etcu6XR+xudu8W2ZF9/KRgnDBxEXGo0efl2FBt3KxM1K1kjC+B5ke03dUDNIrDS6Vg2NYsFwjWY7vauclGZ84no48UjzGxa3/veybjI+Sd82VDFEWnFdxU6/sGd/3/mzOlRmxftamIFw4cdC64Dwm3q/dHwVnJ8NY1SYdMXCtptLuU4ObMSxUrpUsx3lc31uvT+TRxOLJI3eoeExynmRekHTtlZ2jLOjnJ7//ZfM9Flklvu/jeOqKjEysFdKmINwkMbF3V+HnMkwo4zM2yJin2sAj427z9yp9ptl+h2gVcfe2XYvrJsNju0x65UziN1qeGStWe+x2xjxaCu8sjvFqG/pk39jcO06sfxmXy0qxOXceGyulZ5T69ykIN0u03YrCtzLchl5p0r+SWKitNOnIXBJmOA8cTYWyd7YYLPpx9H0SO8t3HuC7Q0aeydlFaIus+6bqPEFJKKvHmHy8OPcZN8kKifkHcxkHSI/EOFo5eJ+CcPNULQwzLebadXi9+J2+ShOPTJPZKsVghjunVhPfA4/d2z/xGe54TvP4LDmSGJv0+i1hdxHuGdd+d17LWnEXwnWMnWR2Yp3BDRrXUxTKM6m6we5ZCsIkuS2QVRisxuvMUgh4RME6MpXOR5KhmK6yYGQhop94H+PYVwzmS4wL4rPtVaaMFsei41C+SowRe5/7K2yoyZQdNz+MEmsAjl+5Oubu18u0FiRrJ+bgyoV1KAnlkfj+Pk5BmCwxWIoTZ8YvQux8zrSYZoKxplhgbn1eGfPsbxmtoMoOUueJPmLsYFJRJ3FuizHD6mKs1vr7pXZiLD+qGHL3xT5RDn4U58xY8Gm9XyIjM/K8zOOcC2R0dl4nycw4Vo7EBvvnKAiLJL4gP/3Dr7cpDm+LuRl3hzlZ7aHaY0djsLX6cRnlbYUdo7ERIuMmj9Hi+I1SKK4d7syS97ltoIoFvtXOdcpricy6sz9+nqD135frE+cp1/9jKm3ok+sS12fz9rW5o1B6JY6jHTYY4nsv7Sj2z1EQFkwsnN4WyVZ5FNfrhd3MJ3rl4H4qLUDEd2/F3bHxN1UpfAxqHhPXsPiOVirzpU/imImNESssxsd33jFcN7M3hZhLrZkYgykHHxPHsgVCGZFV50S0xbnTOErOJI6fXX6mgBfxvTcGkFuiS+AcBaH8sDARi9KxyBrv7+gLYyyExX8n7miML3GVhf/YsW3hf0/VFiDiO3n1pDi+K5WKwTi+4pzIY9xBIGcTx9AKlIQ1c9Xd++4iXCsWJp8X3x/Hs/RMHE++j3vy+EF5JqvMBXhcnKvNn8SGnj4UhCKDEwNV8og7XSvuVIqiLo7leP09FzNjUBcX9Ox3D38WE5JzFIRyNqt9B+2GzZ34bFc55pQq18du577cRSTPJo4bd/DmEXNVZaF8FU/tySc2W7c+a8kZm+v6UxCKDIydDDnFYDIGla3PvEpe33kcg7E4N99ym2DH//f1/3t8H+KfjwWxWJisvAhuIaIPBaGczWoFYYhrjEXufFntrpT4W1p/p8yJpwaMY2wgRxNzEd/FvGL+WeVpNHIs8Z33O4N5xXfeRsv8cRPOGApCkQGJi5LF//xicGnSIY8kzg0rFhK7sggoZ7Pq91FJmCcxTlh1Mco5dH5iHBDzWcaKeZhzqHwVjxKtIcZTrnUSiU3K7hrMz2b+vFHwj6Ug/CIxoY/BxFcDxzj5xF0xTkASWXWhkfHiPOFxXdLKyovDuzPhl7PZ4brtkTn7JXa27rIIFUWK3dbjY7fzdWKMbq4ukbjmKwhqi7U717wasTEXa3T7J77H7vSfQ0H4SZ6Z2N/KQiegeokCwB2DhDhHuatQIiYl4ykI5Wx2+Y7GGMO1Zf3E7vQd70iJ+Uvr9cj5xFjAHYNrMEavmyiIdzw3M0as25lD5I7vPK9FwWRjwH5xp/9cCsJ3iZNGjzs94iCOk5BHm+TPTrvEmScW2yxC1I1HmMxhci9ns1OJH+eUOLe0Xodcm12LwddiPNt6bfJ8YoHSWGA97iCqk1hcVNDzmbhuG1fliu88n4nvu5t59kiM0WKsxlwKwleZcQDGDvCYgCsO9k2crNzizCNuuxQtRuRNhsXhHSkI5Wx2KghfUxZem8znfMfVudg4uBdj9FyJNRaLijwr1hoVCHvFd55nuPavlzj3eirftRSEPyYmc7MpC/dLXERM+nlWHDtRLvvO54li8FoKQjmbXQvCmxgXu6bMSSwixPFS4ZyvJHw87lrYm8XCvaMkoCdF4frxnaeHuPYb816b+C4bP6+hfEEYk4DVJvqKw3Vi8Z/R4pxmULJHbhMRmwTWoSCUs9m9IHzNJLdv4r2sPmGNa57CpJ1bYWxMkFcc/0qCNRPnZ3caMEusB8Ux53p4XYzJmOH2XW8dg9Inyv11lS8IV39UpLJwfkz4uUIMRuK4811fLyYk64rPJb43Is8m43fb5Pb5xG+Hx9zAGPCbmIv4TfVvMU+oJ74DyoHrE3Ok+O7ZvMtV4rzvaUDz4jvPVW5zKdf9fokNV4rBtZUuCGOyu5OYnMQF0iR9TOJ9dcJiBXGeMyC5NrfzgQVAYFeKwmOJBajYjGcB6msxB2m9f1VyW6g0LqgrPvsYG5qLz813v/3F9z//4+9+/BRgDebrYxLvZ7yvGTfwsZ+47sfYz6aA5+P7vI+yBWEcpJnEoNmdhsdyG3SYaLCT26JETJJNRPolFnliJ6iFYSC7uI5U3vl+KwI9lu68mI9lfvTiba7gWOEIm3j7xJic3cWxG8ewRxPfz+s1ORtv2Mnte27t/W2ss++vZEEYB27mgWe8tigS4supSHhJTDhiUcjOBbKwKeC5xDkxSlZ3BwKVxXiowjgxzvcWnMfJVhQaH3DWbeEwjqXWMSZv4xxNVjb3fkyMF2Izhc03ZBHHcvU1OWPnPEoWhHFRqiROWjHwjoWgKieueJ3xeuNEZcJBdq83BSgM3+ZWCMY50GQE4KPYcJKlLLwtPtkQNleMQ3ZdILGwwUhxLopzkjuKXnLbtOsOA6qpeC64jcncJUgFt3X37E8TuK21u47nU64grFYOHhUT+9ugJb7sKw5cYuEq/q74++LvjL9X+QfHxIAlFsBuE5Pdi8Tb+SAWGWIgFucDAPqJxZzb2DBKlCuvG+/Hfxaa9nDbwBTX6ivmFnHMxn/XccOqXs/B4zy768Li63F5fOdtyoPHvD8XXHHNvJfWepzvOtwX488o1OJ7E9+hlTdlxjgkvuM22NdTqiCML6GJ4ePiPb8NViK3AjHSY7HoNnm/5fbfuS36OynBOPEduw1Wbgt4kdZ3dXZicBJ/y20SEn9n/L0AXONWGt42nLweE7bO4/dyW2yKxILYbQx4O98bt+cT4/r4bN+PO55ZLHl9/NzGCnFsGiuwu9dlQeTM96RXXn/f4m+6zdWdp2Gc27jrNl9/fT6ItL6rj+b1v681FrMeB/29vs7fxsMzN2O+/r7b2EPYriC8XSCfiQN+rtsCgPcd9nUbuEReT0xueb24dyTxz7//d9wmH5H47wGQw20s6NzOs27jAyUEfPN+TeT92PqR8fnrQuCWW9Eecf6G/bw+R7h+wl5er8HFZpzX1+fWdfx93q+5vV5vg89sVxACAAAAAAAAz1MQAgAAAAAAQCEKQgAAAAAAAChEQQgAAAAAAACFKAgBAAAAAACgEAUhAAAAAAAAFKIgBAAAAAAAgEIUhAAAAAAAAFCIghAAAAAAAAAKURACAAAAAABAIQpCAAAAAAAAKERBCAAAAAAAAIUoCAEAAAAAAKAQBSEAAAAAAAAUoiAEAAAAAACAQhSEAAAAAAAAUIiCEAAAAAAAAApREAIAAAAAAEAhCkIAAAAAAAAoREEIAAAAAAAAhSgIAQAAAAAAoBAFIQAAAAAAABSiIAQAAAAAAIBCFIQAAAAAAABQiIIQAAAAAAAAClEQAgAAAAAAQCEKQgAAAAAAAChEQQgAAAAAAACFKAgBAAAAAACgEAUhAAAAAAAAFKIgBAAAAAAAgEIUhAAAAAAAAFCIghAAAAAAAAAKURACAAAAAABAIQpCAAAAAAAAKERBCAAAAAAAAIUoCAEAAAAAAKAQBSEAAAAAAAAUoiAEAAAAAACAQhSEAAAAAAAAUIiCEAAAAAAAAApREAIAAAAAAEAhCkIAAAAAAAAoREEIAAAAAAAAhSgIAQAAAAAAoBAFIQAAAAAAABSiIAQAAAAAAIBCFIQAAAAAAABQiIIQAAAAAAAAClEQAgAAAAAAQCEKQgAAAAAAAChEQQgAAAAAAACFKAgBAAAAAACgEAUhAAAAAAAAFKIgBAAAAAAAgEIUhAAAAAAAAFCIghAAAAAAAAAKURACAAAAAABAIQpCAAAAAAAAKERBCAAAAAAAAIUoCAEAAAAAAKAQBSEAAAAAAAAUoiAEAAAAAACAQhSEAAAAAAAAUIiCEAAAAAAAAApREAIAAAAAAEAhCkIAAAAAAAAoREEIAAAAAAAAhSgIAQAAAAAAoBAFIQAAAAAAABSiIAQAAAAAAIBCFIQAAAAAAABQiIIQAAAAAAAAClEQAgAAAAAAQCEKQgAAAAAAAChEQQgAAAAAAACFKAgBAAAAAACgEAUhAAAAAAAAFKIgBAAAAAAAgEIUhAAAAAAAAFCIghAAAAAAAAAKURACAAAAAABAIQpCAAAAAAAAKERBCAAAAAAAAIUoCAEAAAAAAKAQBSEAAAAAAAAUoiAEAAAAAACAQhSEAAAAAAAAUIiCEAAAAAAAAApREAIAAAAAAEAhCkIAAAAAAAAoREEIAAAAAAAAhSgIAQAAAAAAoBAFIQAAAAAAABSiIAQAAAAAAIBCFIQAAAAAAABQiIIQAAAAAAAAClEQAgAAAAAAQCEKQgAAAAAAAChEQQgAAAAAAACFKAgBAAAAAACgEAUhAAAAAAAAFKIgBAAAAAAAgEIUhAAAAAAAAFCIghAAAAAAAAAKURACAAAAAABAIQpCAAAAAAAAKERBCAAAAAAAAIUoCAEAAAAAAKAQBSEAAAAAAAAUoiAEAAAAAACAQhSEAAAAAAAAUIiCEAAAAAAAAApREAIAAAAAAEAhCkIAAAAAAAAoREEIAAAAAAAAhSgIAQAAAAAAoBAFIQAAAAAAABSiIAQAAAAAAIBCFIQAAAAAAABQiIIQAAAAAAAAClEQAgAAAAAAQCEKQgAAAAAAAChEQQgAAAAAAACFKAgBAAAAAACgEAUhAAAAAAAAFKIgBAAAAAAAgEIUhAAAAAAAAFCIghAAAAAAAAAKURACAAAAAABAIQpCAAAAAAAAKERBCAAAAAAAAIUoCAEAAAAAAKAQBSEAAAAAAAAUoiAEAAAAAACAQhSEAAAAAAAAUIiCEAAAAAAAAApREAIAAAAAAEAhCkIAAAAAAAAoREEIAAAAAAAAhSgIAQAAAAAAoBAFIQAAAAAAABSiIAQAAAAAAIBCFIQAAAAAAABQiIIQAAAAAAAAClEQAgAAAAAAQCEKQgAAAAAAAChEQQgAAAAAAACFKAgBAAAAAACgEAUhAAAAAAAAFKIgBAAAAAAAgEIUhAAAAAAAAFCIghAAAAAAAAAKURACAAAAAABAIQpCAAAAAAAAKERBCAAAAAAAAIUoCAEAAAAAAKAQBSEAAAAAAAAUoiAEAAAAAACAQhSEAAAAAAAAUIiCEAAAAAAAAMr4/vv/H4GEmU4rGlZWAAAAAElFTkSuQmCC + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - pods + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - secrets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - services + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - apps + resources: + - deployments + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - apps + resources: + - statefulsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - pubsubplus.solace.com + resources: + - pubsubpluseventbrokers + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - pubsubplus.solace.com + resources: + - pubsubpluseventbrokers/finalizers + verbs: + - update + - apiGroups: + - pubsubplus.solace.com + resources: + - pubsubpluseventbrokers/status + verbs: + - get + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + serviceAccountName: pubsubplus-eventbroker-operator + deployments: + - label: + app.kubernetes.io/component: controller + app.kubernetes.io/name: solace-pubsubplus-eventbroker-operator + app.kubernetes.io/version: version + control-plane: controller-manager + name: pubsubplus-eventbroker-operator + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + app.kubernetes.io/component: controller + app.kubernetes.io/name: solace-pubsubplus-eventbroker-operator + app.kubernetes.io/version: version + control-plane: controller-manager + spec: + containers: + - args: + - --leader-elect + - --zap-log-level=info + command: + - /manager + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.annotations['olm.targetNamespaces'] + image: docker.io/solace/pubsubplus-eventbroker-operator:1.1.1 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + imagePullSecrets: + - name: regcred + securityContext: + runAsNonRoot: true + seccompProfile: + type: RuntimeDefault + serviceAccountName: pubsubplus-eventbroker-operator + terminationGracePeriodSeconds: 10 + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: pubsubplus-eventbroker-operator + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: true + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - solace + - pubsubplus + - pubsub+ + - pubsub + - messaging + - advanced event broker + - event broker + - event mesh + - event streaming + - data streaming + - event integration + - middleware + links: + - name: Operator QuickStart + url: https://github.com/SolaceProducts/pubsubplus-kubernetes-quickstart + - name: Operator Documentation + url: https://github.com/SolaceProducts/pubsubplus-kubernetes-quickstart/blob/main/docs/EventBrokerOperatorUserGuide.md + - name: Solace.com + url: https://solace.com + - name: Understanding Solace Technology + url: https://solace.com/products/platform/ + - name: Solace PubSub+ Technical Documentation + url: https://docs.solace.com/ + - name: Solace Developer Portal + url: https://www.solace.dev/ + - name: Solace Community + url: https://solace.community/ + maintainers: + - email: support@solace.com + name: Solace R&D + maturity: stable + minKubeVersion: 1.23.0 + provider: + name: Solace Corporation + url: www.solace.com + version: 1.1.1 diff --git a/operators/pubsubplus-eventbroker-operator/1.1.1/manifests/pubsubplus.solace.com_pubsubpluseventbrokers.yaml b/operators/pubsubplus-eventbroker-operator/1.1.1/manifests/pubsubplus.solace.com_pubsubpluseventbrokers.yaml new file mode 100644 index 00000000000..30ad30128bb --- /dev/null +++ b/operators/pubsubplus-eventbroker-operator/1.1.1/manifests/pubsubplus.solace.com_pubsubpluseventbrokers.yaml @@ -0,0 +1,1661 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + labels: + app.kubernetes.io/version: v1.1.1 + name: pubsubpluseventbrokers.pubsubplus.solace.com +spec: + group: pubsubplus.solace.com + names: + kind: PubSubPlusEventBroker + listKind: PubSubPlusEventBrokerList + plural: pubsubpluseventbrokers + shortNames: + - eb + - eventbroker + singular: pubsubpluseventbroker + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: PubSub+ Event Broker + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: EventBrokerSpec defines the desired state of PubSubPlusEventBroker + properties: + adminCredentialsSecret: + description: |- + Defines the password for PubSubPlusEventBroker if provided. Random one will be generated if not provided. + When provided, ensure the secret key name is `username_admin_password`. For valid values refer to the Solace documentation https://docs.solace.com/Admin/Configuring-Internal-CLI-User-Accounts.htm. + nullable: true + type: string + brokerContainerSecurity: + description: ContainerSecurityContext defines the container security + context for the PubSubPlusEventBroker. + properties: + runAsGroup: + description: Specifies runAsGroup in container security context. + 0 or unset defaults either to 1000002, or if OpenShift detected + to unspecified (see documentation) + format: int64 + type: number + runAsUser: + description: Specifies runAsUser in container security context. + 0 or unset defaults either to 1000001, or if OpenShift detected + to unspecified (see documentation) + format: int64 + type: number + type: object + developer: + default: false + description: |- + Developer true specifies a minimum footprint scaled-down deployment, not for production use. + If set to true it overrides SystemScaling parameters. + type: boolean + enableServiceLinks: + default: false + description: |- + EnableServiceLinks indicates whether information about services should be injected into pod's environment + variables, matching the syntax of Docker links. Optional: Defaults to false. + type: boolean + extraEnvVars: + description: |- + List of extra environment variables to be added to the PubSubPlusEventBroker container. Note: Do not configure Timezone or SystemScaling parameters here as it could cause unintended consequences. + A primary use case is to specify configuration keys, although the variables defined here will not override the ones defined in ConfigMap + items: + description: ExtraEnvVar defines environment variables to be added + to the PubSubPlusEventBroker container + properties: + name: + description: Specifies the Name of an environment variable to + be added to the PubSubPlusEventBroker container + type: string + value: + description: Specifies the Value of an environment variable + to be added to the PubSubPlusEventBroker container + type: string + required: + - name + - value + type: object + type: array + extraEnvVarsCM: + description: 'List of extra environment variables to be added to the + PubSubPlusEventBroker container from an existing ConfigMap. Note: + Do not configure Timezone or SystemScaling parameters here as it + could cause unintended consequences.' + type: string + extraEnvVarsSecret: + description: List of extra environment variables to be added to the + PubSubPlusEventBroker container from an existing Secret + type: string + image: + description: Image defines container image parameters for the event + broker. + properties: + pullPolicy: + default: IfNotPresent + description: Specifies ImagePullPolicy of the container image + for the event broker. + type: string + pullSecrets: + description: pullSecrets is an optional list of references to + secrets in the same namespace to use for pulling any of the + images used by this PodSpec. + items: + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. + properties: + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + type: string + type: object + x-kubernetes-map-type: atomic + type: array + repository: + description: Defines the container image repo where the event + broker image is pulled from + type: string + tag: + default: latest + description: Specifies the tag of the container image to be used + for the event broker. + type: string + type: object + monitoring: + description: Monitoring specifies a Prometheus monitoring endpoint + for the event broker + properties: + enabled: + default: false + description: Enabled true enables the setup of the Prometheus + Exporter. + type: boolean + extraEnvVars: + description: List of extra environment variables to be added to + the Prometheus Exporter container. + items: + description: MonitoringExtraEnvVar defines environment variables + to be added to the Prometheus Exporter container for Monitoring + properties: + name: + description: Specifies the Name of an environment variable + to be added to the Prometheus Exporter container for Monitoring + type: string + value: + description: Specifies the Value of an environment variable + to be added to the Prometheus Exporter container for Monitoring + type: string + required: + - name + - value + type: object + type: array + image: + description: Image defines container image parameters for the + Prometheus Exporter. + properties: + pullPolicy: + default: IfNotPresent + description: Specifies ImagePullPolicy of the container image + for the Prometheus Exporter. + type: string + pullSecrets: + description: pullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any + of the images used by this PodSpec. + items: + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. + properties: + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + type: string + type: object + x-kubernetes-map-type: atomic + type: array + repository: + description: Defines the container image repo where the Prometheus + Exporter image is pulled from + type: string + tag: + default: latest + description: Specifies the tag of the container image to be + used for the Prometheus Exporter. + type: string + type: object + includeRates: + default: false + description: Defines if Prometheus Exporter should include rates + type: boolean + metricsEndpoint: + description: MetricsEndpoint defines parameters to configure monitoring + for the Prometheus Exporter. + properties: + containerPort: + default: 9628 + description: ContainerPort is the port number to expose on + the Prometheus Exporter pod. + format: int32 + type: number + endpointTlsConfigPrivateKeyName: + default: tls.key + description: EndpointTlsConfigPrivateKeyName is the file name + of the Private Key used to set up TLS configuration + type: string + endpointTlsConfigSecret: + description: EndpointTLSConfigSecret defines TLS secret name + to set up TLS configuration + type: string + endpointTlsConfigServerCertName: + default: tls.crt + description: EndpointTlsConfigServerCertName is the file name + of the Server Certificate used to set up TLS configuration + type: string + listenTLS: + default: false + description: Defines if Metrics Service Endpoint uses TLS + configuration + type: boolean + name: + description: Name is a unique name for the port that can be + referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. + enum: + - TCP + - UDP + - SCTP + type: string + servicePort: + default: 9628 + description: ServicePort is the port number to expose on the + service + format: int32 + type: number + serviceType: + default: ClusterIP + description: Defines the service type for the Metrics Service + Endpoint + type: string + type: object + sslVerify: + default: false + description: Defines if Prometheus Exporter verifies SSL + type: boolean + timeOut: + default: 5 + description: Timeout configuration for Prometheus Exporter scrapper + format: int32 + type: number + type: object + monitoringCredentialsSecret: + description: |- + Defines the password for PubSubPlusEventBroker to be used by the Exporter for monitoring. + When provided, ensure the secret key name is `username_monitor_password`. For valid values refer to the Solace documentation https://docs.solace.com/Admin/Configuring-Internal-CLI-User-Accounts.htm. + nullable: true + type: string + nodeAssignment: + description: NodeAssignment defines labels to constrain PubSubPlusEventBroker + nodes to run on particular node(s), or to prefer to run on particular + nodes. + items: + description: NodeAssignment defines labels to constrain PubSubPlusEventBroker + nodes to specific nodes + properties: + name: + description: Defines the name of broker node type that has the + nodeAssignment spec defined + enum: + - Primary + - Backup + - Monitor + type: string + spec: + description: If provided defines the labels to constrain the + PubSubPlusEventBroker node to specific nodes + properties: + affinity: + default: {} + description: Affinity if provided defines the conditional + approach to assign PubSubPlusEventBroker nodes to specific + nodes to which they can be scheduled + nullable: true + properties: + nodeAffinity: + description: Describes node affinity scheduling rules + for the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node matches the corresponding matchExpressions; the + node(s) with the highest sum are the most preferred. + items: + description: |- + An empty preferred scheduling term matches all objects with implicit weight 0 + (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated + with the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that + the selector applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that + the selector applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching + the corresponding nodeSelectorTerm, in the + range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an update), the system + may or may not try to eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector + terms. The terms are ORed. + items: + description: |- + A null or empty node selector term matches no objects. The requirements of + them are ANDed. + The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that + the selector applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that + the selector applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules + (e.g. co-locate this pod in the same node, zone, etc. + as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched + WeightedPodAffinityTerm fields are added per-node + to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, + associated with the corresponding weight. + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: |- + weight associated with matching the corresponding podAffinityTerm, + in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod label update), the + system may or may not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes corresponding to each + podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: |- + Defines a set of pods (namely those matching the labelSelector + relative to the given namespace(s)) that this pod should be + co-located (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node whose value of + the label with key matches that of any node on which + a pod of the set of pods is running + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling + rules (e.g. avoid putting this pod in the same node, + zone, etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the anti-affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched + WeightedPodAffinityTerm fields are added per-node + to find the most preferred node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, + associated with the corresponding weight. + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: |- + weight associated with matching the corresponding podAffinityTerm, + in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the anti-affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the anti-affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod label update), the + system may or may not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes corresponding to each + podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: |- + Defines a set of pods (namely those matching the labelSelector + relative to the given namespace(s)) that this pod should be + co-located (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node whose value of + the label with key matches that of any node on which + a pod of the set of pods is running + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + nodeSelector: + additionalProperties: + type: string + default: {} + description: NodeSelector if provided defines the exact + labels of nodes to which PubSubPlusEventBroker nodes can + be scheduled + type: object + tolerations: + description: Toleration if provided defines the exact properties + of the PubSubPlusEventBroker nodes can be scheduled on + nodes with d matching taint. + items: + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . + properties: + effect: + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. + type: string + operator: + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. + type: string + tolerationSeconds: + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. + type: string + type: object + type: array + type: object + required: + - name + - spec + type: object + type: array + podAnnotations: + additionalProperties: + type: string + default: {} + description: PodAnnotations allows adding provider-specific pod annotations + to PubSubPlusEventBroker pods + type: object + podDisruptionBudgetForHA: + default: false + description: |- + PodDisruptionBudgetForHA enables setting up PodDisruptionBudget for the broker pods in HA deployment. + This parameter is ignored for non-HA deployments (if redundancy is false). + type: boolean + podLabels: + additionalProperties: + type: string + default: {} + description: PodLabels allows adding provider-specific pod labels + to PubSubPlusEventBroker pods + type: object + preSharedAuthKeySecret: + description: |- + PreSharedAuthKeySecret defines the PreSharedAuthKey Secret for PubSubPlusEventBroker. Random one will be generated if not provided. + When provided, ensure the secret key name is `preshared_auth_key`. For valid values refer to the Solace documentation https://docs.solace.com/Features/HA-Redundancy/Pre-Shared-Keys-SMB.htm?Highlight=pre%20shared. + nullable: true + type: string + redundancy: + default: false + description: Redundancy true specifies HA deployment, false specifies + Non-HA. + type: boolean + securityContext: + description: SecurityContext defines the pod security context for + the event broker. + properties: + fsGroup: + description: Specifies fsGroup in pod security context. 0 or unset + defaults either to 1000002, or if OpenShift detected to unspecified + (see documentation) + format: int64 + type: number + runAsUser: + description: Specifies runAsUser in pod security context. 0 or + unset defaults either to 1000001, or if OpenShift detected to + unspecified (see documentation) + format: int64 + type: number + type: object + service: + description: Service defines broker service details. + properties: + annotations: + additionalProperties: + type: string + default: {} + description: Annotations allows adding provider-specific service + annotations + type: object + ports: + default: + - containerPort: 2222 + name: tcp-ssh + protocol: TCP + servicePort: 2222 + - containerPort: 8080 + name: tcp-semp + protocol: TCP + servicePort: 8080 + - containerPort: 1943 + name: tls-semp + protocol: TCP + servicePort: 1943 + - containerPort: 55555 + name: tcp-smf + protocol: TCP + servicePort: 55555 + - containerPort: 55003 + name: tcp-smfcomp + protocol: TCP + servicePort: 55003 + - containerPort: 55443 + name: tls-smf + protocol: TCP + servicePort: 55443 + - containerPort: 55556 + name: tcp-smfroute + protocol: TCP + servicePort: 55556 + - containerPort: 8008 + name: tcp-web + protocol: TCP + servicePort: 8008 + - containerPort: 1443 + name: tls-web + protocol: TCP + servicePort: 1443 + - containerPort: 9000 + name: tcp-rest + protocol: TCP + servicePort: 9000 + - containerPort: 9443 + name: tls-rest + protocol: TCP + servicePort: 9443 + - containerPort: 5672 + name: tcp-amqp + protocol: TCP + servicePort: 5672 + - containerPort: 5671 + name: tls-amqp + protocol: TCP + servicePort: 5671 + - containerPort: 1883 + name: tcp-mqtt + protocol: TCP + servicePort: 1883 + - containerPort: 8883 + name: tls-mqtt + protocol: TCP + servicePort: 8883 + - containerPort: 8000 + name: tcp-mqttweb + protocol: TCP + servicePort: 8000 + - containerPort: 8443 + name: tls-mqttweb + protocol: TCP + servicePort: 8443 + description: Ports specifies the ports to expose PubSubPlusEventBroker + services. + items: + description: Port defines parameters configure Service details + for the Broker + properties: + containerPort: + description: Port number to expose on the pod. + format: int32 + type: number + name: + description: Unique name for the port that can be referred + to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, or SCTP. + enum: + - TCP + - UDP + - SCTP + type: string + servicePort: + description: Port number to expose on the service + format: int32 + type: number + required: + - containerPort + - name + - protocol + - servicePort + type: object + type: array + type: + default: LoadBalancer + description: ServiceType specifies how to expose the broker services. + Options include ClusterIP, NodePort, LoadBalancer (default). + type: string + type: object + serviceAccount: + description: ServiceAccount defines a ServiceAccount dedicated to + the PubSubPlusEventBroker + properties: + name: + description: |- + Name specifies the name of an existing ServiceAccount dedicated to the PubSubPlusEventBroker. + If this value is missing a new ServiceAccount will be created. + type: string + required: + - name + type: object + storage: + description: Storage defines storage details for the broker. + properties: + customVolumeMount: + description: CustomVolumeMount can be used to show the data volume + should be mounted instead of using a storage class. + items: + description: StorageCustomVolumeMount defines Image details + and pulling configurations + properties: + name: + description: Defines the name of PubSubPlusEventBroker node + type that has the customVolumeMount spec defined + enum: + - Primary + - Backup + - Monitor + type: string + persistentVolumeClaim: + description: Defines the customVolumeMount that can be used + mount the data volume instead of using a storage class + properties: + claimName: + description: Defines the claimName of a custom PersistentVolumeClaim + to be used instead + type: string + required: + - claimName + type: object + type: object + type: array + messagingNodeStorageSize: + default: 30Gi + description: MessagingNodeStorageSize if provided will assign + the minimum persistent storage to be used by the message nodes. + type: string + monitorNodeStorageSize: + default: 3Gi + description: MonitorNodeStorageSize if provided this will create + and assign the minimum recommended storage to Monitor pods. + type: string + slow: + default: false + description: Slow indicate slow storage is in use, an example + is NFS. + type: boolean + useStorageClass: + description: UseStrorageClass Name of the StorageClass to be used + to request persistent storage volumes. If undefined, the "default" + StorageClass will be used. + type: string + type: object + systemScaling: + description: |- + SystemScaling provides exact fine-grained specification of the event broker scaling parameters + and the assigned CPU / memory resources to the Pod. + type: object + x-kubernetes-preserve-unknown-fields: true + timezone: + default: UTC + description: Defines the timezone for the event broker container, + if undefined default is UTC. Valid values are tz database time zone + names. + type: string + tls: + description: TLS provides TLS configuration for the event broker. + properties: + certFilename: + default: tls.key + description: Name of the Certificate file in the `serverCertificatesSecret` + type: string + certKeyFilename: + default: tls.crt + description: Name of the Key file in the `serverCertificatesSecret` + type: string + enabled: + default: false + description: Enabled true enables TLS for the broker. + type: boolean + serverTlsConfigSecret: + default: example-tls-secret + description: Specifies the tls configuration secret to be used + for the broker + type: string + type: object + updateStrategy: + default: automatedRolling + description: UpdateStrategy specifies how to update an existing deployment. + manualPodRestart waits for user intervention. + enum: + - automatedRolling + - manualPodRestart + type: string + type: object + status: + description: EventBrokerStatus defines the observed state of the PubSubPlusEventBroker + properties: + broker: + description: Broker section provides the broker status + properties: + adminCredentialsSecret: + type: string + brokerImage: + type: string + haDeployment: + type: string + serviceName: + type: string + serviceType: + type: string + statefulSets: + items: + type: string + type: array + tlsSecret: + type: string + tlsSupport: + type: string + type: object + conditions: + description: Conditions provide information about the observed status + of the deployment + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + podsList: + description: PodsList are the names of the eventbroker and optionally + the monitoring pods + items: + type: string + type: array + prometheusMonitoring: + description: Monitoring sectionprovides monitoring support status + properties: + enabled: + type: string + exporterImage: + type: string + serviceName: + type: string + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pubsubplus-eventbroker-operator/1.1.1/metadata/annotations.yaml b/operators/pubsubplus-eventbroker-operator/1.1.1/metadata/annotations.yaml new file mode 100644 index 00000000000..d6a20999992 --- /dev/null +++ b/operators/pubsubplus-eventbroker-operator/1.1.1/metadata/annotations.yaml @@ -0,0 +1,18 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: pubsubplus-eventbroker-operator + operators.operatorframework.io.bundle.channels.v1: stable + operators.operatorframework.io.bundle.channel.default.v1: stable + operators.operatorframework.io.metrics.builder: operator-sdk-v1.34.1 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ + + # Required by RedHat certification + com.redhat.openshift.versions: "v4.11" diff --git a/operators/pubsubplus-eventbroker-operator/1.1.1/tests/scorecard/config.yaml b/operators/pubsubplus-eventbroker-operator/1.1.1/tests/scorecard/config.yaml new file mode 100644 index 00000000000..32323e94180 --- /dev/null +++ b/operators/pubsubplus-eventbroker-operator/1.1.1/tests/scorecard/config.yaml @@ -0,0 +1,70 @@ +apiVersion: scorecard.operatorframework.io/v1alpha3 +kind: Configuration +metadata: + name: config +stages: +- parallel: true + tests: + - entrypoint: + - scorecard-test + - basic-check-spec + image: quay.io/operator-framework/scorecard-test:v1.23.0 + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:v1.23.0 + labels: + suite: olm + test: olm-bundle-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-validation + image: quay.io/operator-framework/scorecard-test:v1.23.0 + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-resources + image: quay.io/operator-framework/scorecard-test:v1.23.0 + labels: + suite: olm + test: olm-crds-have-resources-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:v1.23.0 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:v1.23.0 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {}