├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── RELEASE.md ├── bundle.Dockerfile ├── bundle ├── manifests │ ├── 0.6.0 │ │ ├── skupper-operator-skupper-site-controller_v1_serviceaccount.yaml │ │ └── skupper-operator.v0.6.0.clusterserviceversion.yaml │ ├── 0.7.0 │ │ ├── skupper-operator-skupper-site-controller_v1_serviceaccount.yaml │ │ └── skupper-operator.v0.7.0.clusterserviceversion.yaml │ ├── 0.8.0 │ │ └── skupper-operator.v0.8.0.clusterserviceversion.yaml │ ├── 0.8.1 │ │ └── skupper-operator.v0.8.1.clusterserviceversion.yaml │ ├── 0.8.7 │ │ └── skupper-operator.v0.8.7.clusterserviceversion.yaml │ ├── 1.1.1 │ │ └── skupper-operator.v1.1.1.clusterserviceversion.yaml │ ├── 1.3.0 │ │ └── skupper-operator.v1.3.0.clusterserviceversion.yaml │ ├── 1.4.0-rc2 │ │ └── skupper-operator.v1.4.0-rc2.clusterserviceversion.yaml │ ├── 1.4.0-rc3 │ │ └── skupper-operator.v1.4.0-rc3.clusterserviceversion.yaml │ ├── 1.4.1 │ │ └── skupper-operator.v1.4.1.clusterserviceversion.yaml │ ├── 1.4.2 │ │ └── skupper-operator.v1.4.2.clusterserviceversion.yaml │ ├── 1.4.3 │ │ └── skupper-operator.v1.4.3.clusterserviceversion.yaml │ ├── 1.5.0 │ │ └── skupper-operator.v1.5.0.clusterserviceversion.yaml │ ├── 1.5.1 │ │ └── skupper-operator.v1.5.1.clusterserviceversion.yaml │ ├── 1.5.2 │ │ └── skupper-operator.v1.5.2.clusterserviceversion.yaml │ ├── 1.5.3 │ │ └── skupper-operator.v1.5.3.clusterserviceversion.yaml │ ├── 1.6.0 │ │ └── skupper-operator.v1.6.0.clusterserviceversion.yaml │ ├── 1.7.0 │ │ └── skupper-operator.v1.7.0.clusterserviceversion.yaml │ ├── 1.7.1 │ │ └── skupper-operator.v1.7.1.clusterserviceversion.yaml │ ├── 1.7.3 │ │ └── skupper-operator.v1.7.3.clusterserviceversion.yaml │ ├── 1.8.0 │ │ └── skupper-operator.v1.8.0.clusterserviceversion.yaml │ ├── 1.8.1 │ │ └── skupper-operator.v1.8.1.clusterserviceversion.yaml │ ├── 1.8.2 │ │ └── skupper-operator.v1.8.2.clusterserviceversion.yaml │ ├── 1.8.3 │ │ └── skupper-operator.v1.8.3.clusterserviceversion.yaml │ ├── 1.8.4 │ │ └── skupper-operator.v1.8.4.clusterserviceversion.yaml │ ├── 1.9.0 │ │ └── skupper-operator.v1.9.0.clusterserviceversion.yaml │ └── 1.9.1 │ │ └── skupper-operator.v1.9.1.clusterserviceversion.yaml └── metadata │ └── annotations.yaml ├── env.sh ├── examples ├── k8s │ ├── 00-cs.yaml │ ├── 10-og.yaml │ ├── 20-sub-cluster-wide.yaml │ └── 20-sub.yaml ├── ocp │ ├── 00-cs.yaml │ ├── 10-og.yaml │ ├── 20-sub-cluster-wide.yaml │ └── 20-sub.yaml ├── skupper-site-edge.yaml └── skupper-site-interior.yaml ├── prepare-update.sh ├── scripts ├── index_update.py ├── operatorhub.sh ├── read_var.sh ├── update_csv.py ├── update_examples.py └── vars.sh ├── skupper-operator-index.Dockerfile └── skupper-operator-index └── skupper-operator └── catalog.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | *.dll 5 | *.so 6 | *.dylib 7 | 8 | # Test binary, built with `go test -c` 9 | *.test 10 | 11 | # Output of the go coverage tool, specifically when used with LiteIDE 12 | *.out 13 | 14 | # Dependency directories (remove the comment below to include it) 15 | # vendor/ 16 | .idea/ 17 | bin/ 18 | cache/ 19 | opm 20 | index_build_tmp* 21 | index.Dockerfile* 22 | tmp/ 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | VERSION := v1.9.1 2 | BUNDLE_IMG ?= quay.io/skupper/skupper-operator-bundle:$(VERSION) 3 | INDEX_IMG ?= quay.io/skupper/skupper-operator-index:$(VERSION) 4 | OPM_URL := https://github.com/operator-framework/operator-registry/releases/latest/download/linux-amd64-opm 5 | OPM := $(or $(shell which opm 2> /dev/null),./opm) 6 | CONTAINER_TOOL := podman 7 | CATALOG_YAML := skupper-operator-index/skupper-operator/catalog.yaml 8 | PLATFORMS ?= linux/amd64,linux/arm64 9 | 10 | all: index-build 11 | 12 | .PHONY: bundle-build ## Build the bundle image. 13 | bundle-build: test 14 | @echo Building bundle image 15 | $(CONTAINER_TOOL) buildx build --no-cache --platform ${PLATFORMS} --manifest skupper-operator-bundle -f bundle.Dockerfile -t $(BUNDLE_IMG) . 16 | @echo Pushing $(BUNDLE_IMG) 17 | $(CONTAINER_TOOL) manifest push --all skupper-operator-bundle $(BUNDLE_IMG) 18 | 19 | .PHONY: opm-download 20 | opm-download: 21 | @echo Checking if $(OPM) is available 22 | ifeq (,$(wildcard $(OPM))) 23 | wget --quiet $(OPM_URL) -O ./opm && chmod +x ./opm 24 | endif 25 | 26 | .PHONY: index-build ## Build the index image. 27 | index-build: bundle-build opm-download 28 | $(info Using OPM Tool: $(OPM)) 29 | @echo Adding unique $(VERSION) entry to catalog.yaml 30 | @python ./scripts/index_update.py $(CATALOG_YAML) 31 | @echo Adding bundle to the catalog 32 | $(OPM) render $(BUNDLE_IMG) --output yaml >> $(CATALOG_YAML) 33 | $(OPM) validate skupper-operator-index/ 34 | @echo Building index image 35 | $(CONTAINER_TOOL) buildx build --no-cache --platform ${PLATFORMS} --manifest skupper-operator-index -f skupper-operator-index.Dockerfile -t $(INDEX_IMG) . 36 | @echo Pushing $(INDEX_IMG) 37 | $(CONTAINER_TOOL) manifest push --all skupper-operator-index $(INDEX_IMG) 38 | 39 | .PHONY: test 40 | test: 41 | @rm -rf ./tmp || true 42 | mkdir ./tmp 43 | cp -r bundle/manifests/$(subst v,,$(VERSION)) ./tmp/manifests 44 | cp -r bundle/metadata ./tmp 45 | operator-sdk bundle validate ./tmp 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Skupper Operator 2 | 3 | Skupper operator that simply produces the bundle and the index images. 4 | Its goal is to avoid introducing a new CRD, just relying on the site-controller 5 | to kick things off based on an existing skupper-site ConfigMap. 6 | 7 | # Installing the skupper-operator 8 | 9 | 10 | The instructions below demonstrate how to install the skupper-operator 11 | and run it inside the `my-namespace` namespace. If you want to install it in 12 | a different namespace, edit the referenced yaml before applying. 13 | 14 | If you want to test your catalog against a local minikube cluster, 15 | you'll need to install OLM first. For more info, check this out: 16 | https://olm.operatorframework.io/docs/getting-started/ 17 | 18 | In an OpenShift cluster, OLM is already installed. 19 | 20 | # Installing from OperatorHub.io (Community Operators) 21 | 22 | Skupper Operator is also available on [OperatorHub.io](https://operatorhub.io/operator/skupper-operator). 23 | 24 | If the `Community Operators` catalog is available in your cluster, you 25 | don't need to install an extra catalog. 26 | 27 | To install the latest published version of the Skupper Operator on a Kubernetes cluster where OLM is installed, run: 28 | 29 | ```shell 30 | kubectl create -f https://operatorhub.io/install/skupper-operator.yaml 31 | ``` 32 | 33 | This procedure installs the Skupper Operator at cluster level (watching all namespaces). 34 | 35 | Verify the Skupper Operator is running by executing: 36 | 37 | ```shell 38 | kubectl get csv -n operators 39 | ``` 40 | 41 | If you want to install the Skupper Operator in a single namespace, follow the `Installing on Minikube` or 42 | `Installing on OpenShift` sections below. 43 | 44 | Otherwise, after the operator has been installed from OperatorHub.io, you can skip the following sections 45 | and go straight to [Creating a new skupper site](#creating-a-new-skupper-site) 46 | 47 | ## Installing on Minikube 48 | 49 | To install the Skupper Operator CatalogSource on your Minikube cluster, run: 50 | 51 | ``` 52 | # Creating a CatalogSource in the olm namespace 53 | kubectl apply -f examples/k8s/00-cs.yaml 54 | 55 | # Wait for the skupper-operator catalog pod to be running 56 | kubectl -n olm get pods | grep skupper-operator 57 | ``` 58 | 59 | Once the catalog is available, you can then create the subscription: 60 | 61 | ``` 62 | # Create an OperatorGroup in the `my-namespace` namespace 63 | kubectl apply -f examples/k8s/10-og.yaml 64 | 65 | # Create a Subscription in the `my-namespace` namespace 66 | kubectl apply -f examples/k8s/20-sub.yaml 67 | ``` 68 | 69 | ## Installing on OpenShift 70 | 71 | To install the Skupper Operator CatalogSource on your OpenShift cluster, run: 72 | 73 | ``` 74 | # Creating a CatalogSource in the `openshift-marketplace` namespace 75 | kubectl apply -f examples/ocp/00-cs.yaml 76 | 77 | # Wait for the skupper-operator catalog pod to be running 78 | kubectl -n openshift-marketplace get pods | grep skupper-operator 79 | ``` 80 | 81 | Once the catalog is available, you can then create the subscription: 82 | 83 | ``` 84 | # Create an OperatorGroup in the `my-namespace` namespace 85 | kubectl apply -f examples/ocp/10-og.yaml 86 | 87 | # Create a Subscription in the `my-namespace` namespace 88 | kubectl apply -f examples/ocp/20-sub.yaml 89 | ``` 90 | 91 | ## Validate skupper-operator is running 92 | 93 | Look at the pods running in your `my-namespace` namespace now. You should 94 | see a running pod for the `skupper-site-controller`. 95 | 96 | ``` 97 | kubectl -n my-namespace get pods 98 | NAME READY STATUS RESTARTS AGE 99 | skupper-site-controller-d7b57964-gxms6 1/1 Running 0 39m 100 | ``` 101 | 102 | Now the Skupper Operator is running and you can create a site. 103 | At this point with most Operators, you would create a CR, however 104 | the Skupper Operator manages your Skupper site by watching a `ConfigMap` 105 | named `skupper-site` in the namespace where it is running 106 | (in this case the `my-namespace` namespace). 107 | 108 | # Creating a new skupper site 109 | 110 | Create a `ConfigMap` named `skupper-site` in the `my-namespace` namespace: 111 | 112 | ``` 113 | kubectl apply -f examples/skupper-site-interior.yaml 114 | ``` 115 | 116 | Once the `ConfigMap` is created, Skupper Site Controller will initialize 117 | your Skupper site and you can verify everything is running properly if you 118 | see the `skupper-router` and the `skupper-service-controller` pods running 119 | in the `my-namespace` namespace, in example: 120 | 121 | ``` 122 | kubectl -n my-namespace get pods 123 | NAME READY STATUS RESTARTS AGE 124 | skupper-prometheus-867f57b89-qpm7w 1/1 Running 0 33s 125 | skupper-router-8c6cc6d76-27562 2/2 Running 0 40s 126 | skupper-service-controller-57cdbb56c5-vc7s2 2/2 Running 0 34s 127 | skupper-site-controller-d7b57964-gxms6 1/1 Running 0 51m 128 | ``` 129 | 130 | You can now navigate to the Skupper console. 131 | 132 | ``` 133 | $ skupper -n status 134 | ``` 135 | 136 | The namespace in the example YAML is `my-namespace`. 137 | 138 | Navigate to the `skupper` route and log in using the credentials you specified in YAML. The example YAML uses `admin/changeme`. 139 | 140 | 141 | For more information, visit the official [Skupper website](https://skupper.io) 142 | 143 | # Uninstalling 144 | 145 | ## Uninstalling from Minikube 146 | 147 | ``` 148 | # Delete the skupper-site ConfigMap 149 | kubectl delete -f examples/skupper-site-interior.yaml 150 | 151 | # Deleting the Subscription 152 | kubectl delete -f examples/k8s/20-sub.yaml 153 | 154 | # Delete the CSV 155 | kubectl -n my-namespace delete csv skupper-operator.v1.9.1 156 | 157 | # Deleting the OperatorGroup 158 | kubectl delete -f examples/k8s/10-og.yaml 159 | 160 | # Deleting the CatalogSource 161 | kubectl delete -f examples/k8s/00-cs.yaml 162 | ``` 163 | 164 | ## Uninstalling from OpenShift 165 | 166 | ``` 167 | # Delete the skupper-site ConfigMap 168 | kubectl delete -f examples/skupper-site-interior.yaml 169 | 170 | # Deleting the Subscription 171 | kubectl delete -f examples/ocp/20-sub.yaml 172 | 173 | # Delete the CSV 174 | kubectl -n my-namespace delete csv skupper-operator.v1.9.1 175 | 176 | # Deleting the OperatorGroup 177 | kubectl delete -f examples/ocp/10-og.yaml 178 | 179 | # Deleting the CatalogSource 180 | kubectl delete -f examples/ocp/00-cs.yaml 181 | ``` 182 | 183 | # Note for cluster-wide installations 184 | 185 | If you want to try a cluster-wide installation, you don't need 186 | to create the `OperatorGroup` as it is already defined at the 187 | destination namespaces, so you just need to create the subscription 188 | at the correct namespaces, see below. 189 | 190 | ## Cluster-wide installation on Minikube 191 | 192 | On Minikube the `Subscription` needs to be defined in the `operators` namespace, like: 193 | 194 | ``` 195 | kubectl apply -f examples/k8s/20-sub-cluster-wide.yaml 196 | ``` 197 | 198 | ## Cluster-wide installation on OpenShift 199 | 200 | On OpenShift the `Subscription` needs to be defined in the `openshift-operators` namespace, like: 201 | 202 | ``` 203 | kubectl apply -f examples/ocp/20-sub-cluster-wide.yaml 204 | ``` 205 | 206 | # Building the bundle and index images 207 | 208 | To build the bundle and index images, you just need to run: `make`. 209 | -------------------------------------------------------------------------------- /RELEASE.md: -------------------------------------------------------------------------------- 1 | # Release procedure 2 | 3 | [repository]: https://github.com/skupperproject/skupper-operator 4 | [skupper repository]: https://github.com/skupperproject/skupper 5 | [operatorhubio]: https://operatorhub.io 6 | [operatorhub]: https://github.com/k8s-operatorhub/community-operators 7 | [community-operators]: https://github.com/redhat-openshift-ecosystem/community-operators-prod.git 8 | 9 | ## Requirements 10 | 11 | * operator-sdk >= 1.33 12 | * opm version >= 1.35 (will be downloaded if absent) 13 | * podman version >= 4.0 14 | * python version > 3.9 15 | 16 | ## Branching 17 | 18 | Releases are handled in separate branches, created directly on the [skupper-operator repository][repository]. 19 | 20 | Branches should be named: `.` version, in example: `1.6`. 21 | 22 | * If the respective branch already exists on the [repository], check it out, cherry-pick eventual 23 | changes merged to the `main` branch and continue working from there. 24 | * In case the branch does not yet exist, make sure to create it on top of the main branch. 25 | 26 | ## Preparing updates 27 | 28 | Now that the branching is done, we need to specify the Skupper component versions that will be used 29 | by the respective release. 30 | 31 | ### Get the new versions 32 | 33 | You need to have the following information handy: 34 | 35 | * **New operator version** 36 | 37 | The new operator version to be released, and the one that will be part of the CSV. 38 | This version will also be the version displayed on the Operator Hub and to define the 39 | operator channel names where the new version will be available. 40 | 41 | Example: **1.6.0** 42 | 43 | 44 | * **Current version** 45 | 46 | The version to be used as a base for the new manifests to be built on top of. 47 | It is usually the latest released version. 48 | 49 | Example: **1.5.3** 50 | 51 | 52 | * **Replaces version** 53 | 54 | The installed CSV version to be replaced by this new version. 55 | It is usually the same as the current version, but eventually when we have 56 | release candidate versions, the version to be replaced should not be the release 57 | candidate version, but a released version. 58 | 59 | Example: **1.5.3** 60 | 61 | 62 | * **Skupper Router Tag** 63 | 64 | The skupper-router tag (from quay.io) to be used by the update scripts to consume 65 | the digest SHA and use it in the bundle manifests. 66 | 67 | In case you are not sure on the tag to use, you can identify it by looking at the 68 | [skupper repository] under `pkg/images/images.go` 69 | 70 | Example: **2.5.2** 71 | 72 | 73 | * **Skupper Controller Tag** 74 | 75 | The skupper controller images tag (from quay.io) to be used by the update scripts to consume 76 | the digest SHAs and use them in the bundle manifests. 77 | 78 | In case you are not sure on the tag to use, you can identify it by looking at the 79 | [skupper repository] under `pkg/images/images.go` 80 | 81 | Example: **1.6.0** 82 | 83 | 84 | * **Prometheus Tag** 85 | 86 | The prometheus image tag (from quay.io) to be used by the update scripts to consume 87 | the digest SHA and use them in the bundle manifests. 88 | 89 | In case you are not sure on the tag to use, you can identify it by looking at the 90 | [skupper repository] under `pkg/images/images.go` 91 | 92 | Example: **v2.42.0** 93 | 94 | 95 | * Oauth Proxy Tag (i.e.: 4.14.0) 96 | 97 | The OAUTH Proxy image tag (from quay.io) to be used by the update scripts to consume 98 | the digest SHA and use them in the bundle manifests. 99 | 100 | In case you are not sure on the tag to use, you can identify it by looking at the 101 | [skupper repository] under `pkg/images/images.go` 102 | 103 | Example: **4.14.0** 104 | 105 | 106 | ### Create the new bundle 107 | 108 | 1. Once you have all the new versions handy, next thing do so is to update the `env.sh` script 109 | with all the information to be used. 110 | 2. Then you must source the env.sh script: `source env.sh` 111 | 3. Run the update script: `./prepare-update.sh` 112 | 113 | At this point, the bundle has been updated, but just locally. 114 | You must then validate if all changes look good before proceeding. 115 | 116 | ## Building and pushing updated images 117 | 118 | Once everything has been validated, it is time to build and push the bundle, 119 | which will push two images onto quay.io (with the respective new version tag, i.e.: **1.6.0**). 120 | 121 | Along with that, it will also update the catalog index file. 122 | 123 | To do that, run: `make`. 124 | 125 | ## Testing 126 | 127 | Make sure you test the updated instructions, defined through the [README.md](README.md) 128 | against a minikube and an OpenShift (or CRC) cluster. 129 | 130 | ## Pushing changes to the release branch 131 | 132 | ### Commit and push 133 | 134 | Now that the new bundle (index image and catalog) have been pushed, 135 | it is time to commit your changes and raise a PR. 136 | 137 | ### Pushing a release tag 138 | 139 | Once your PR has been reviewed and merged, you should push a version tag to the [repository]. 140 | 141 | Here is an example for version 1.6.0 (considering remote [repository] is called upstream): 142 | ``` 143 | git tag 1.6.0 144 | git push upstream 1.6.0 145 | ``` 146 | 147 | Once this is done, the Skupper Operator is released. 148 | 149 | Now it is time to make it public by creating pull requests to the [Operator Hub][operatorhub] and 150 | to the [Openshift Community Operators][community-operators] repositories. 151 | 152 | ## OperatorHub 153 | 154 | The Skupper Operator is also available at the upstream [Operator Hub portal][operatorhubio]. 155 | 156 | Every time a new version is released, we must also update the [Operator Hub repository][operatorhub]. 157 | 158 | Changes done to the [Operator Hub repository][operatorhub] will show up in the https://operatorhub.io after 159 | the PR ir approved and merged (it takes some time, as new images are built after PR is merged). 160 | 161 | If you haven't already done so, clone the [Operator Hub repository][operatorhub]. 162 | 163 | ### Branch 164 | 165 | The first thing to do, inside the [Operator Hub repository][operatorhub], is to create a new branch, 166 | naming it using pattern similar to this one: `upd-skupper-`. 167 | 168 | In example: `upd-skupper-1.6.0`. 169 | 170 | Make sure this branch is created on top of the main branch of the [Operator Hub repository][operatorhub]. 171 | 172 | ### Update 173 | 174 | Now, inside the [Operator Hub repository][operatorhub], make sure that the `env.sh` script is sourced in 175 | your current shell session and then execute the following command: 176 | 177 | **_NOTE:_** The command below will run from the main branch, if you need to run it from your specific 178 | branch, make sure to update the command before executing. 179 | 180 | ```shell 181 | curl -s https://raw.githubusercontent.com/skupperproject/skupper-operator/main/scripts/operatorhub.sh | sh 182 | ``` 183 | 184 | The script will make all necessary changes locally. 185 | Next you must commit your changes (sign your commit) and raise a PR. 186 | 187 | ### PR 188 | 189 | When you create the PR, make sure you populate the template accordingly. 190 | You can remove the section for "new operators" from the template and add 191 | a ticker `[x]` to all items, to state you have followed all the rules. 192 | 193 | ## Community Operators (openshift) 194 | 195 | The Skupper Operator is also available on the Operator Hub of OpenShift and CRC clusters, 196 | as part of the Community Operators catalog. 197 | 198 | Every time a new version is released, we must also update the [Community Operators repository][community-operators]. 199 | 200 | Changes done to the [Community Operators repository][community-operators] will show up in the Community Operators 201 | catalog after the PR ir approved and merged (it takes some time, as new images are built after PR is merged). 202 | 203 | If you haven't already done so, clone the [Community Operators repository][community-operators]. 204 | 205 | The procedure is exactly the same done previously to OperatorHub. 206 | 207 | ### Branch 208 | 209 | The first thing to do, inside the [Community Operators repository][community-operators], is to create a new branch, 210 | naming it using pattern similar to this one: `upd-skupper-`. 211 | 212 | In example: `upd-skupper-1.6.0`. 213 | 214 | Make sure this branch is created on top of the main branch of the [Community Operators repository][community-operators]. 215 | 216 | ### Update 217 | 218 | Now, inside the [Community Operators repository][community-operators], make sure that the `env.sh` script is sourced in 219 | your current shell session and then execute the following command: 220 | 221 | **_NOTE:_** The command below will run from the main branch, if you need to run it from your specific 222 | branch, make sure to update the command before executing. 223 | 224 | ```shell 225 | curl -s https://raw.githubusercontent.com/skupperproject/skupper-operator/main/scripts/operatorhub.sh | sh 226 | ``` 227 | 228 | The script will make all necessary changes locally. 229 | Next you must commit your changes (sign your commit) and raise a PR. 230 | 231 | ### PR 232 | 233 | When you create the PR, make sure you populate the template accordingly. 234 | You can remove the section for "new operators" from the template and add 235 | a ticker `[x]` to all items, to state you have followed all the rules. 236 | -------------------------------------------------------------------------------- /bundle.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | # Core bundle labels. 4 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 7 | LABEL operators.operatorframework.io.bundle.package.v1=skupper-operator 8 | LABEL operators.operatorframework.io.bundle.channels.v1=alpha 9 | LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 10 | LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.4.0+git 11 | LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 12 | 13 | # Copy files to locations specified by labels. 14 | COPY bundle/manifests/1.9.1 /manifests/ 15 | COPY bundle/metadata /metadata/ 16 | -------------------------------------------------------------------------------- /bundle/manifests/0.6.0/skupper-operator-skupper-site-controller_v1_serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: skupper-site-controller 5 | -------------------------------------------------------------------------------- /bundle/manifests/0.6.0/skupper-operator.v0.6.0.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | certified: "false" 7 | categories: "Integration & Delivery, Networking, Streaming & Messaging" 8 | description: Skupper Operator provides the ability to create a Virtual Application Network 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v0.6.0 10 | createdAt: 2021-04-14T08:00:00Z 11 | capabilities: Seamless Upgrades 12 | repository: https://github.com/skupperproject/skupper-operator 13 | support: Skupper Project 14 | 15 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 16 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 17 | labels: 18 | operatorframework.io/os.linux: supported 19 | operatorframework.io/arch.amd64: supported 20 | name: skupper-operator.v0.6.0 21 | namespace: placeholder 22 | spec: 23 | apiservicedefinitions: {} 24 | description: | 25 | Skupper site operator. 26 | 27 | 28 | The Skupper site controller operator helps you managing your site by watching for a 29 | ConfigMap named skupper-site. To get started with it you can simply define this ConfigMap 30 | in the desired namespace and the skupper operator will take care of defining your site accordingly. 31 | 32 | See an example below: 33 | 34 | 35 | apiVersion: v1 36 | kind: ConfigMap 37 | metadata: 38 | name: skupper-site 39 | data: 40 | router-mode: interior 41 | 42 | displayName: Skupper 43 | icon: 44 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 45 | mediatype: image/svg+xml 46 | install: 47 | spec: 48 | clusterPermissions: 49 | - rules: 50 | - apiGroups: 51 | - apps 52 | resources: 53 | - deployments 54 | - statefulsets 55 | - daemonsets 56 | verbs: 57 | - get 58 | - list 59 | - watch 60 | - create 61 | - update 62 | - patch 63 | - delete 64 | - apiGroups: 65 | - route.openshift.io 66 | resources: 67 | - routes 68 | verbs: 69 | - get 70 | - list 71 | - watch 72 | - create 73 | - update 74 | - patch 75 | - delete 76 | - apiGroups: 77 | - "" 78 | resources: 79 | - pods 80 | - pods/exec 81 | - secrets 82 | - configmaps 83 | - serviceaccounts 84 | - services 85 | verbs: 86 | - get 87 | - list 88 | - watch 89 | - create 90 | - update 91 | - patch 92 | - delete 93 | - apiGroups: 94 | - rbac.authorization.k8s.io 95 | resources: 96 | - rolebindings 97 | - roles 98 | verbs: 99 | - get 100 | - list 101 | - watch 102 | - create 103 | - delete 104 | serviceAccountName: skupper-site-controller 105 | permissions: 106 | - rules: 107 | - apiGroups: 108 | - apps 109 | resources: 110 | - deployments 111 | - statefulsets 112 | - daemonsets 113 | verbs: 114 | - get 115 | - list 116 | - watch 117 | - create 118 | - update 119 | - patch 120 | - delete 121 | - apiGroups: 122 | - route.openshift.io 123 | resources: 124 | - routes 125 | verbs: 126 | - get 127 | - list 128 | - watch 129 | - create 130 | - update 131 | - patch 132 | - delete 133 | - apiGroups: 134 | - "" 135 | resources: 136 | - pods 137 | - pods/exec 138 | - secrets 139 | - configmaps 140 | - serviceaccounts 141 | - services 142 | verbs: 143 | - get 144 | - list 145 | - watch 146 | - create 147 | - update 148 | - patch 149 | - delete 150 | - apiGroups: 151 | - rbac.authorization.k8s.io 152 | resources: 153 | - rolebindings 154 | - roles 155 | verbs: 156 | - get 157 | - list 158 | - watch 159 | - create 160 | - delete 161 | serviceAccountName: skupper-site-controller 162 | deployments: 163 | - name: skupper-site-controller 164 | spec: 165 | replicas: 1 166 | selector: 167 | matchLabels: 168 | control-plane: controller-manager 169 | strategy: {} 170 | template: 171 | metadata: 172 | labels: 173 | control-plane: controller-manager 174 | spec: 175 | containers: 176 | - command: 177 | - /app/site-controller 178 | image: quay.io/skupper/site-controller@sha256:b8626e3beda540fd37a6ed523b76b879e1cfc492824223187d2d903c4763afa7 179 | name: manager 180 | securityContext: 181 | allowPrivilegeEscalation: false 182 | env: 183 | - name: WATCH_NAMESPACE 184 | valueFrom: 185 | fieldRef: 186 | fieldPath: metadata.annotations['olm.targetNamespaces'] 187 | - name: QDROUTERD_IMAGE 188 | value: quay.io/interconnectedcloud/qdrouterd@sha256:d5a8006292f0182c9a81511260c38438bc883e56059d7c2802748118a1663505 189 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 190 | value: quay.io/skupper/service-controller@sha256:984f9891dd924d8469da7455a872987ff0d6346a6917ccb453ecc2d05837fa5e 191 | securityContext: 192 | runAsNonRoot: false 193 | serviceAccountName: skupper-site-controller 194 | terminationGracePeriodSeconds: 10 195 | strategy: deployment 196 | installModes: 197 | - supported: true 198 | type: OwnNamespace 199 | - supported: false 200 | type: SingleNamespace 201 | - supported: false 202 | type: MultiNamespace 203 | - supported: true 204 | type: AllNamespaces 205 | keywords: 206 | - skupper 207 | - service 208 | - mesh 209 | - van 210 | links: 211 | - name: Skupper Operator 212 | url: https://github.com/skupperproject/skupper-operator 213 | maintainers: 214 | - email: skupper@googlegroups.com 215 | name: Skupper Community 216 | maturity: alpha 217 | provider: 218 | name: Skupper Project 219 | url: https://skupper.io 220 | version: 0.6.0 221 | -------------------------------------------------------------------------------- /bundle/manifests/0.7.0/skupper-operator-skupper-site-controller_v1_serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: skupper-site-controller 5 | -------------------------------------------------------------------------------- /bundle/manifests/0.7.0/skupper-operator.v0.7.0.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | certified: "false" 7 | categories: "Integration & Delivery, Networking, Streaming & Messaging" 8 | description: Skupper Operator provides the ability to create a service network 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v0.7.0 10 | createdAt: 2021-04-14T08:00:00Z 11 | capabilities: Seamless Upgrades 12 | repository: https://github.com/skupperproject/skupper-operator 13 | support: Skupper Project 14 | 15 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 16 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 17 | labels: 18 | operatorframework.io/os.linux: supported 19 | operatorframework.io/arch.amd64: supported 20 | name: skupper-operator.v0.7.0 21 | namespace: placeholder 22 | spec: 23 | replaces: skupper-operator.v0.6.0 24 | apiservicedefinitions: {} 25 | description: | 26 | Skupper enables communication between services running in different network locations. 27 | It allows geographically distributed services to connect as if they were all running in the same site. 28 | 29 | Each site is a namespace with a running Skupper instance. 30 | 31 | The Skupper operator allows you create and manage sites. 32 | The operator processes any ConfigMap named skupper-site and configures the site for the service network accordingly. 33 | 34 | To get started, create the following ConfigMap in the desired namespace, the 35 | Skupper operator will create the Skupper instance and configure the site. 36 | 37 | apiVersion: v1 38 | kind: ConfigMap 39 | metadata: 40 | name: skupper-site 41 | 42 | The operator can be installed to a single namespace or at cluster level, watching for the skupper-site ConfigMap in all namespaces. 43 | displayName: Skupper 44 | icon: 45 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 46 | mediatype: image/svg+xml 47 | install: 48 | spec: 49 | clusterPermissions: 50 | - rules: 51 | - apiGroups: 52 | - apps 53 | resources: 54 | - deployments 55 | - statefulsets 56 | - daemonsets 57 | verbs: 58 | - get 59 | - list 60 | - watch 61 | - create 62 | - update 63 | - patch 64 | - delete 65 | - apiGroups: 66 | - route.openshift.io 67 | resources: 68 | - routes 69 | verbs: 70 | - get 71 | - list 72 | - watch 73 | - create 74 | - update 75 | - patch 76 | - delete 77 | - apiGroups: 78 | - "" 79 | resources: 80 | - pods 81 | - pods/exec 82 | - secrets 83 | - configmaps 84 | - serviceaccounts 85 | - services 86 | verbs: 87 | - get 88 | - list 89 | - watch 90 | - create 91 | - update 92 | - patch 93 | - delete 94 | - apiGroups: 95 | - rbac.authorization.k8s.io 96 | resources: 97 | - rolebindings 98 | - roles 99 | verbs: 100 | - get 101 | - list 102 | - watch 103 | - create 104 | - delete 105 | - apiGroups: 106 | - networking.k8s.io 107 | resources: 108 | - ingresses 109 | verbs: 110 | - get 111 | - list 112 | - watch 113 | - create 114 | - delete 115 | serviceAccountName: skupper-site-controller 116 | permissions: 117 | - rules: 118 | - apiGroups: 119 | - apps 120 | resources: 121 | - deployments 122 | - statefulsets 123 | - daemonsets 124 | verbs: 125 | - get 126 | - list 127 | - watch 128 | - create 129 | - update 130 | - patch 131 | - delete 132 | - apiGroups: 133 | - route.openshift.io 134 | resources: 135 | - routes 136 | verbs: 137 | - get 138 | - list 139 | - watch 140 | - create 141 | - update 142 | - patch 143 | - delete 144 | - apiGroups: 145 | - "" 146 | resources: 147 | - pods 148 | - pods/exec 149 | - secrets 150 | - configmaps 151 | - serviceaccounts 152 | - services 153 | verbs: 154 | - get 155 | - list 156 | - watch 157 | - create 158 | - update 159 | - patch 160 | - delete 161 | - apiGroups: 162 | - rbac.authorization.k8s.io 163 | resources: 164 | - rolebindings 165 | - roles 166 | verbs: 167 | - get 168 | - list 169 | - watch 170 | - create 171 | - delete 172 | - apiGroups: 173 | - networking.k8s.io 174 | resources: 175 | - ingresses 176 | verbs: 177 | - get 178 | - list 179 | - watch 180 | - create 181 | - delete 182 | serviceAccountName: skupper-site-controller 183 | deployments: 184 | - name: skupper-site-controller 185 | spec: 186 | replicas: 1 187 | selector: 188 | matchLabels: 189 | control-plane: controller-manager 190 | strategy: {} 191 | template: 192 | metadata: 193 | labels: 194 | control-plane: controller-manager 195 | spec: 196 | containers: 197 | - command: 198 | - /app/site-controller 199 | image: quay.io/skupper/site-controller@sha256:7ee275cc2abe93bd5c00d4c64998da3c5a369cf27507dc00ef44552b97c68989 200 | name: manager 201 | securityContext: 202 | allowPrivilegeEscalation: false 203 | env: 204 | - name: WATCH_NAMESPACE 205 | valueFrom: 206 | fieldRef: 207 | fieldPath: metadata.annotations['olm.targetNamespaces'] 208 | - name: QDROUTERD_IMAGE 209 | value: quay.io/interconnectedcloud/qdrouterd@sha256:6a7842f6a050e644c7f038913768a27b8fa32b5be4bb40ee23202171176b6326 210 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 211 | value: quay.io/skupper/service-controller@sha256:75efacda35efabde848a450d927609caedf69db5b4c78121f0b9439695f67712 212 | securityContext: 213 | runAsNonRoot: false 214 | serviceAccountName: skupper-site-controller 215 | terminationGracePeriodSeconds: 10 216 | strategy: deployment 217 | installModes: 218 | - supported: true 219 | type: OwnNamespace 220 | - supported: false 221 | type: SingleNamespace 222 | - supported: false 223 | type: MultiNamespace 224 | - supported: true 225 | type: AllNamespaces 226 | keywords: 227 | - skupper 228 | - service 229 | - mesh 230 | - van 231 | links: 232 | - name: Skupper Operator 233 | url: https://github.com/skupperproject/skupper-operator 234 | maintainers: 235 | - email: skupper@googlegroups.com 236 | name: Skupper Community 237 | maturity: alpha 238 | provider: 239 | name: Skupper Project 240 | url: https://skupper.io 241 | version: 0.7.0 242 | -------------------------------------------------------------------------------- /bundle/manifests/0.8.0/skupper-operator.v0.8.0.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | certified: "false" 7 | categories: "Integration & Delivery, Networking, Streaming & Messaging" 8 | description: Skupper Operator provides the ability to create a service network 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v0.8.0 10 | createdAt: 2021-04-14T08:00:00Z 11 | capabilities: Seamless Upgrades 12 | repository: https://github.com/skupperproject/skupper-operator 13 | support: Skupper Project 14 | 15 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 16 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 17 | labels: 18 | operatorframework.io/os.linux: supported 19 | operatorframework.io/arch.amd64: supported 20 | name: skupper-operator.v0.8.0 21 | namespace: placeholder 22 | spec: 23 | replaces: skupper-operator.v0.7.0 24 | apiservicedefinitions: {} 25 | description: | 26 | Skupper enables communication between services running in different network locations. 27 | It allows geographically distributed services to connect as if they were all running in the same site. 28 | 29 | Each site is a namespace with a running Skupper instance. 30 | 31 | The Skupper operator allows you create and manage sites. 32 | The operator processes any ConfigMap named skupper-site and configures the site for the service network accordingly. 33 | 34 | To get started, create the following ConfigMap in the desired namespace, the 35 | Skupper operator will create the Skupper instance and configure the site. 36 | 37 | apiVersion: v1 38 | kind: ConfigMap 39 | metadata: 40 | name: skupper-site 41 | 42 | The operator can be installed to a single namespace or at cluster level, watching for the skupper-site ConfigMap in all namespaces. 43 | displayName: Skupper 44 | icon: 45 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 46 | mediatype: image/svg+xml 47 | install: 48 | spec: 49 | clusterPermissions: 50 | - rules: 51 | - apiGroups: 52 | - apps 53 | resources: 54 | - deployments 55 | - statefulsets 56 | - daemonsets 57 | verbs: 58 | - get 59 | - list 60 | - watch 61 | - create 62 | - update 63 | - patch 64 | - delete 65 | - apiGroups: 66 | - route.openshift.io 67 | resources: 68 | - routes 69 | verbs: 70 | - get 71 | - list 72 | - watch 73 | - create 74 | - update 75 | - patch 76 | - delete 77 | - apiGroups: 78 | - "" 79 | resources: 80 | - pods 81 | - pods/exec 82 | - secrets 83 | - configmaps 84 | - serviceaccounts 85 | - services 86 | verbs: 87 | - get 88 | - list 89 | - watch 90 | - create 91 | - update 92 | - patch 93 | - delete 94 | - apiGroups: 95 | - rbac.authorization.k8s.io 96 | resources: 97 | - rolebindings 98 | - roles 99 | verbs: 100 | - get 101 | - list 102 | - watch 103 | - create 104 | - delete 105 | - apiGroups: 106 | - networking.k8s.io 107 | resources: 108 | - ingresses 109 | verbs: 110 | - get 111 | - list 112 | - watch 113 | - create 114 | - delete 115 | serviceAccountName: skupper-site-controller 116 | permissions: 117 | - rules: 118 | - apiGroups: 119 | - apps 120 | resources: 121 | - deployments 122 | - statefulsets 123 | - daemonsets 124 | verbs: 125 | - get 126 | - list 127 | - watch 128 | - create 129 | - update 130 | - patch 131 | - delete 132 | - apiGroups: 133 | - route.openshift.io 134 | resources: 135 | - routes 136 | verbs: 137 | - get 138 | - list 139 | - watch 140 | - create 141 | - update 142 | - patch 143 | - delete 144 | - apiGroups: 145 | - "" 146 | resources: 147 | - pods 148 | - pods/exec 149 | - secrets 150 | - configmaps 151 | - serviceaccounts 152 | - services 153 | verbs: 154 | - get 155 | - list 156 | - watch 157 | - create 158 | - update 159 | - patch 160 | - delete 161 | - apiGroups: 162 | - rbac.authorization.k8s.io 163 | resources: 164 | - rolebindings 165 | - roles 166 | verbs: 167 | - get 168 | - list 169 | - watch 170 | - create 171 | - delete 172 | - apiGroups: 173 | - networking.k8s.io 174 | resources: 175 | - ingresses 176 | verbs: 177 | - get 178 | - list 179 | - watch 180 | - create 181 | - delete 182 | serviceAccountName: skupper-site-controller 183 | deployments: 184 | - name: skupper-site-controller 185 | spec: 186 | replicas: 1 187 | selector: 188 | matchLabels: 189 | control-plane: controller-manager 190 | strategy: {} 191 | template: 192 | metadata: 193 | labels: 194 | control-plane: controller-manager 195 | spec: 196 | containers: 197 | - command: 198 | - /app/site-controller 199 | image: quay.io/skupper/site-controller@sha256:e7766f13892892bab3bdba4ef2669b5adcb4cf890223733b9f76dd819099d388 200 | name: manager 201 | securityContext: 202 | allowPrivilegeEscalation: false 203 | env: 204 | - name: WATCH_NAMESPACE 205 | valueFrom: 206 | fieldRef: 207 | fieldPath: metadata.annotations['olm.targetNamespaces'] 208 | - name: QDROUTERD_IMAGE 209 | value: quay.io/interconnectedcloud/qdrouterd@sha256:afebc7d149884b8f98db640134adc332dc6bd436b5045d7c16859bbdfeb37794 210 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 211 | value: quay.io/skupper/service-controller@sha256:fbc6755bb9b7b4b3462b5c7d5dfa3a889ca707d2739f69611f3973998d8470f2 212 | securityContext: 213 | runAsNonRoot: false 214 | serviceAccountName: skupper-site-controller 215 | terminationGracePeriodSeconds: 10 216 | strategy: deployment 217 | installModes: 218 | - supported: true 219 | type: OwnNamespace 220 | - supported: false 221 | type: SingleNamespace 222 | - supported: false 223 | type: MultiNamespace 224 | - supported: true 225 | type: AllNamespaces 226 | keywords: 227 | - skupper 228 | - service 229 | - mesh 230 | - van 231 | links: 232 | - name: Skupper Operator 233 | url: https://github.com/skupperproject/skupper-operator 234 | maintainers: 235 | - email: skupper@googlegroups.com 236 | name: Skupper Community 237 | maturity: alpha 238 | provider: 239 | name: Skupper Project 240 | url: https://skupper.io 241 | version: 0.8.0 242 | -------------------------------------------------------------------------------- /bundle/manifests/0.8.1/skupper-operator.v0.8.1.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | certified: "false" 7 | categories: "Integration & Delivery, Networking, Streaming & Messaging" 8 | description: Skupper Operator provides the ability to create a service network 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v0.8.1 10 | createdAt: 2021-04-14T08:00:00Z 11 | capabilities: Seamless Upgrades 12 | repository: https://github.com/skupperproject/skupper-operator 13 | support: Skupper Project 14 | 15 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 16 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 17 | labels: 18 | operatorframework.io/os.linux: supported 19 | operatorframework.io/arch.amd64: supported 20 | name: skupper-operator.v0.8.1 21 | namespace: placeholder 22 | spec: 23 | replaces: skupper-operator.v0.8.0 24 | apiservicedefinitions: {} 25 | description: | 26 | Skupper enables communication between services running in different network locations. 27 | It allows geographically distributed services to connect as if they were all running in the same site. 28 | 29 | Each site is a namespace with a running Skupper instance. 30 | 31 | The Skupper operator allows you create and manage sites. 32 | The operator processes any ConfigMap named skupper-site and configures the site for the service network accordingly. 33 | 34 | To get started, create the following ConfigMap in the desired namespace, the 35 | Skupper operator will create the Skupper instance and configure the site. 36 | 37 | apiVersion: v1 38 | kind: ConfigMap 39 | metadata: 40 | name: skupper-site 41 | 42 | The operator can be installed to a single namespace or at cluster level, watching for the skupper-site ConfigMap in all namespaces. 43 | displayName: Skupper 44 | icon: 45 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 46 | mediatype: image/svg+xml 47 | install: 48 | spec: 49 | clusterPermissions: 50 | - rules: 51 | - apiGroups: 52 | - apps 53 | resources: 54 | - deployments 55 | - statefulsets 56 | - daemonsets 57 | verbs: 58 | - get 59 | - list 60 | - watch 61 | - create 62 | - update 63 | - patch 64 | - delete 65 | - apiGroups: 66 | - route.openshift.io 67 | resources: 68 | - routes 69 | verbs: 70 | - get 71 | - list 72 | - watch 73 | - create 74 | - update 75 | - patch 76 | - delete 77 | - apiGroups: 78 | - "" 79 | resources: 80 | - pods 81 | - pods/exec 82 | - secrets 83 | - configmaps 84 | - serviceaccounts 85 | - services 86 | verbs: 87 | - get 88 | - list 89 | - watch 90 | - create 91 | - update 92 | - patch 93 | - delete 94 | - apiGroups: 95 | - rbac.authorization.k8s.io 96 | resources: 97 | - rolebindings 98 | - roles 99 | verbs: 100 | - get 101 | - list 102 | - watch 103 | - create 104 | - delete 105 | - apiGroups: 106 | - networking.k8s.io 107 | resources: 108 | - ingresses 109 | verbs: 110 | - get 111 | - list 112 | - watch 113 | - create 114 | - delete 115 | serviceAccountName: skupper-site-controller 116 | permissions: 117 | - rules: 118 | - apiGroups: 119 | - apps 120 | resources: 121 | - deployments 122 | - statefulsets 123 | - daemonsets 124 | verbs: 125 | - get 126 | - list 127 | - watch 128 | - create 129 | - update 130 | - patch 131 | - delete 132 | - apiGroups: 133 | - route.openshift.io 134 | resources: 135 | - routes 136 | verbs: 137 | - get 138 | - list 139 | - watch 140 | - create 141 | - update 142 | - patch 143 | - delete 144 | - apiGroups: 145 | - "" 146 | resources: 147 | - pods 148 | - pods/exec 149 | - secrets 150 | - configmaps 151 | - serviceaccounts 152 | - services 153 | verbs: 154 | - get 155 | - list 156 | - watch 157 | - create 158 | - update 159 | - patch 160 | - delete 161 | - apiGroups: 162 | - rbac.authorization.k8s.io 163 | resources: 164 | - rolebindings 165 | - roles 166 | verbs: 167 | - get 168 | - list 169 | - watch 170 | - create 171 | - delete 172 | - apiGroups: 173 | - networking.k8s.io 174 | resources: 175 | - ingresses 176 | verbs: 177 | - get 178 | - list 179 | - watch 180 | - create 181 | - delete 182 | serviceAccountName: skupper-site-controller 183 | deployments: 184 | - name: skupper-site-controller 185 | spec: 186 | replicas: 1 187 | selector: 188 | matchLabels: 189 | control-plane: controller-manager 190 | strategy: {} 191 | template: 192 | metadata: 193 | labels: 194 | control-plane: controller-manager 195 | spec: 196 | containers: 197 | - command: 198 | - /app/site-controller 199 | image: quay.io/skupper/site-controller@sha256:135658b130362d3e4ac8a42dfc486b349efbebe99c6dcca51ab7ba8173585e71 200 | name: manager 201 | securityContext: 202 | allowPrivilegeEscalation: false 203 | env: 204 | - name: WATCH_NAMESPACE 205 | valueFrom: 206 | fieldRef: 207 | fieldPath: metadata.annotations['olm.targetNamespaces'] 208 | - name: QDROUTERD_IMAGE 209 | value: quay.io/interconnectedcloud/qdrouterd@sha256:4e10fb0db48c87cf60fcc10f73ba86537c0aaf58ef1035220a4ed72fe86eac28 210 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 211 | value: quay.io/skupper/service-controller@sha256:3ec42f9a83d1ec7c609b1e5a57e2e0ece5085e488068c3fe2f5a41a6652f524c 212 | securityContext: 213 | runAsNonRoot: false 214 | serviceAccountName: skupper-site-controller 215 | terminationGracePeriodSeconds: 10 216 | strategy: deployment 217 | installModes: 218 | - supported: true 219 | type: OwnNamespace 220 | - supported: false 221 | type: SingleNamespace 222 | - supported: false 223 | type: MultiNamespace 224 | - supported: true 225 | type: AllNamespaces 226 | keywords: 227 | - skupper 228 | - service 229 | - mesh 230 | - van 231 | links: 232 | - name: Skupper Operator 233 | url: https://github.com/skupperproject/skupper-operator 234 | maintainers: 235 | - email: skupper@googlegroups.com 236 | name: Skupper Community 237 | maturity: alpha 238 | provider: 239 | name: Skupper Project 240 | url: https://skupper.io 241 | version: 0.8.1 242 | -------------------------------------------------------------------------------- /bundle/manifests/0.8.7/skupper-operator.v0.8.7.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | certified: "false" 7 | categories: "Integration & Delivery, Networking, Streaming & Messaging" 8 | description: Skupper Operator provides the ability to create a service network 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v0.8.7 10 | createdAt: 2021-04-14T08:00:00Z 11 | capabilities: Seamless Upgrades 12 | repository: https://github.com/skupperproject/skupper-operator 13 | support: Skupper Project 14 | 15 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 16 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 17 | labels: 18 | operatorframework.io/os.linux: supported 19 | operatorframework.io/arch.amd64: supported 20 | name: skupper-operator.v0.8.7 21 | namespace: placeholder 22 | spec: 23 | replaces: skupper-operator.v0.8.1 24 | apiservicedefinitions: {} 25 | description: | 26 | Skupper enables communication between services running in different network locations. 27 | It allows geographically distributed services to connect as if they were all running in the same site. 28 | 29 | Each site is a namespace with a running Skupper instance. 30 | 31 | The Skupper operator allows you create and manage sites. 32 | The operator processes any ConfigMap named skupper-site and configures the site for the service network accordingly. 33 | 34 | To get started, create the following ConfigMap in the desired namespace, the 35 | Skupper operator will create the Skupper instance and configure the site. 36 | 37 | apiVersion: v1 38 | kind: ConfigMap 39 | metadata: 40 | name: skupper-site 41 | 42 | The operator can be installed to a single namespace or at cluster level, watching for the skupper-site ConfigMap in all namespaces. 43 | displayName: Skupper 44 | icon: 45 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 46 | mediatype: image/svg+xml 47 | install: 48 | spec: 49 | clusterPermissions: 50 | - rules: 51 | - apiGroups: 52 | - apps 53 | resources: 54 | - deployments 55 | - statefulsets 56 | - daemonsets 57 | verbs: 58 | - get 59 | - list 60 | - watch 61 | - create 62 | - update 63 | - patch 64 | - delete 65 | - apiGroups: 66 | - route.openshift.io 67 | resources: 68 | - routes 69 | verbs: 70 | - get 71 | - list 72 | - watch 73 | - create 74 | - update 75 | - patch 76 | - delete 77 | - apiGroups: 78 | - "" 79 | resources: 80 | - pods 81 | - pods/exec 82 | - secrets 83 | - configmaps 84 | - serviceaccounts 85 | - services 86 | verbs: 87 | - get 88 | - list 89 | - watch 90 | - create 91 | - update 92 | - patch 93 | - delete 94 | - apiGroups: 95 | - rbac.authorization.k8s.io 96 | resources: 97 | - rolebindings 98 | - roles 99 | verbs: 100 | - get 101 | - list 102 | - watch 103 | - create 104 | - delete 105 | - apiGroups: 106 | - networking.k8s.io 107 | resources: 108 | - ingresses 109 | verbs: 110 | - get 111 | - list 112 | - watch 113 | - create 114 | - delete 115 | serviceAccountName: skupper-site-controller 116 | permissions: 117 | - rules: 118 | - apiGroups: 119 | - apps 120 | resources: 121 | - deployments 122 | - statefulsets 123 | - daemonsets 124 | verbs: 125 | - get 126 | - list 127 | - watch 128 | - create 129 | - update 130 | - patch 131 | - delete 132 | - apiGroups: 133 | - route.openshift.io 134 | resources: 135 | - routes 136 | verbs: 137 | - get 138 | - list 139 | - watch 140 | - create 141 | - update 142 | - patch 143 | - delete 144 | - apiGroups: 145 | - "" 146 | resources: 147 | - pods 148 | - pods/exec 149 | - secrets 150 | - configmaps 151 | - serviceaccounts 152 | - services 153 | verbs: 154 | - get 155 | - list 156 | - watch 157 | - create 158 | - update 159 | - patch 160 | - delete 161 | - apiGroups: 162 | - rbac.authorization.k8s.io 163 | resources: 164 | - rolebindings 165 | - roles 166 | verbs: 167 | - get 168 | - list 169 | - watch 170 | - create 171 | - delete 172 | - apiGroups: 173 | - networking.k8s.io 174 | resources: 175 | - ingresses 176 | verbs: 177 | - get 178 | - list 179 | - watch 180 | - create 181 | - delete 182 | serviceAccountName: skupper-site-controller 183 | deployments: 184 | - name: skupper-site-controller 185 | spec: 186 | replicas: 1 187 | selector: 188 | matchLabels: 189 | control-plane: controller-manager 190 | strategy: {} 191 | template: 192 | metadata: 193 | labels: 194 | control-plane: controller-manager 195 | spec: 196 | containers: 197 | - command: 198 | - /app/site-controller 199 | image: quay.io/skupper/site-controller@sha256:e3bbf1beade924490ebd5ae24e04cf43770fd7ca75256a7736bb570d76daf6e7 200 | name: manager 201 | securityContext: 202 | allowPrivilegeEscalation: false 203 | env: 204 | - name: WATCH_NAMESPACE 205 | valueFrom: 206 | fieldRef: 207 | fieldPath: metadata.annotations['olm.targetNamespaces'] 208 | - name: QDROUTERD_IMAGE 209 | value: quay.io/interconnectedcloud/qdrouterd@sha256:4e10fb0db48c87cf60fcc10f73ba86537c0aaf58ef1035220a4ed72fe86eac28 210 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 211 | value: quay.io/skupper/service-controller@sha256:b58c38e4eed02fad06256b33f0c23d9eb39f950a236e770dbe5bccff738fcbab 212 | securityContext: 213 | runAsNonRoot: false 214 | serviceAccountName: skupper-site-controller 215 | terminationGracePeriodSeconds: 10 216 | strategy: deployment 217 | installModes: 218 | - supported: true 219 | type: OwnNamespace 220 | - supported: false 221 | type: SingleNamespace 222 | - supported: false 223 | type: MultiNamespace 224 | - supported: true 225 | type: AllNamespaces 226 | keywords: 227 | - skupper 228 | - service 229 | - mesh 230 | - van 231 | links: 232 | - name: Skupper Operator 233 | url: https://github.com/skupperproject/skupper-operator 234 | maintainers: 235 | - email: skupper@googlegroups.com 236 | name: Skupper Community 237 | maturity: alpha 238 | provider: 239 | name: Skupper Project 240 | url: https://skupper.io 241 | version: 0.8.7 242 | -------------------------------------------------------------------------------- /bundle/manifests/1.1.1/skupper-operator.v1.1.1.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | certified: "false" 7 | categories: "Integration & Delivery, Networking, Streaming & Messaging" 8 | description: Skupper Operator provides the ability to create a service network 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v1.1.1 10 | createdAt: 2021-04-14T08:00:00Z 11 | capabilities: Seamless Upgrades 12 | repository: https://github.com/skupperproject/skupper-operator 13 | support: Skupper Project 14 | 15 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 16 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 17 | labels: 18 | operatorframework.io/os.linux: supported 19 | operatorframework.io/arch.amd64: supported 20 | name: skupper-operator.v1.1.1 21 | namespace: placeholder 22 | spec: 23 | replaces: skupper-operator.v1.0.0 24 | apiservicedefinitions: {} 25 | description: | 26 | Skupper enables communication between services running in different network locations. 27 | It allows geographically distributed services to connect as if they were all running in the same site. 28 | 29 | Each site is a namespace with a running Skupper instance. 30 | 31 | The Skupper operator allows you create and manage sites. 32 | The operator processes any ConfigMap named skupper-site and configures the site for the service network accordingly. 33 | 34 | To get started, create the following ConfigMap in the desired namespace, the 35 | Skupper operator will create the Skupper instance and configure the site. 36 | 37 | apiVersion: v1 38 | kind: ConfigMap 39 | metadata: 40 | name: skupper-site 41 | 42 | The operator can be installed to a single namespace or at cluster level, watching for the skupper-site ConfigMap in all namespaces. 43 | displayName: Skupper 44 | icon: 45 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 46 | mediatype: image/svg+xml 47 | install: 48 | spec: 49 | clusterPermissions: 50 | - rules: 51 | - apiGroups: 52 | - apps 53 | resources: 54 | - deployments 55 | - statefulsets 56 | - daemonsets 57 | verbs: 58 | - get 59 | - list 60 | - watch 61 | - create 62 | - update 63 | - patch 64 | - delete 65 | - apiGroups: 66 | - route.openshift.io 67 | resources: 68 | - routes 69 | verbs: 70 | - get 71 | - list 72 | - watch 73 | - create 74 | - update 75 | - patch 76 | - delete 77 | - apiGroups: 78 | - "" 79 | resources: 80 | - pods 81 | - pods/exec 82 | - secrets 83 | - configmaps 84 | - serviceaccounts 85 | - services 86 | verbs: 87 | - get 88 | - list 89 | - watch 90 | - create 91 | - update 92 | - patch 93 | - delete 94 | - apiGroups: 95 | - rbac.authorization.k8s.io 96 | resources: 97 | - rolebindings 98 | - roles 99 | verbs: 100 | - get 101 | - list 102 | - watch 103 | - create 104 | - delete 105 | - update 106 | - apiGroups: 107 | - networking.k8s.io 108 | resources: 109 | - ingresses 110 | - networkpolicies 111 | verbs: 112 | - get 113 | - list 114 | - watch 115 | - create 116 | - delete 117 | - apiGroups: 118 | - projectcontour.io 119 | resources: 120 | - httpproxies 121 | verbs: 122 | - get 123 | - list 124 | - watch 125 | - create 126 | - delete 127 | - apiGroups: 128 | - rbac.authorization.k8s.io 129 | resources: 130 | - clusterrolebindings 131 | verbs: 132 | - create 133 | - apiGroups: 134 | - rbac.authorization.k8s.io 135 | resources: 136 | - clusterroles 137 | verbs: 138 | - bind 139 | resourceNames: 140 | - skupper-service-controller 141 | serviceAccountName: skupper-site-controller 142 | permissions: 143 | - rules: 144 | - apiGroups: 145 | - apps 146 | resources: 147 | - deployments 148 | - statefulsets 149 | - daemonsets 150 | verbs: 151 | - get 152 | - list 153 | - watch 154 | - create 155 | - update 156 | - patch 157 | - delete 158 | - apiGroups: 159 | - route.openshift.io 160 | resources: 161 | - routes 162 | verbs: 163 | - get 164 | - list 165 | - watch 166 | - create 167 | - update 168 | - patch 169 | - delete 170 | - apiGroups: 171 | - "" 172 | resources: 173 | - pods 174 | - pods/exec 175 | - secrets 176 | - configmaps 177 | - serviceaccounts 178 | - services 179 | verbs: 180 | - get 181 | - list 182 | - watch 183 | - create 184 | - update 185 | - patch 186 | - delete 187 | - apiGroups: 188 | - rbac.authorization.k8s.io 189 | resources: 190 | - rolebindings 191 | - roles 192 | verbs: 193 | - get 194 | - list 195 | - watch 196 | - create 197 | - delete 198 | - apiGroups: 199 | - networking.k8s.io 200 | resources: 201 | - ingresses 202 | - networkpolicies 203 | verbs: 204 | - get 205 | - list 206 | - watch 207 | - create 208 | - delete 209 | - apiGroups: 210 | - projectcontour.io 211 | resources: 212 | - httpproxies 213 | verbs: 214 | - get 215 | - list 216 | - watch 217 | - create 218 | - delete 219 | serviceAccountName: skupper-site-controller 220 | deployments: 221 | - name: skupper-site-controller 222 | spec: 223 | replicas: 1 224 | selector: 225 | matchLabels: 226 | control-plane: controller-manager 227 | strategy: {} 228 | template: 229 | metadata: 230 | labels: 231 | control-plane: controller-manager 232 | spec: 233 | containers: 234 | - command: 235 | - /app/site-controller 236 | image: quay.io/skupper/site-controller@sha256:69a0de2e36b23661fff1a490a54113355e531d80ffc9dff6d01252a406d6e302 237 | name: manager 238 | securityContext: 239 | allowPrivilegeEscalation: false 240 | env: 241 | - name: WATCH_NAMESPACE 242 | valueFrom: 243 | fieldRef: 244 | fieldPath: metadata.annotations['olm.targetNamespaces'] 245 | - name: QDROUTERD_IMAGE 246 | value: quay.io/skupper/skupper-router@sha256:51badf7198b11590025b8d64ee1d2ac95523feb6c1525a3fd5a339ef14013325 247 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 248 | value: quay.io/skupper/service-controller@sha256:f984aa2a058954fb7c68ae2e64a426a915facc0b682ec24f412582b8f377e00c 249 | securityContext: 250 | runAsNonRoot: false 251 | serviceAccountName: skupper-site-controller 252 | terminationGracePeriodSeconds: 10 253 | strategy: deployment 254 | installModes: 255 | - supported: true 256 | type: OwnNamespace 257 | - supported: false 258 | type: SingleNamespace 259 | - supported: false 260 | type: MultiNamespace 261 | - supported: true 262 | type: AllNamespaces 263 | keywords: 264 | - skupper 265 | - service 266 | - mesh 267 | - van 268 | links: 269 | - name: Skupper Operator 270 | url: https://github.com/skupperproject/skupper-operator 271 | maintainers: 272 | - email: skupper@googlegroups.com 273 | name: Skupper Community 274 | maturity: alpha 275 | provider: 276 | name: Skupper Project 277 | url: https://skupper.io 278 | version: 1.1.1 279 | -------------------------------------------------------------------------------- /bundle/manifests/1.3.0/skupper-operator.v1.3.0.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | certified: "false" 7 | categories: "Integration & Delivery, Networking, Streaming & Messaging" 8 | description: Skupper Operator provides the ability to create a service network 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v1.3.0 10 | createdAt: 2021-04-14T08:00:00Z 11 | capabilities: Seamless Upgrades 12 | repository: https://github.com/skupperproject/skupper-operator 13 | support: Skupper Project 14 | 15 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 16 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 17 | labels: 18 | operatorframework.io/os.linux: supported 19 | operatorframework.io/arch.amd64: supported 20 | name: skupper-operator.v1.3.0 21 | namespace: placeholder 22 | spec: 23 | replaces: skupper-operator.v1.1.1 24 | apiservicedefinitions: {} 25 | description: | 26 | Skupper enables communication between services running in different network locations. 27 | It allows geographically distributed services to connect as if they were all running in the same site. 28 | 29 | Each site is a namespace with a running Skupper instance. 30 | 31 | The Skupper operator allows you create and manage sites. 32 | The operator processes any ConfigMap named skupper-site and configures the site for the service network accordingly. 33 | 34 | To get started, create the following ConfigMap in the desired namespace, the 35 | Skupper operator will create the Skupper instance and configure the site. 36 | 37 | apiVersion: v1 38 | kind: ConfigMap 39 | metadata: 40 | name: skupper-site 41 | 42 | The operator can be installed to a single namespace or at cluster level, watching for the skupper-site ConfigMap in all namespaces. 43 | displayName: Skupper 44 | icon: 45 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 46 | mediatype: image/svg+xml 47 | install: 48 | spec: 49 | clusterPermissions: 50 | - rules: 51 | - apiGroups: 52 | - apps 53 | resources: 54 | - deployments 55 | - statefulsets 56 | - daemonsets 57 | verbs: 58 | - get 59 | - list 60 | - watch 61 | - create 62 | - update 63 | - patch 64 | - delete 65 | - apiGroups: 66 | - route.openshift.io 67 | resources: 68 | - routes 69 | verbs: 70 | - get 71 | - list 72 | - watch 73 | - create 74 | - update 75 | - patch 76 | - delete 77 | - apiGroups: 78 | - apps.openshift.io 79 | resources: 80 | - deploymentconfigs 81 | verbs: 82 | - get 83 | - list 84 | - watch 85 | - apiGroups: 86 | - "" 87 | resources: 88 | - pods 89 | - pods/exec 90 | - secrets 91 | - configmaps 92 | - serviceaccounts 93 | - services 94 | verbs: 95 | - get 96 | - list 97 | - watch 98 | - create 99 | - update 100 | - patch 101 | - delete 102 | - apiGroups: 103 | - rbac.authorization.k8s.io 104 | resources: 105 | - rolebindings 106 | - roles 107 | verbs: 108 | - get 109 | - list 110 | - watch 111 | - create 112 | - delete 113 | - update 114 | - apiGroups: 115 | - networking.k8s.io 116 | resources: 117 | - ingresses 118 | - networkpolicies 119 | verbs: 120 | - get 121 | - list 122 | - watch 123 | - create 124 | - delete 125 | - apiGroups: 126 | - projectcontour.io 127 | resources: 128 | - httpproxies 129 | verbs: 130 | - get 131 | - list 132 | - watch 133 | - create 134 | - delete 135 | - apiGroups: 136 | - rbac.authorization.k8s.io 137 | resources: 138 | - clusterrolebindings 139 | verbs: 140 | - create 141 | - apiGroups: 142 | - rbac.authorization.k8s.io 143 | resources: 144 | - clusterroles 145 | verbs: 146 | - bind 147 | resourceNames: 148 | - skupper-service-controller 149 | serviceAccountName: skupper-site-controller 150 | permissions: 151 | - rules: 152 | - apiGroups: 153 | - apps 154 | resources: 155 | - deployments 156 | - statefulsets 157 | - daemonsets 158 | verbs: 159 | - get 160 | - list 161 | - watch 162 | - create 163 | - update 164 | - patch 165 | - delete 166 | - apiGroups: 167 | - route.openshift.io 168 | resources: 169 | - routes 170 | verbs: 171 | - get 172 | - list 173 | - watch 174 | - create 175 | - update 176 | - patch 177 | - delete 178 | - apiGroups: 179 | - apps.openshift.io 180 | resources: 181 | - deploymentconfigs 182 | verbs: 183 | - get 184 | - list 185 | - watch 186 | - apiGroups: 187 | - "" 188 | resources: 189 | - pods 190 | - pods/exec 191 | - secrets 192 | - configmaps 193 | - serviceaccounts 194 | - services 195 | verbs: 196 | - get 197 | - list 198 | - watch 199 | - create 200 | - update 201 | - patch 202 | - delete 203 | - apiGroups: 204 | - rbac.authorization.k8s.io 205 | resources: 206 | - rolebindings 207 | - roles 208 | verbs: 209 | - get 210 | - list 211 | - watch 212 | - create 213 | - delete 214 | - apiGroups: 215 | - networking.k8s.io 216 | resources: 217 | - ingresses 218 | - networkpolicies 219 | verbs: 220 | - get 221 | - list 222 | - watch 223 | - create 224 | - delete 225 | - apiGroups: 226 | - projectcontour.io 227 | resources: 228 | - httpproxies 229 | verbs: 230 | - get 231 | - list 232 | - watch 233 | - create 234 | - delete 235 | serviceAccountName: skupper-site-controller 236 | deployments: 237 | - name: skupper-site-controller 238 | spec: 239 | replicas: 1 240 | selector: 241 | matchLabels: 242 | control-plane: controller-manager 243 | strategy: {} 244 | template: 245 | metadata: 246 | labels: 247 | control-plane: controller-manager 248 | spec: 249 | containers: 250 | - command: 251 | - /app/site-controller 252 | image: quay.io/skupper/site-controller@sha256:61b0cf89ad719ce20ba04f1dc32a9391de3998a98202564648eaca760f586136 253 | name: manager 254 | securityContext: 255 | allowPrivilegeEscalation: false 256 | env: 257 | - name: WATCH_NAMESPACE 258 | valueFrom: 259 | fieldRef: 260 | fieldPath: metadata.annotations['olm.targetNamespaces'] 261 | - name: QDROUTERD_IMAGE 262 | value: quay.io/skupper/skupper-router@sha256:191b37feda158331d575551049ea694bfc80284bcf8c05c4730f2642c6bbec7d 263 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 264 | value: quay.io/skupper/service-controller@sha256:0dbb8e4ad3e6243c406cabc8021b22510ca7247b0a9d4e8abf29f604c8d5bc84 265 | securityContext: 266 | runAsNonRoot: true 267 | serviceAccountName: skupper-site-controller 268 | terminationGracePeriodSeconds: 10 269 | strategy: deployment 270 | installModes: 271 | - supported: true 272 | type: OwnNamespace 273 | - supported: false 274 | type: SingleNamespace 275 | - supported: false 276 | type: MultiNamespace 277 | - supported: true 278 | type: AllNamespaces 279 | keywords: 280 | - skupper 281 | - service 282 | - mesh 283 | - van 284 | links: 285 | - name: Skupper Operator 286 | url: https://github.com/skupperproject/skupper-operator 287 | maintainers: 288 | - email: skupper@googlegroups.com 289 | name: Skupper Community 290 | maturity: alpha 291 | provider: 292 | name: Skupper Project 293 | url: https://skupper.io 294 | version: 1.3.0 295 | -------------------------------------------------------------------------------- /bundle/manifests/1.4.0-rc2/skupper-operator.v1.4.0-rc2.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | capabilities: Seamless Upgrades 7 | categories: Integration & Delivery, Networking, Streaming & Messaging 8 | certified: 'false' 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v1.4.0-rc2 10 | createdAt: '2023-05-25T14:05:29Z' 11 | description: Skupper Operator provides the ability to create a service network 12 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 13 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 14 | repository: https://github.com/skupperproject/skupper-operator 15 | support: Skupper Project 16 | labels: 17 | operatorframework.io/arch.amd64: supported 18 | operatorframework.io/os.linux: supported 19 | name: skupper-operator.v1.4.0-rc2 20 | namespace: placeholder 21 | spec: 22 | apiservicedefinitions: {} 23 | description: | 24 | Skupper enables communication between services running in different network locations. 25 | It allows geographically distributed services to connect as if they were all running in the same site. 26 | 27 | Each site is a namespace with a running Skupper instance. 28 | 29 | The Skupper operator allows you create and manage sites. 30 | The operator processes any ConfigMap named skupper-site and configures the site for the service network accordingly. 31 | 32 | To get started, create the following ConfigMap in the desired namespace, the 33 | Skupper operator will create the Skupper instance and configure the site. 34 | 35 | apiVersion: v1 36 | kind: ConfigMap 37 | metadata: 38 | name: skupper-site 39 | 40 | The operator can be installed to a single namespace or at cluster level, watching for the skupper-site ConfigMap in all namespaces. 41 | displayName: Skupper 42 | icon: 43 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 44 | mediatype: image/svg+xml 45 | install: 46 | spec: 47 | clusterPermissions: 48 | - rules: 49 | - apiGroups: 50 | - apps 51 | resources: 52 | - deployments 53 | - statefulsets 54 | - daemonsets 55 | verbs: 56 | - get 57 | - list 58 | - watch 59 | - create 60 | - update 61 | - patch 62 | - delete 63 | - apiGroups: 64 | - route.openshift.io 65 | resources: 66 | - routes 67 | verbs: 68 | - get 69 | - list 70 | - watch 71 | - create 72 | - update 73 | - patch 74 | - delete 75 | - apiGroups: 76 | - apps.openshift.io 77 | resources: 78 | - deploymentconfigs 79 | verbs: 80 | - get 81 | - list 82 | - watch 83 | - apiGroups: 84 | - '' 85 | resources: 86 | - pods 87 | - pods/exec 88 | - secrets 89 | - configmaps 90 | - serviceaccounts 91 | - services 92 | verbs: 93 | - get 94 | - list 95 | - watch 96 | - create 97 | - update 98 | - patch 99 | - delete 100 | - apiGroups: 101 | - rbac.authorization.k8s.io 102 | resources: 103 | - rolebindings 104 | - roles 105 | verbs: 106 | - get 107 | - list 108 | - watch 109 | - create 110 | - delete 111 | - update 112 | - apiGroups: 113 | - networking.k8s.io 114 | resources: 115 | - ingresses 116 | - networkpolicies 117 | verbs: 118 | - get 119 | - list 120 | - watch 121 | - create 122 | - delete 123 | - apiGroups: 124 | - projectcontour.io 125 | resources: 126 | - httpproxies 127 | verbs: 128 | - get 129 | - list 130 | - watch 131 | - create 132 | - delete 133 | - apiGroups: 134 | - rbac.authorization.k8s.io 135 | resources: 136 | - clusterrolebindings 137 | verbs: 138 | - create 139 | - apiGroups: 140 | - rbac.authorization.k8s.io 141 | resourceNames: 142 | - skupper-service-controller 143 | resources: 144 | - clusterroles 145 | verbs: 146 | - bind 147 | serviceAccountName: skupper-site-controller 148 | deployments: 149 | - name: skupper-site-controller 150 | spec: 151 | replicas: 1 152 | selector: 153 | matchLabels: 154 | control-plane: controller-manager 155 | strategy: {} 156 | template: 157 | metadata: 158 | labels: 159 | control-plane: controller-manager 160 | spec: 161 | containers: 162 | - command: 163 | - /app/site-controller 164 | env: 165 | - name: WATCH_NAMESPACE 166 | valueFrom: 167 | fieldRef: 168 | fieldPath: metadata.annotations['olm.targetNamespaces'] 169 | - name: QDROUTERD_IMAGE 170 | value: quay.io/skupper/skupper-router@sha256:9f60ac5f31cf4deb773e41b4f780ef9f035c66c35f5cb6c06c81ff52dc23b4ca 171 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 172 | value: quay.io/skupper/service-controller@sha256:ee17c8d8eba854376caf8ddcc172e253368d0d9f14831656fbe57b2b4110b676 173 | image: quay.io/skupper/site-controller@sha256:06e0fd9c2639939a92eac005a3e070087d898cc619e046d3bf9006e5613111f9 174 | name: manager 175 | securityContext: 176 | allowPrivilegeEscalation: false 177 | securityContext: 178 | runAsNonRoot: true 179 | serviceAccountName: skupper-site-controller 180 | terminationGracePeriodSeconds: 10 181 | permissions: 182 | - rules: 183 | - apiGroups: 184 | - apps 185 | resources: 186 | - deployments 187 | - statefulsets 188 | - daemonsets 189 | verbs: 190 | - get 191 | - list 192 | - watch 193 | - create 194 | - update 195 | - patch 196 | - delete 197 | - apiGroups: 198 | - route.openshift.io 199 | resources: 200 | - routes 201 | verbs: 202 | - get 203 | - list 204 | - watch 205 | - create 206 | - update 207 | - patch 208 | - delete 209 | - apiGroups: 210 | - apps.openshift.io 211 | resources: 212 | - deploymentconfigs 213 | verbs: 214 | - get 215 | - list 216 | - watch 217 | - apiGroups: 218 | - '' 219 | resources: 220 | - pods 221 | - pods/exec 222 | - secrets 223 | - configmaps 224 | - serviceaccounts 225 | - services 226 | verbs: 227 | - get 228 | - list 229 | - watch 230 | - create 231 | - update 232 | - patch 233 | - delete 234 | - apiGroups: 235 | - rbac.authorization.k8s.io 236 | resources: 237 | - rolebindings 238 | - roles 239 | verbs: 240 | - get 241 | - list 242 | - watch 243 | - create 244 | - delete 245 | - apiGroups: 246 | - networking.k8s.io 247 | resources: 248 | - ingresses 249 | - networkpolicies 250 | verbs: 251 | - get 252 | - list 253 | - watch 254 | - create 255 | - delete 256 | - apiGroups: 257 | - projectcontour.io 258 | resources: 259 | - httpproxies 260 | verbs: 261 | - get 262 | - list 263 | - watch 264 | - create 265 | - delete 266 | serviceAccountName: skupper-site-controller 267 | strategy: deployment 268 | installModes: 269 | - supported: true 270 | type: OwnNamespace 271 | - supported: false 272 | type: SingleNamespace 273 | - supported: false 274 | type: MultiNamespace 275 | - supported: true 276 | type: AllNamespaces 277 | keywords: 278 | - skupper 279 | - service 280 | - mesh 281 | - van 282 | links: 283 | - name: Skupper Operator 284 | url: https://github.com/skupperproject/skupper-operator 285 | maintainers: 286 | - email: skupper@googlegroups.com 287 | name: Skupper Community 288 | maturity: alpha 289 | provider: 290 | name: Skupper Project 291 | url: https://skupper.io 292 | replaces: skupper-operator.v1.3.0 293 | version: 1.4.0-rc2 294 | -------------------------------------------------------------------------------- /bundle/manifests/1.4.0-rc3/skupper-operator.v1.4.0-rc3.clusterserviceversion.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: ClusterServiceVersion 3 | metadata: 4 | annotations: 5 | alm-examples: '[]' 6 | capabilities: Seamless Upgrades 7 | categories: Integration & Delivery, Networking, Streaming & Messaging 8 | certified: 'false' 9 | containerImage: quay.io/skupper/skupper-operator-bundle:v1.4.0-rc3 10 | createdAt: '2023-06-13T20:19:21Z' 11 | description: Skupper Operator provides the ability to create a service network 12 | operators.operatorframework.io/builder: operator-sdk-v1.4.0+git 13 | operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 14 | repository: https://github.com/skupperproject/skupper-operator 15 | support: Skupper Project 16 | labels: 17 | operatorframework.io/arch.amd64: supported 18 | operatorframework.io/os.linux: supported 19 | name: skupper-operator.v1.4.0-rc3 20 | namespace: placeholder 21 | spec: 22 | apiservicedefinitions: {} 23 | description: | 24 | Skupper enables communication between services running in different network locations. 25 | It allows geographically distributed services to connect as if they were all running in the same site. 26 | 27 | Each site is a namespace with a running Skupper instance. 28 | 29 | The Skupper operator allows you create and manage sites. 30 | The operator processes any ConfigMap named skupper-site and configures the site for the service network accordingly. 31 | 32 | To get started, create the following ConfigMap in the desired namespace, the 33 | Skupper operator will create the Skupper instance and configure the site. 34 | 35 | apiVersion: v1 36 | kind: ConfigMap 37 | metadata: 38 | name: skupper-site 39 | 40 | The operator can be installed to a single namespace or at cluster level, watching for the skupper-site ConfigMap in all namespaces. 41 | displayName: Skupper 42 | icon: 43 | - base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojMzUzNTM1O30uY2xzLTJ7ZmlsbDojMzg1ODZjO30uY2xzLTN7ZmlsbDojZmZmO30uY2xzLTR7ZmlsbDojZDVjNWI3O308L3N0eWxlPjwvZGVmcz48dGl0bGU+c2t1cHBlcl9pY29uX3JnYl9kZWZhdWx0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik05OTkuOTEsNDQ2LjQxbC0xMy42LTEuMzVjLTEuNzUtLjI2LTIyLjYtMy42OS01My4zNS0yMS44MS0xOC44MS0xMS4wOC0zNy42LTI1LjQyLTU1Ljg1LTQyLjYxLTIzLTIxLjY0LTQ1LjE1LTQ3Ljg5LTY1LjktNzhBNjAzLjIsNjAzLjIsMCwwLDAsNjI1LjgyLDEyOC40QzU0My43NCw3OS4yNyw0ODEuNDYsNjguOTMsNDY0LjMzLDY2LjkzYTMzMC44NSwzMzAuODUsMCwwLDAtMzcuODQtMi4zNEEyMjcuMjIsMjI3LjIyLDAsMCwwLDM5MCw2Ny4zN0MzNTYuNjcsNzIuNzYsMzI4LjUsODYsMzA2LjI0LDEwNi43OWMtMjAuNDYsMTkuMDktMzUuNjMsNDQuMzItNDUuMSw3NS05LjcxLDMxLjQ4LTEzLjU5LDY5LjY2LTExLjU0LDExMy40OCwyLDQyLjk0LTIuMjUsOTEuODEtMTIuMzEsMTQxLjMyYTcyOS4zMSw3MjkuMzEsMCwwLDEtNDUuNzUsMTQ0Ljg2Yy0yMC42MSw0Ny4wNy00NC43Miw4Ny44NC03MS42NSwxMjEuMTgtMjcuNDIsMzMuOTQtNTYuMjMsNTguMjEtODUuNjQsNzIuMTNsLTEyLjUyLDUuOTNMMSw3OTAuNWw3LjgyLDIxLjU1LDQuNzMsMTNjMS4zMywzLjY3LDEzLjg2LDM2LjY0LDQzLjU0LDY0LjY5LDguNDEsOCwxOS45NCwxOC4xNCwzNC41NiwyNi40MywxNy40Miw5Ljg5LDM1LjYsMTQuOSw1NCwxNC45YTEwNS4zNCwxMDUuMzQsMCwwLDAsMTUuNi0xLjE4YzU4Ljg4LTguODcsMTI2LjI3LTMwLjY2LDE3NC4yNS00OC4xNGExNDMuMjksMTQzLjI5LDAsMCwwLDE0LjU4LDE4LjdjMzUuOTUsMzkuMTEsOTMuNzEsNTguOTQsMTcxLjY1LDU4Ljk0LDM5LDAsODQtNSwxMzMuNTktMTQuOTFDNzIzLjYxLDkzMC44OCw3NzkuNTQsOTA5LDgyMS42LDg3OS4zNWMzNi4yNS0yNS41Miw2Mi4zNi01Ni42Nyw3Ny42Mi05Mi42YTE5MC4yMiwxOTAuMjIsMCwwLDAsMTUtODAuMjQsNTguNzksNTguNzksMCwwLDAsMjcuMzUsN2MxMy44NiwwLDIzLTUuMzcsMjYuMzQtNy42OGw2Ljc3LTQuNzNhOS4xNiw5LjE2LDAsMCwwLDMuODEtNi4xM2wxLjI1LTguMTdjLjMzLTIuMTQsMi42OS0xOS4zLTEuMzEtNDMuMzUsMS0xLjA1LDItMi4xLDMtMy4yLDE0LjYzLTE2LjU5LDI1LTM4LjgzLDMxLjgzLTY4LDUuNjItMjQuMTIsOC42Mi01Mi4zNiw5LjE4LTg2LjM1bC4yMy0xNCwuMzgtMjMuMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik05ODMuNDgsNDcwLjFjLS45NC0uMDktOTUtMTAuOTMtMTkzLTE1My4xOUE1NzcuNTUsNTc3LjU1LDAsMCwwLDYxMi44OCwxNTBDNTM1LjExLDEwMy40Nyw0NzcuMjgsOTMuODEsNDYxLjQxLDkyYy0yNS42OC0zLTQ3LjczLTIuOS02Ny40My4yOC0yOC4yNyw0LjU4LTUyLDE1LjY3LTcwLjU1LDMzLTE3LjIsMTYtMzAuMDYsMzcuNTktMzguMjEsNjQtOC44NSwyOC42OC0xMi4zNyw2NC0xMC40NSwxMDQuODcsMi4xLDQ1LTIuMzIsOTYtMTIuOCwxNDcuNTJhNzU0LjU5LDc1NC41OSwwLDAsMS00Ny4zNSwxNDkuOTVjLTIxLjUxLDQ5LjEyLTQ2Ljc5LDkxLjgyLTc1LjEzLDEyNi45QzEwOS42Nyw3NTUuMzgsNzcuODksNzgyLDQ1LDc5Ny41M2wtMTIuNTEsNS45Myw0LjcyLDEzYTE1Ny44NCwxNTcuODQsMCwwLDAsMzcuMTcsNTVjMTcuNzQsMTYuNzcsNDUuNDQsMzkuMjMsODMuMTMsMzMuNTUsNTMuODEtOC4xMSwxMTctMjgsMTY2LTQ1LjY2YTE2NC45LDE2NC45LDAsMCwxLTEyLTQ1Ljc0Yy03LjM2LDYtMTQuNDIsMTEtMjAuNTcsMTUuNDQtNC43MiwzLjM3LTkuNjEsNi44Ni0xMS42LDguNzVhMzYuNzEsMzYuNzEsMCwwLDEtMjUuMjcsMTAuMjhjLTE2LjQ2LDAtMzAuOS0xMC44Mi0zOC42My0yOS02LjMyLTE0LjgzLTcuNjEtMzMuMTEtMy42NS01MS41LDQuNy0yMS44NCwxNi44LTQzLjM5LDM1LTYyLjMyLDI5Ljg1LTMxLjA4LDQxLjc2LTU4LjgsNTAuNDYtNzksNS42Ny0xMy4yMSwxMC41Ny0yNC42MiwxOS4xNS0zMy4xMSw5LjQ3LTkuMzksMjIuODQtMTMuOTUsNDAuODgtMTMuOTVhMTY4LjI0LDE2OC4yNCwwLDAsMSwzMC44OSwzLjQxYzI0LjEtMjUuMDcsNTAuNjktMzAuODIsMTAxLjI1LTQxLjc2LDE3LjcyLTMuODQsMzkuNzktOC42MSw2Ni43NS0xNS4yMyw4MS4zMS0xOS45NSwxMzIuMS0yNC4xNCwxNjAuMzgtMjQuMTQsNy44MywwLDE0LjkyLjMxLDIxLjE0LjkzLDQuODMtMi43NiwxMy4xLTcuNjEsMjctMTYsMTQuODktOSwyOC0xNSw0My4zMS0xNSwyNC40NywwLDQzLjA5LDE0LjQ2LDgwLjE5LDQzLjI3bC4wOS4wN2M2LjA3LDQuNzEsMTIuOTQsMTAuMDUsMjAuNDUsMTUuODEsMzQuNTEsMjYuNDUsNTIuMzcsNTcuMSw2MS42LDgyLjUsMTguNjItMjkuMDgsMjUuOTItNzQuNiwyNi43OS0xMjcuNDhsLjIzLTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUyMi4yOSwxNjEuMDhhOTMuNTQsOTMuNTQsMCwwLDEsMjkuODEsMi41OCw4OC43Myw4OC43MywwLDAsMSwyNS40LDEwLjc5LDc1LjY0LDc1LjY0LDAsMCwxLDE5LjIxLDE3LDYxLjM2LDYxLjM2LDAsMCwxLDExLjE4LDIxLjksNTQuMTEsNTQuMTEsMCwwLDEsMS45MSwxNS4wNyw1MS45NCw1MS45NCwwLDAsMS0yLjMxLDE0LjQ5LDU0LjgxLDU0LjgxLDAsMCwxLTYuMjUsMTMuNDYsNjEuNCw2MS40LDAsMCwxLTEwLDEyLDEyLjIsMTIuMiwwLDAsMC0yLjMyLDMsMTQsMTQsMCwwLDAtMS40MSwzLjYxLDE2LjMxLDE2LjMxLDAsMCwwLS40NCw0LDE3LjY3LDE3LjY3LDAsMCwwLC41OSw0LjIzbDMuODgsMTQuNTlhMTguMjcsMTguMjcsMCwwLDEsLjU0LDYuNCwxNi41NSwxNi41NSwwLDAsMS0xLjYyLDUuNzgsMTQuNDYsMTQuNDYsMCwwLDEtMy41MSw0LjU1LDEyLjg3LDEyLjg3LDAsMCwxLTUuMTIsMi42NmwtMzYuMDYsOS4yNmExNC43MywxNC43MywwLDAsMS02LjMzLjIsMTYuMjMsMTYuMjMsMCwwLDEtNS45LTIuMzgsMTgsMTgsMCwwLDEtNC43Ny00LjU3LDE4LjgxLDE4LjgxLDAsMCwxLTIuOTQtNi4zbC00LTE1LjczYTE4LjYyLDE4LjYyLDAsMCwwLTEuNzEtNC4zMiwxOC4xNiwxOC4xNiwwLDAsMC0yLjctMy42OCwxNy44NSwxNy44NSwwLDAsMC0zLjUtMi44NywxNi45MSwxNi45MSwwLDAsMC00LjE2LTEuODYsODkuODgsODkuODgsMCwwLDEtMTguMTMtNy41QTc5LjkxLDc5LjkxLDAsMCwxLDQ3NiwyNjYuMjdhNjguMzcsNjguMzcsMCwwLDEtMTItMTQuMzdBNTkuNTQsNTkuNTQsMCwwLDEsNDU2LjgzLDIzNWE1Mi45NCw1Mi45NCwwLDAsMSwuMzYtMjcuMzUsNTcsNTcsMCwwLDEsMTMuMjEtMjMuMTIsNzAuODEsNzAuODEsMCwwLDEsMjIuNzctMTYuMTZBODUuODcsODUuODcsMCwwLDEsNTIyLjI5LDE2MS4wOFoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik02NDcuMzUsMjc4bDEwLjEzLDEzLjc3YTE0LjQ1LDE0LjQ1LDAsMCwxLDIuNzUsOC41MiwxMi41MywxMi41MywwLDAsMS0uNzEsNC4yMUE5LjgxLDkuODEsMCwwLDEsNjU3LjQsMzA4bC0zMCwzMS4zM2ExNC43MiwxNC43MiwwLDAsMC0zLjczLDcuMzVBMTguNTcsMTguNTcsMCwwLDAsNjI0LDM1NWExNy41MywxNy41MywwLDAsMCwzLjg2LDcuMjUsMTMsMTMsMCwwLDAsNi44MSw0LjA2bDM4LjksOC42NmExMS4yNSwxMS4yNSwwLDAsMSw0LjUsMi4xOSwxNC43NiwxNC43NiwwLDAsMSwzLjQ3LDQsMTgsMTgsMCwwLDEsMi4xMSw1LjI1LDE5LjIyLDE5LjIyLDAsMCwxLC40Myw2LDE3LjY0LDE3LjY0LDAsMCwxLS44NCw0LjE2LDE1LjM1LDE1LjM1LDAsMCwxLTEuNjksMy41MywxMy4yMiwxMy4yMiwwLDAsMS0yLjM5LDIuNzQsMTAuNjksMTAuNjksMCwwLDEtMi45NSwxLjc5LDkuNCw5LjQsMCwwLDEtMS4yNy40MSwxMCwxMCwwLDAsMS0xLjMzLjIzLDguOTMsOC45MywwLDAsMS0xLjM3LDAsOS42Niw5LjY2LDAsMCwxLTEuNDEtLjE2bC04My0xNS45YTEzLjE0LDEzLjE0LDAsMCwwLTEuNjQtLjIxLDEyLjY1LDEyLjY1LDAsMCwwLTEuNjMsMCwxMi4zOCwxMi4zOCwwLDAsMC0xLjYyLjIyLDEyLjc1LDEyLjc1LDAsMCwwLTEuNTguNDMsMTAuODIsMTAuODIsMCwwLDAtMS41NC42MywxMi42OSwxMi42OSwwLDAsMC0xLjQ4LjgzLDE1LjEzLDE1LjEzLDAsMCwwLTEuNCwxLDE0Ljc5LDE0Ljc5LDAsMCwwLTEuMywxLjIxbC03OS4xOCw4Mi43M2ExNi40MywxNi40MywwLDAsMS0yLjY4LDIuMjgsMTYuODUsMTYuODUsMCwwLDEtMS40NS44NywxNC43OCwxNC43OCwwLDAsMS01LjQ4LDEuNjgsMTMuNTEsMTMuNTEsMCwwLDEtNC0uMjIsMTIuMzksMTIuMzksMCwwLDEtNi44Ny00LjA2bC0yLjM2LTIuNzJhMTcuNDMsMTcuNDMsMCwwLDEtMy41MS02LjQ4LDIwLjI4LDIwLjI4LDAsMCwxLS43My03LjQyQTIyLjE4LDIyLjE4LDAsMCwxLDQ3Niw0NDYuMTZsNDEuNjgtNDAuODlhMTguOCwxOC44LDAsMCwwLDUuMS04LjgzLDE5LjQ2LDE5LjQ2LDAsMCwwLDAtOS41MywxNy45LDE3LjksMCwwLDAtNC40Ni04LjExLDE1Ljg0LDE1Ljg0LDAsMCwwLTguNDMtNC41MmwtNTcuNTUtMTFhMTQuNDEsMTQuNDEsMCwwLDEtNS40LTIuMjUsMTQuNjMsMTQuNjMsMCwwLDEtNi4xLTkuMzUsMTQuMzMsMTQuMzMsMCwwLDEsLjA5LTUuOWwxLjU4LTcuMTlhMTQuNzcsMTQuNzcsMCwwLDEsMS41MS00LDE0LjUyLDE0LjUyLDAsMCwxLDIuNDktMy4yNiwxNC42OCwxNC42OCwwLDAsMSw3LTMuODhjLjUyLS4xMiwxLS4yMSwxLjU4LS4yOGExNC4xNywxNC4xNywwLDAsMSwxLjYtLjEsMTIuOCwxMi44LDAsMCwxLDEuNjMuMDgsMTEuOTIsMTEuOTIsMCwwLDEsMS42NC4yN2wxMDQuNjUsMjMuM2ExMy45NCwxMy45NCwwLDAsMCwxLjY4LjI2LDExLjY1LDExLjY1LDAsMCwwLDEuNjcsMCwxMi44MSwxMi44MSwwLDAsMCwxLjY0LS4xNSwxNC43NywxNC43NywwLDAsMCwxLjYtLjM2LDEyLjM0LDEyLjM0LDAsMCwwLDEuNTQtLjU2LDEyLjY0LDEyLjY0LDAsMCwwLDEuNDctLjc0LDEyLjksMTIuOSwwLDAsMCwxLjM4LS45NCwxMy41LDEzLjUsMCwwLDAsMS4yOS0xLjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTk1MS41OCw2ODIuNVM5NDgsNjg1LDk0MS41Niw2ODVjLTEwLjkyLDAtMjkuOTEtNy40Mi01Mi42LTQ3LjY0aDBjLTM3LjM3LTY4LjIyLTc1LjY3LTgyLjc4LTc3LjMyLTgzLjM4YTQuNDgsNC40OCwwLDAsMC0zLDguNDRjLjM4LjE0LDM4LjgyLDE0Ljc0LDc1LjU1LDg0Ljg2bDAsLjA5Yy00LjkxLDguNC05LjQ4LDExLjMxLTkuNDgsMTEuMzEsMTUuNDUsMjQuMDYsNTQuODcsMjAyLTIyNC45NCwyNTcuODUtNTAsMTAtOTIuMzQsMTQuMzctMTI4LDE0LjM3LTE2My43NywwLTE4Ny45NS05Mi4yNy0xODIuNDMtMTU3Ljg4YTQ2LjYzLDQ2LjYzLDAsMCwwLTExLjY2LTUuNjdjNC43Mi04LjI0LDEyLjExLTIyLjMsMjMuMy00Ni4xNCw3LjEtMTUuMTMsMTAuMTctMzIsOS4xMy01MGE0LjUyLDQuNTIsMCwwLDAtMS4zOS0zLDQuMzksNC4zOSwwLDAsMC0zLjMyLTEuMjEsNC40OCw0LjQ4LDAsMCwwLTQuMTksNC43NGMxLDE2Ljc4LTEuNzQsMzEuNzEtOC4yOSw0NS42Ny0xNS4xOCwzMi4zNS0yMy4xMiw0Ni4xNS0yNi42NSw1MS42N2wwLDBjLTE5LjM5LDI0LjEtNDYsMzguMTEtNTYuNDMsNDhhOC4yLDguMiwwLDAsMS01LjY5LDIuNDhjLTE1LjI0LDAtMzEuOS00Ny41NiwxMy4yNC05NC41Nyw1MS01My4wNyw1NS42Mi05OC4yOSw2OS4xMS0xMTEuNjYsNC4yOS00LjI0LDEyLjEzLTUuNjksMjAuODQtNS42OSwxOC43MywwLDQxLjQ1LDYuNjksNDEuNDUsNi42OSwyOC4zNS0zOC43Nyw1MC44OC0zMy4yNywxNjQuMjMtNjEuMDksNzguODMtMTkuMzUsMTI3LjE2LTIzLjMzLDE1My41OS0yMy4zMywxOC40NiwwLDI2LjIyLDEuOTUsMjYuMjIsMS45NWgwYy4xOCwwLDIuNjgtLjU4LDM2LjcxLTIxLjE4LDExLjc0LTcuMTEsMjAuMTItMTAuOTEsMjguNTYtMTAuOTEsMTcuNDgsMCwzNS4xOSwxNi4zLDgzLjQxLDUzLjI3Qzk2Myw2MDcuODksOTUxLjU4LDY4Mi41LDk1MS41OCw2ODIuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04MzIuNDcsNjg4LjQ2czUyLTk3LTUyLjg3LTEyMS4xN1M2NDYuMTIsNjE0LjcsNjU5LjY4LDY1OWMwLDAtNDYtMS40MS01NS40NywxMy43MiwwLDAtMzEuNDYtMTAzLjkzLTE2Ny0zMS44MkMzNTcuMzQsNjgzLjM4LDM4NC45NCw3NjQuMTksNDE5LDc4Mi41MWM0Ljg3LDIuNjIsNy44Nyw5LjQ5LDIuNywyMC4xMWE1Ni4xNyw1Ni4xNywwLDAsMC01LjE0LDMyLjQ4YzQuMTQsMzAuOTUsMzMuNDgsNDQuNjMsMTA5LjI2LDM0LjNxMTEtMS41LDIxLjE5LTMuOGwxLjU4LS4zN3EyLjQ5LS41Nyw0Ljk0LTEuMThhMjUzLDI1MywwLDAsMCwxMTgtNjcuMzJjMy45My04LjEyLDQuNDItMjIuNS43NS0zMi40MS02LjU2LTE3LjY4LTI0Ljk0LTI2LjE0LTI1LjEzLTI2LjIybDAtLjA5Yy04LjUyLTQuNDktMTguNDMtNy43MS0yNS41Mi0zLjg4LTEzLjIzLDcuMTYtMjMuNjcsMTYuMjQtMjUuNTUsMS40NC0uODgtNi45MiwxLjI5LTQxLjkzLDQyLjkyLTUzLjM2czU5Ljc1LDguMjEsNjIsMTguMzVjMS41NCw2Ljg4LTIuMTksMjAuNjQtMTEuODcsMjEuMTctNS4yNS4yOC03LjI3LDQuNi05LjExLDkuNzZhOC43LDguNywwLDAsMCwxLDgsNjEuNTgsNjEuNTgsMCwwLDEsMTAuMzEsMTcuNzNjNC44OSwxMy4xOSw0Ljg2LDI3LjUsMCw0Mi42N0ExNTYuOTEsMTU2LjkxLDAsMCwwLDc3Mi43Miw4MDZsMS45My0uMzgsMi42NC0uNTVhMTY3LDE2NywwLDAsMCwzMS44My0xMC40NUM4NzIsNzY2Ljg2LDg0MS40MSw2OTUuMzEsODMyLjQ3LDY4OC40NloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik03NDMuNDksODMyLjA1YTE4MC41MywxODAuNTMsMCwwLDEtNjMuMS0xMS40MywyNzkuMjksMjc5LjI5LDAsMCwxLTM4LjYsMzAuMDksMjc0LjYyLDI3NC42MiwwLDAsMS03MC4yMiwzMi40OWMxNi45LDExLjM2LDQ4Ljc2LDIwLjQ1LDEwNi4yOSwzLjE0LDU1LjgxLTE2Ljc4LDc4LjY5LTM5LDg3Ljk0LTU1LjdBMTc5Ljg5LDE3OS44OSwwLDAsMSw3NDMuNDksODMyLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU3MS4xNiw2NzMuMzFjLTkuNzktMjUuMDctNDAuOTQtMzcuMTktNzUuMTItMzEuNjhhNTcuNjIsNTcuNjIsMCwxLDEtNjUuNDUsMzYuMjVjLTE0LjQ4LDE3LjQ5LTIwLjEzLDM4LjI4LTEzLjA3LDU2LjM4LDEyLDMwLjc0LDU2LjEyLDQyLDk4LjU0LDI1LjE4UzU4My4xNiw3MDQuMDUsNTcxLjE2LDY3My4zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik03NzYsNjc2LjExYTUwLjUsNTAuNSwwLDAsMS0zMS4xMi05MC4yOGMtMjguNTEsMi41My01MS4yMiwyMC43OC01My4xNSw0NC42OC0yLjIzLDI3LjQ5LDIzLjg4LDUyLDU4LjMxLDU0Ljg0LDIwLjg5LDEuNjksNDAtNSw1Mi4zNy0xNi43QTUwLjIzLDUwLjIzLDAsMCwxLDc3Niw2NzYuMTFaIi8+PC9zdmc+ 44 | mediatype: image/svg+xml 45 | install: 46 | spec: 47 | clusterPermissions: 48 | - rules: 49 | - apiGroups: 50 | - apps 51 | resources: 52 | - deployments 53 | - statefulsets 54 | - daemonsets 55 | verbs: 56 | - get 57 | - list 58 | - watch 59 | - create 60 | - update 61 | - patch 62 | - delete 63 | - apiGroups: 64 | - route.openshift.io 65 | resources: 66 | - routes 67 | verbs: 68 | - get 69 | - list 70 | - watch 71 | - create 72 | - update 73 | - patch 74 | - delete 75 | - apiGroups: 76 | - apps.openshift.io 77 | resources: 78 | - deploymentconfigs 79 | verbs: 80 | - get 81 | - list 82 | - watch 83 | - apiGroups: 84 | - '' 85 | resources: 86 | - pods 87 | - pods/exec 88 | - secrets 89 | - configmaps 90 | - serviceaccounts 91 | - services 92 | verbs: 93 | - get 94 | - list 95 | - watch 96 | - create 97 | - update 98 | - patch 99 | - delete 100 | - apiGroups: 101 | - rbac.authorization.k8s.io 102 | resources: 103 | - rolebindings 104 | - roles 105 | verbs: 106 | - get 107 | - list 108 | - watch 109 | - create 110 | - delete 111 | - update 112 | - apiGroups: 113 | - networking.k8s.io 114 | resources: 115 | - ingresses 116 | - networkpolicies 117 | verbs: 118 | - get 119 | - list 120 | - watch 121 | - create 122 | - delete 123 | - apiGroups: 124 | - projectcontour.io 125 | resources: 126 | - httpproxies 127 | verbs: 128 | - get 129 | - list 130 | - watch 131 | - create 132 | - delete 133 | - apiGroups: 134 | - rbac.authorization.k8s.io 135 | resources: 136 | - clusterrolebindings 137 | verbs: 138 | - create 139 | - apiGroups: 140 | - rbac.authorization.k8s.io 141 | resourceNames: 142 | - skupper-service-controller 143 | resources: 144 | - clusterroles 145 | verbs: 146 | - bind 147 | serviceAccountName: skupper-site-controller 148 | deployments: 149 | - name: skupper-site-controller 150 | spec: 151 | replicas: 1 152 | selector: 153 | matchLabels: 154 | control-plane: controller-manager 155 | strategy: {} 156 | template: 157 | metadata: 158 | labels: 159 | control-plane: controller-manager 160 | spec: 161 | containers: 162 | - command: 163 | - /app/site-controller 164 | env: 165 | - name: WATCH_NAMESPACE 166 | valueFrom: 167 | fieldRef: 168 | fieldPath: metadata.annotations['olm.targetNamespaces'] 169 | - name: QDROUTERD_IMAGE 170 | value: quay.io/skupper/skupper-router@sha256:fc47e6bc44fdfaed408f8fbf95306ce3755dd7606d67c8a0d7073037f072578c 171 | - name: SKUPPER_SERVICE_CONTROLLER_IMAGE 172 | value: quay.io/skupper/service-controller@sha256:391a1435eff82eaa8b5bde24af8b35b68b19a74064463692c567223355f5db17 173 | image: quay.io/skupper/site-controller@sha256:2221a229f0a02ad74f33424437561c176d78470d02dc2709d27916e0b9133e75 174 | name: manager 175 | securityContext: 176 | allowPrivilegeEscalation: false 177 | securityContext: 178 | runAsNonRoot: true 179 | serviceAccountName: skupper-site-controller 180 | terminationGracePeriodSeconds: 10 181 | permissions: 182 | - rules: 183 | - apiGroups: 184 | - apps 185 | resources: 186 | - deployments 187 | - statefulsets 188 | - daemonsets 189 | verbs: 190 | - get 191 | - list 192 | - watch 193 | - create 194 | - update 195 | - patch 196 | - delete 197 | - apiGroups: 198 | - route.openshift.io 199 | resources: 200 | - routes 201 | verbs: 202 | - get 203 | - list 204 | - watch 205 | - create 206 | - update 207 | - patch 208 | - delete 209 | - apiGroups: 210 | - apps.openshift.io 211 | resources: 212 | - deploymentconfigs 213 | verbs: 214 | - get 215 | - list 216 | - watch 217 | - apiGroups: 218 | - '' 219 | resources: 220 | - pods 221 | - pods/exec 222 | - secrets 223 | - configmaps 224 | - serviceaccounts 225 | - services 226 | verbs: 227 | - get 228 | - list 229 | - watch 230 | - create 231 | - update 232 | - patch 233 | - delete 234 | - apiGroups: 235 | - rbac.authorization.k8s.io 236 | resources: 237 | - rolebindings 238 | - roles 239 | verbs: 240 | - get 241 | - list 242 | - watch 243 | - create 244 | - delete 245 | - apiGroups: 246 | - networking.k8s.io 247 | resources: 248 | - ingresses 249 | - networkpolicies 250 | verbs: 251 | - get 252 | - list 253 | - watch 254 | - create 255 | - delete 256 | - apiGroups: 257 | - projectcontour.io 258 | resources: 259 | - httpproxies 260 | verbs: 261 | - get 262 | - list 263 | - watch 264 | - create 265 | - delete 266 | serviceAccountName: skupper-site-controller 267 | strategy: deployment 268 | installModes: 269 | - supported: true 270 | type: OwnNamespace 271 | - supported: false 272 | type: SingleNamespace 273 | - supported: false 274 | type: MultiNamespace 275 | - supported: true 276 | type: AllNamespaces 277 | keywords: 278 | - skupper 279 | - service 280 | - mesh 281 | - van 282 | links: 283 | - name: Skupper Operator 284 | url: https://github.com/skupperproject/skupper-operator 285 | maintainers: 286 | - email: skupper@googlegroups.com 287 | name: Skupper Community 288 | maturity: alpha 289 | provider: 290 | name: Skupper Project 291 | url: https://skupper.io 292 | replaces: skupper-operator.v1.3.0 293 | skips: 294 | - skupper-operator.v1.4.0-rc2 295 | version: 1.4.0-rc3 296 | -------------------------------------------------------------------------------- /bundle/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | # Core bundle annotations. 3 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 6 | operators.operatorframework.io.bundle.package.v1: skupper-operator 7 | operators.operatorframework.io.bundle.channel.default.v1: stable 8 | operators.operatorframework.io.bundle.channels.v1: alpha,stable,stable-1,stable-1.9 9 | operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 10 | operators.operatorframework.io.metrics.builder: operator-sdk-v1.4.0+git 11 | operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 12 | com.redhat.openshift.versions: v4.6 13 | -------------------------------------------------------------------------------- /env.sh: -------------------------------------------------------------------------------- 1 | export INTERACTIVE=false 2 | 3 | # The new version being defined, i.e.: 1.4.0 4 | export NEW_VERSION="1.9.1" 5 | 6 | # The current version to be used as a source for the new one, i.e.: 1.4.0-rc2 7 | export CUR_VERSION="1.9.0" 8 | 9 | # The latest released version to be replaced (non rc), i.e.: 1.3.0 10 | export REPLACES_VERSION="1.9.0" 11 | 12 | # The tag to be used for the skupper-router image 13 | export SKUPPER_ROUTER_TAG="2.7.5" 14 | 15 | # The tag to be used for the control plane images: 16 | # site-controller, service-controller, config-sync, flow-collector 17 | export SKUPPER_CONTROL_TAG="1.9.1" 18 | 19 | # The tag to be used for the prometheus image 20 | export PROMETHEUS_TAG="v2.55.1" 21 | 22 | # The tag to be used for the oauth proxy image 23 | export OAUTH_PROXY_TAG="4.18.0" 24 | 25 | # Comma separated list of versions to be skipped (optional) 26 | # example: 27 | # SKIP_VERSIONS="1.4.0-rc2,1.4.0-rc3" 28 | #unset SKIP_VERSIONS 29 | #export SKIP_VERSIONS="1.4.0-rc2,1.4.0-rc3" 30 | -------------------------------------------------------------------------------- /examples/k8s/00-cs.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: CatalogSource 3 | metadata: 4 | name: skupper-operator 5 | namespace: olm 6 | spec: 7 | grpcPodConfig: 8 | securityContextConfig: restricted 9 | image: quay.io/skupper/skupper-operator-index:v1.9.1 10 | sourceType: grpc 11 | -------------------------------------------------------------------------------- /examples/k8s/10-og.yaml: -------------------------------------------------------------------------------- 1 | kind: OperatorGroup 2 | apiVersion: operators.coreos.com/v1 3 | metadata: 4 | name: skupper-operator 5 | namespace: my-namespace 6 | spec: 7 | targetNamespaces: 8 | - my-namespace 9 | -------------------------------------------------------------------------------- /examples/k8s/20-sub-cluster-wide.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: Subscription 3 | metadata: 4 | name: skupper-operator 5 | namespace: operators 6 | spec: 7 | channel: alpha 8 | installPlanApproval: Automatic 9 | name: skupper-operator 10 | source: skupper-operator 11 | sourceNamespace: olm 12 | startingCSV: skupper-operator.v1.9.1 13 | -------------------------------------------------------------------------------- /examples/k8s/20-sub.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: Subscription 3 | metadata: 4 | name: skupper-operator 5 | namespace: my-namespace 6 | spec: 7 | channel: alpha 8 | installPlanApproval: Automatic 9 | name: skupper-operator 10 | source: skupper-operator 11 | sourceNamespace: olm 12 | startingCSV: skupper-operator.v1.9.1 13 | -------------------------------------------------------------------------------- /examples/ocp/00-cs.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: CatalogSource 3 | metadata: 4 | name: skupper-operator 5 | namespace: openshift-marketplace 6 | spec: 7 | image: quay.io/skupper/skupper-operator-index:v1.9.1 8 | sourceType: grpc 9 | -------------------------------------------------------------------------------- /examples/ocp/10-og.yaml: -------------------------------------------------------------------------------- 1 | kind: OperatorGroup 2 | apiVersion: operators.coreos.com/v1 3 | metadata: 4 | name: skupper-operator 5 | namespace: my-namespace 6 | spec: 7 | targetNamespaces: 8 | - my-namespace 9 | -------------------------------------------------------------------------------- /examples/ocp/20-sub-cluster-wide.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: Subscription 3 | metadata: 4 | name: skupper-operator 5 | namespace: openshift-operators 6 | spec: 7 | channel: alpha 8 | installPlanApproval: Automatic 9 | name: skupper-operator 10 | source: skupper-operator 11 | sourceNamespace: openshift-marketplace 12 | startingCSV: skupper-operator.v1.9.1 13 | -------------------------------------------------------------------------------- /examples/ocp/20-sub.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operators.coreos.com/v1alpha1 2 | kind: Subscription 3 | metadata: 4 | name: skupper-operator 5 | namespace: my-namespace 6 | spec: 7 | channel: alpha 8 | installPlanApproval: Automatic 9 | name: skupper-operator 10 | source: skupper-operator 11 | sourceNamespace: openshift-marketplace 12 | startingCSV: skupper-operator.v1.9.1 13 | -------------------------------------------------------------------------------- /examples/skupper-site-edge.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: skupper-site 5 | namespace: my-namespace 6 | data: 7 | router-mode: edge 8 | console-user: "admin" 9 | console-password: "changeme" 10 | -------------------------------------------------------------------------------- /examples/skupper-site-interior.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: skupper-site 5 | namespace: my-namespace 6 | data: 7 | router-mode: interior 8 | console-user: "admin" 9 | console-password: "changeme" 10 | console: "true" 11 | flow-collector: "true" 12 | -------------------------------------------------------------------------------- /prepare-update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | . scripts/read_var.sh 4 | . scripts/vars.sh 5 | 6 | INTERACTIVE=${INTERACTIVE:-true} 7 | 8 | function error() { 9 | echo $* 10 | exit 1 11 | } 12 | 13 | function getImageSHA() { 14 | IMAGE="$1" 15 | podman image pull ${IMAGE} > /dev/null 2>&1 16 | DIGEST=$(podman image inspect --format='{{.Digest}}' ${IMAGE}) 17 | [[ $? -ne 0 ]] && exit 1 18 | echo "${IMAGE//:*/@${DIGEST}}" 19 | } 20 | 21 | if ${INTERACTIVE}; then 22 | echo "Skupper operator update preparation tool" 23 | echo "========================================" 24 | echo 25 | read_var NEW_VERSION "New skupper-operator version" true "" 26 | 27 | cur_default=`grep '^VERSION := v' Makefile | cut -c 13-` 28 | 29 | read_var CUR_VERSION "Previous CSV version" true "${cur_default}" 30 | read_var REPLACES_VERSION "CSV version to replace (latest released version - non rc)" true "${cur_default}" 31 | SKIP_VERSIONS="" 32 | count=0 33 | while true; do 34 | let count++ 35 | read_var SKIP_VERSION "Enter version(s) to be skipped (or empty when done)" false "" 36 | [[ -z "${SKIP_VERSION}" ]] && break 37 | [[ ${count} -gt 1 ]] && SKIP_VERSIONS+="," 38 | SKIP_VERSIONS+="${SKIP_VERSION}" 39 | done 40 | 41 | 42 | echo 43 | echo Enter image tags 44 | echo 45 | 46 | 47 | read_var SKUPPER_ROUTER_TAG "Router image tag" true "" 48 | read_var SKUPPER_CONTROL_TAG "Control plane images tag" true "" 49 | read_var PROMETHEUS_TAG "Prometheus image tag" true "" 50 | read_var OAUTH_PROXY_TAG "OAuth Proxy image tag" true "" 51 | fi 52 | 53 | errors=() 54 | for var in ${REQUIRED_VARS[@]}; do 55 | val="`eval echo \\$${var}`" 56 | [[ -z "${val}" ]] && errors+=("${var}") 57 | done 58 | [[ ${#errors} -gt 0 ]] && echo "The following variables are required: ${errors[@]}" && exit 1 59 | 60 | echo "Pulling images to determine their SHAs..." 61 | export SKUPPER_ROUTER_SHA=`getImageSHA quay.io/skupper/skupper-router:${SKUPPER_ROUTER_TAG}` 62 | export SITE_CONTROLLER_SHA=`getImageSHA quay.io/skupper/site-controller:${SKUPPER_CONTROL_TAG}` 63 | export SERVICE_CONTROLLER_SHA=`getImageSHA quay.io/skupper/service-controller:${SKUPPER_CONTROL_TAG}` 64 | export CONFIG_SYNC_SHA=`getImageSHA quay.io/skupper/config-sync:${SKUPPER_CONTROL_TAG}` 65 | export FLOW_COLLECTOR_SHA=`getImageSHA quay.io/skupper/flow-collector:${SKUPPER_CONTROL_TAG}` 66 | export PROMETHEUS_SHA=`getImageSHA quay.io/prometheus/prometheus:${PROMETHEUS_TAG}` 67 | export OAUTH_PROXY_SHA=`getImageSHA quay.io/openshift/origin-oauth-proxy:${OAUTH_PROXY_TAG}` 68 | 69 | echo 70 | echo 71 | echo Summary 72 | echo 73 | echo 74 | printf "%-25s: %s\n" "==== Version info ====" 75 | printf "%-25s: %s\n" "New version" "${NEW_VERSION}" 76 | printf "%-25s: %s\n" "Previous version" "${CUR_VERSION}" 77 | printf "%-25s: %s\n" "Replaces version" "${REPLACES_VERSION}" 78 | printf "%-25s: %s\n" "Versions to skip" "${SKIP_VERSIONS:-none}" 79 | echo 80 | echo 81 | printf "%-25s: %s\n" "==== New images ====" 82 | printf "%-25s: %s\n" "Skupper Router SHA" "${SKUPPER_ROUTER_SHA}" 83 | printf "%-25s: %s\n" "Site Controller SHA" "${SITE_CONTROLLER_SHA}" 84 | printf "%-25s: %s\n" "Service Controller SHA" "${SERVICE_CONTROLLER_SHA}" 85 | printf "%-25s: %s\n" "Config Sync SHA" "${CONFIG_SYNC_SHA}" 86 | printf "%-25s: %s\n" "Flow Collector SHA" "${FLOW_COLLECTOR_SHA}" 87 | printf "%-25s: %s\n" "Prometheus SHA" "${PROMETHEUS_SHA}" 88 | printf "%-25s: %s\n" "OAuth Proxy SHA" "${OAUTH_PROXY_SHA}" 89 | echo 90 | echo 91 | 92 | if ${INTERACTIVE}; then 93 | read_var CONTINUE "Continue?" true "yes" "yes" "no" 94 | [[ "${CONTINUE,,}" = "no" ]] && exit 0 95 | echo 96 | echo 97 | fi 98 | 99 | MAJOR_MIN_VERSION=$(echo "${NEW_VERSION}" | sed -re 's/(.*)\.[0-9]+.*/\1/g') 100 | MAJOR_VERSION=$(echo "${MAJOR_MIN_VERSION}" | sed -re 's/(.*)\.[0-9]+/\1/g') 101 | 102 | # Create a new CSV 103 | function createAndPrepareCSV() { 104 | # Creating directory and copying CSV 105 | if ${INTERACTIVE} && [[ -d bundle/manifests/${NEW_VERSION} ]]; then 106 | echo 107 | read_var CONTINUE "Bundle for ${NEW_VERSION} is already defined, ovewrite?" true "no" "yes" "no" 108 | [[ "${CONTINUE,,}" = "no" ]] && exit 0 109 | echo 110 | fi 111 | rm -rf bundle/manifests/${NEW_VERSION} 112 | mkdir bundle/manifests/${NEW_VERSION} 113 | oldcsv="bundle/manifests/${CUR_VERSION}/skupper-operator.v${CUR_VERSION}.clusterserviceversion.yaml" 114 | newcsv="bundle/manifests/${NEW_VERSION}/skupper-operator.v${NEW_VERSION}.clusterserviceversion.yaml" 115 | cp ${oldcsv} ${newcsv} 116 | 117 | # Updating metadata/annotations.yaml 118 | sed -ri "s/ (operators\.operatorframework\.io\.bundle\.channels\.v1): .*/ \1: alpha,stable,stable-${MAJOR_VERSION},stable-${MAJOR_MIN_VERSION}/g" bundle/metadata/annotations.yaml || error "Error updating channels in bundle/metadata/annotations.yaml" 119 | 120 | # Updating CSV file 121 | python ./scripts/update_csv.py ${newcsv} 122 | } 123 | 124 | # 125 | # Create and update CSV file 126 | # 127 | createAndPrepareCSV 128 | # 129 | # Updating examples 130 | # 131 | python ./scripts/update_examples.py 132 | # 133 | # Updating README.md 134 | # 135 | sed -i "s/skupper-operator.v${CUR_VERSION}/skupper-operator.v${NEW_VERSION}/g" README.md 136 | # 137 | # Updating bundle.Dockerfile 138 | # 139 | sed -i "s#COPY bundle/manifests/${CUR_VERSION}#COPY bundle/manifests/${NEW_VERSION}#g" bundle.Dockerfile 140 | # 141 | # Updating Makefile 142 | # 143 | sed -ri "s/^VERSION := .*/VERSION := v${NEW_VERSION}/g" Makefile 144 | 145 | echo 146 | cat << EOF 147 | Bundle has been updated locally! 148 | EOF 149 | -------------------------------------------------------------------------------- /scripts/index_update.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import yaml 4 | from datetime import datetime 5 | 6 | 7 | # reading params from env vars 8 | new_version=os.getenv("NEW_VERSION") 9 | replaces_version=os.getenv("REPLACES_VERSION") 10 | skip_versions_list=os.getenv("SKIP_VERSIONS") 11 | 12 | # defining env based variables 13 | new_version_name='skupper-operator.v' + new_version 14 | replaces_name = "skupper-operator.v" + replaces_version 15 | skip_versions=[] 16 | if skip_versions_list and len(skip_versions_list) > 0: 17 | for sv in skip_versions_list.split(","): 18 | skip_versions.append('skupper-operator.v' + sv) 19 | 20 | # loading catalog (yaml) file 21 | new_catalog_docs=list() 22 | with open(sys.argv[1], 'r') as f: 23 | catalog_docs = yaml.safe_load_all(f) 24 | 25 | for doc in catalog_docs: 26 | # remove (if any) and add a new entry for new version 27 | if doc['schema'] == 'olm.channel': 28 | entries = doc['entries'] 29 | new_entries = [] 30 | for entry in entries: 31 | print(entry['name']) 32 | if entry['name'] != new_version_name: 33 | new_entries.append(entry) 34 | new_entry = { 35 | 'name': new_version_name, 36 | 'replaces': replaces_name, 37 | } 38 | if len(skip_versions) > 0: 39 | new_entry['skips'] = skip_versions 40 | new_entries.append(new_entry) 41 | 42 | doc['entries'] = new_entries 43 | 44 | if doc['schema'] == 'olm.bundle' and doc['name'] == new_version_name: 45 | continue 46 | 47 | new_catalog_docs.append(doc) 48 | 49 | with open(sys.argv[1], 'w') as f: 50 | yaml.dump_all(new_catalog_docs, f, default_style=False, default_flow_style=False, canonical=False, line_break=None) 51 | -------------------------------------------------------------------------------- /scripts/operatorhub.sh: -------------------------------------------------------------------------------- 1 | set -euo pipefail 2 | 3 | echo 4 | echo "IMPORTANT" 5 | echo "Make sure you have sourced env.sh from correct branch of the skupper-operator repository" 6 | echo 7 | 8 | BRANCH=$(echo "${NEW_VERSION}" | sed -re 's/(.*)\.[0-9]+.*/\1/g') 9 | 10 | FAIL=0 11 | git remote -v > /dev/null 2>&1 | grep -Eq '/community-operators(-prod)*.git' || FAIL=1FAIL=1 12 | if [[ $? -ne 0 ]] || [[ ! -d .git/ ]]; then 13 | echo "You must run this script inside your fork of the Operator Hub or Community Operators repository's root dir" 14 | echo "Operator Hub : https://github.com/k8s-operatorhub/community-operators.git" 15 | echo "Community Operators: https://github.com/redhat-openshift-ecosystem/community-operators-prod.git" 16 | exit 1 17 | fi 18 | 19 | REPODIR=`pwd` 20 | cd ./operators/skupper-operator 21 | mkdir ${NEW_VERSION} 22 | cd ${NEW_VERSION} 23 | 24 | mkdir manifests metadata 25 | 26 | cd manifests 27 | wget https://raw.githubusercontent.com/skupperproject/skupper-operator/${BRANCH}/bundle/manifests/${NEW_VERSION}/skupper-operator.v${NEW_VERSION}.clusterserviceversion.yaml 28 | cd ../ 29 | cd metadata 30 | wget https://raw.githubusercontent.com/skupperproject/skupper-operator/${BRANCH}/bundle/metadata/annotations.yaml 31 | 32 | cd ${REPODIR} 33 | 34 | echo 35 | echo "Now commit your changes and make sure to sign your commit," 36 | echo "otherwise the PR will be rejected." 37 | echo 38 | echo "Open the PR and fill in the template." 39 | -------------------------------------------------------------------------------- /scripts/read_var.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | read_var() { 4 | 5 | VAR_NAME=$1; shift 6 | MESSAGE=$1; shift 7 | REQUIRED=$1; shift 8 | DEFAULT=$1; shift 9 | 10 | # If a set of choices has been provided 11 | if [[ -n $1 ]]; then 12 | CHOICES=( $* ) 13 | else 14 | CHOICES=() 15 | fi 16 | 17 | # Preparing default message 18 | DEFAULT_MSG=" [${DEFAULT}]" 19 | [[ -n ${DEFAULT} ]] && HAS_DEFAULT=true || HAS_DEFAULT=false 20 | 21 | # Save cursor and clear rest of screen 22 | tput sc 23 | tput ed 24 | while true; do 25 | # Write valid choices 26 | if [[ ${#CHOICES[@]} -gt 0 ]]; then 27 | tput el 28 | tput cud 1 29 | tput el 30 | echo "Valid options: [${CHOICES[@]}]" 31 | tput cuu 2 32 | fi 33 | 34 | tput el 35 | echo -n "${MESSAGE}${DEFAULT_MSG}: " 36 | read value 37 | [[ -z ${value} && -n ${DEFAULT} ]] && value=${DEFAULT} 38 | 39 | # Value is empty but marked as required 40 | if [[ -z "${value}" && "${REQUIRED}" = "true" ]]; then 41 | tput el 42 | echo "You must provide a value (press ENTER to try again)" 43 | read 44 | tput rc 45 | tput ed 46 | continue 47 | fi 48 | 49 | # If choices provided, validate 50 | if [[ ${#CHOICES[@]} -gt 0 ]]; then 51 | found=false 52 | for choice in ${CHOICES[@]}; do 53 | if [[ ${choice} == ${value} ]]; then 54 | found=true 55 | break 56 | fi 57 | done 58 | tput el 59 | if [[ ${found} == false ]]; then 60 | echo "Invalid choice (press ENTER to try again)" 61 | read 62 | tput rc 63 | tput ed 64 | continue 65 | fi 66 | fi 67 | 68 | # All good 69 | eval $VAR_NAME=\"${value}\" 70 | break 71 | 72 | done 73 | 74 | } 75 | 76 | -------------------------------------------------------------------------------- /scripts/update_csv.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import yaml 4 | from datetime import datetime 5 | 6 | 7 | # reading params from env vars 8 | newversion=os.getenv("NEW_VERSION") 9 | curversion=os.getenv("CUR_VERSION") 10 | replacesversion=os.getenv("REPLACES_VERSION") 11 | newxy=".".join(newversion.split(".")[:2]) 12 | oldxy=".".join(replacesversion.split(".")[:2]) 13 | routersha=os.getenv("SKUPPER_ROUTER_SHA") 14 | sitecontrollersha=os.getenv("SITE_CONTROLLER_SHA") 15 | servicecontrollersha=os.getenv("SERVICE_CONTROLLER_SHA") 16 | configsyncsha=os.getenv("CONFIG_SYNC_SHA") 17 | flowcollectorsha=os.getenv("FLOW_COLLECTOR_SHA") 18 | prometheussha=os.getenv("PROMETHEUS_SHA") 19 | oauthproxysha=os.getenv("OAUTH_PROXY_SHA") 20 | skipversionslist=os.getenv("SKIP_VERSIONS") 21 | skipversions=[] 22 | if skipversionslist and len(skipversionslist) > 0: 23 | skipversions = skipversionslist.split(",") 24 | 25 | # loading CSV (yaml) file 26 | with open(sys.argv[1], 'r') as f: 27 | csv = yaml.safe_load(f) 28 | 29 | # 30 | # facts to be used in the csv 31 | # 32 | replacesname = "skupper-operator.v" + replacesversion 33 | csvname = csv['metadata']['name'].replace(curversion, newversion) 34 | 35 | # update csv name 36 | csv['metadata']['name'] = csvname 37 | 38 | # updating bundle image version 39 | csv['metadata']['annotations']['createdAt'] = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ') 40 | csv['metadata']['annotations']['containerImage'] = sitecontrollersha 41 | try: 42 | del(csv['metadata']['annotations']['olm.skipRange']) 43 | except: 44 | pass 45 | if newxy != oldxy: 46 | csv['metadata']['annotations']['olm.skipRange'] = ">%s <%s" %(replacesversion, newversion) 47 | 48 | # spec version 49 | csv['spec']['version'] = newversion 50 | 51 | # updating site-controller container image 52 | csv['spec']['install']['spec']['deployments'][0]['spec']['template']['spec']['containers'][0]['image'] = sitecontrollersha 53 | 54 | # updating images for environment variables 55 | for envvar in csv['spec']['install']['spec']['deployments'][0]['spec']['template']['spec']['containers'][0]['env']: 56 | if envvar['name'] == "QDROUTERD_IMAGE": 57 | envvar['value'] = routersha 58 | elif envvar['name'] == "SKUPPER_SERVICE_CONTROLLER_IMAGE": 59 | envvar['value'] = servicecontrollersha 60 | elif envvar['name'] == "SKUPPER_SITE_CONTROLLER_IMAGE": 61 | envvar['value'] = sitecontrollersha 62 | elif envvar['name'] == "SKUPPER_CONFIG_SYNC_IMAGE": 63 | envvar['value'] = configsyncsha 64 | elif envvar['name'] == "SKUPPER_FLOW_COLLECTOR_IMAGE": 65 | envvar['value'] = flowcollectorsha 66 | elif envvar['name'] == "PROMETHEUS_SERVER_IMAGE": 67 | envvar['value'] = prometheussha 68 | elif envvar['name'] == "OAUTH_PROXY_IMAGE": 69 | envvar['value'] = oauthproxysha 70 | 71 | # updating related images section 72 | csv['spec']['relatedImages'] = [{ 73 | 'name': 'skupper-site-controller', 74 | 'image': sitecontrollersha, 75 | }, { 76 | 'name': 'skupper-router', 77 | 'image': routersha, 78 | }, { 79 | 'name': 'skupper-service-controller', 80 | 'image': servicecontrollersha, 81 | }, { 82 | 'name': 'skupper-config-sync', 83 | 'image': configsyncsha, 84 | }, { 85 | 'name': 'skupper-flow-collector', 86 | 'image': flowcollectorsha, 87 | }, { 88 | 'name': 'ose-prometheus', 89 | 'image': prometheussha, 90 | }, { 91 | 'name': 'ose-oauth-proxy', 92 | 'image': oauthproxysha, 93 | }] 94 | 95 | # updating spec replaces value 96 | csv['spec']['replaces'] = replacesname 97 | 98 | # adding skipped versions (if any) 99 | if len(skipversions) > 0: 100 | if not 'skips' in csv['spec']: 101 | csv['spec']['skips'] = [] 102 | for ver in skipversions: 103 | skipname = csvname.replace(newversion, ver) 104 | csv['spec']['skips'].append(skipname) 105 | 106 | # 107 | # literal_unicode and literal_unicode_presenter are used to render 108 | # blocks using | literal 109 | # 110 | class literal_unicode(str): pass 111 | 112 | def literal_unicode_representer(dumper, data): 113 | return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='|') 114 | 115 | yaml.add_representer(literal_unicode, literal_unicode_representer) 116 | 117 | # rendering description using literal block 118 | csv['spec']['description'] = literal_unicode(csv['spec']['description']) 119 | 120 | # saving YAML file 121 | with open(sys.argv[1], 'w') as f: 122 | yaml.dump(csv, f, default_style=False, default_flow_style=False, canonical=False, line_break=None) 123 | -------------------------------------------------------------------------------- /scripts/update_examples.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import yaml 4 | from datetime import datetime 5 | 6 | 7 | # reading params from env vars 8 | newversion=os.getenv("NEW_VERSION") 9 | 10 | # 11 | # facts to be used in the csv 12 | # 13 | indeximage = "quay.io/skupper/skupper-operator-index:v" + newversion 14 | startingCSV = "skupper-operator.v" + newversion 15 | 16 | # 17 | # updating catalog sources 18 | # 19 | csfiles = ['examples/k8s/00-cs.yaml', 'examples/ocp/00-cs.yaml'] 20 | for csf in csfiles: 21 | # loading catalogsource (yaml) file 22 | with open(csf, 'r') as f: 23 | cs = yaml.safe_load(f) 24 | cs['spec']['image'] = indeximage 25 | # saving YAML file 26 | with open(csf, 'w') as f: 27 | yaml.dump(cs, f, default_style=False, default_flow_style=False, canonical=False, line_break=None) 28 | 29 | # 30 | # updating subscriptions 31 | # 32 | subfiles = [ 33 | 'examples/k8s/20-sub-cluster-wide.yaml', 34 | 'examples/k8s/20-sub.yaml', 35 | 'examples/ocp/20-sub-cluster-wide.yaml', 36 | 'examples/ocp/20-sub.yaml' 37 | ] 38 | for subf in subfiles: 39 | # loading subscription (yaml) file 40 | with open(subf, 'r') as f: 41 | sub = yaml.safe_load(f) 42 | sub['spec']['startingCSV'] = startingCSV 43 | # saving YAML file 44 | with open(subf, 'w') as f: 45 | yaml.dump(sub, f, default_style=False, default_flow_style=False, canonical=False, line_break=None) 46 | -------------------------------------------------------------------------------- /scripts/vars.sh: -------------------------------------------------------------------------------- 1 | # Variables that are considered required when interactive mode is false 2 | REQUIRED_VARS=(NEW_VERSION CUR_VERSION SKUPPER_ROUTER_TAG SKUPPER_CONTROL_TAG) 3 | 4 | # The new version being defined, i.e.: 1.4.0 5 | export NEW_VERSION="${NEW_VERSION:-}" 6 | # The current version to be replaced, i.e.: 1.3.0 7 | export CUR_VERSION="${CUR_VERSION:-}" 8 | # The tag to be used for the skupper-router image 9 | export SKUPPER_ROUTER_TAG="${SKUPPER_ROUTER_TAG:-}" 10 | # The tag to be used for the control plane images: 11 | # site-controller, service-controller, config-sync, flow-collector 12 | export SKUPPER_CONTROL_TAG="${SKUPPER_CONTROL_TAG:-}" 13 | # Comma separated list of versions to be skipped (optional) 14 | # example: 15 | # SKIP_VERSIONS="1.4.0-rc2,1.4.0-rc3" 16 | if [[ ${#SKIP_VERSIONS} -eq 0 ]]; then 17 | export SKIP_VERSIONS="" 18 | fi 19 | -------------------------------------------------------------------------------- /skupper-operator-index.Dockerfile: -------------------------------------------------------------------------------- 1 | # The base image is expected to contain 2 | # /bin/opm (with a serve subcommand) and /bin/grpc_health_probe 3 | FROM quay.io/operator-framework/opm:latest 4 | 5 | # Configure the entrypoint and command 6 | ENTRYPOINT ["/bin/opm"] 7 | CMD ["serve", "/configs", "--cache-dir=/tmp/cache"] 8 | 9 | # Copy declarative config root into image at /configs and pre-populate serve cache 10 | ADD skupper-operator-index /configs 11 | RUN ["/bin/opm", "serve", "/configs", "--cache-dir=/tmp/cache", "--cache-only"] 12 | 13 | # Set DC-specific label for the location of the DC root directory 14 | # in the image 15 | LABEL operators.operatorframework.io.index.configs.v1=/configs 16 | --------------------------------------------------------------------------------