Bug 1714945
| Summary: | Should deny create the `same` subscription in the same namespace | |||
|---|---|---|---|---|
| Product: | OpenShift Container Platform | Reporter: | Jian Zhang <jiazha> | |
| Component: | OLM | Assignee: | Evan Cordell <ecordell> | |
| OLM sub component: | OLM | QA Contact: | Jian Zhang <jiazha> | |
| Status: | CLOSED WONTFIX | Docs Contact: | ||
| Severity: | medium | |||
| Priority: | medium | CC: | bandrade, chezhang, chuo, dyan, eparis, jfan, scolange | |
| Version: | 4.1.0 | Keywords: | Reopened | |
| Target Milestone: | --- | |||
| Target Release: | 4.1.z | |||
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | Doc Type: | If docs needed, set a value | ||
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1746194 (view as bug list) | Environment: | ||
| Last Closed: | 2019-09-20 20:56:24 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | 1746194 | |||
| Bug Blocks: | ||||
This does not appear to be an issue anymore.
I created an etcd subscription in openshift-operators, etcd installed as expected.
Then I created an etcd-2 subscription in openshift-operators, with the same package and channel, and it got this status:
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
creationTimestamp: '2019-08-08T12:03:09Z'
generation: 1
name: etcd-2
namespace: openshift-operators
resourceVersion: '20524'
selfLink: >-
/apis/operators.coreos.com/v1alpha1/namespaces/openshift-operators/subscriptions/etcd-2
uid: 7d54ae18-b9d4-11e9-be47-0a850cdd866a
spec:
channel: clusterwide-alpha
installPlanApproval: Automatic
name: etcd
source: community-operators
sourceNamespace: openshift-marketplace
startingCSV: etcdoperator.v0.9.4-clusterwide
status:
catalogHealth:
- catalogSourceRef:
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
name: certified-operators
namespace: openshift-marketplace
resourceVersion: '11562'
uid: f9e46fb8-b9d0-11e9-9e0b-121f04ce79f4
healthy: true
lastUpdated: '2019-08-08T12:03:09Z'
- catalogSourceRef:
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
name: community-operators
namespace: openshift-marketplace
resourceVersion: '12274'
uid: facb94e8-b9d0-11e9-9e0b-121f04ce79f4
healthy: true
lastUpdated: '2019-08-08T12:03:09Z'
- catalogSourceRef:
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
name: redhat-operators
namespace: openshift-marketplace
resourceVersion: '11765'
uid: f9583ae6-b9d0-11e9-9e0b-121f04ce79f4
healthy: true
lastUpdated: '2019-08-08T12:03:09Z'
conditions:
- lastTransitionTime: '2019-08-08T12:03:09Z'
message: all available catalogsources are healthy
reason: AllCatalogSourcesHealthy
status: 'False'
type: CatalogSourcesUnhealthy
currentCSV: etcdoperator.v0.9.4-clusterwide
installPlanRef:
apiVersion: operators.coreos.com/v1alpha1
kind: InstallPlan
name: install-mnp9n
namespace: openshift-operators
resourceVersion: '20475'
uid: d86197cb-b9d3-11e9-be47-0a850cdd866a
installedCSV: etcdoperator.v0.9.4-clusterwide
installplan:
apiVersion: operators.coreos.com/v1alpha1
kind: InstallPlan
name: install-mnp9n
uuid: d86197cb-b9d3-11e9-be47-0a850cdd866a
lastUpdated: '2019-08-08T12:03:14Z'
state: AtLatestKnown
Then I looked at its installplan, which looks like this:
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
annotations:
tectonic-visibility: ocs
olm.targetNamespaces: ''
repository: 'https://github.com/coreos/etcd-operator'
alm-examples: |
[
{
"apiVersion": "etcd.database.coreos.com/v1beta2",
"kind": "EtcdCluster",
"metadata": {
"name": "example",
"annotations": {
"etcd.database.coreos.com/scope": "clusterwide"
}
},
"spec": {
"size": 3,
"version": "3.2.13"
}
},
{
"apiVersion": "etcd.database.coreos.com/v1beta2",
"kind": "EtcdRestore",
"metadata": {
"name": "example-etcd-cluster-restore"
},
"spec": {
"etcdCluster": {
"name": "example-etcd-cluster"
},
"backupStorageType": "S3",
"s3": {
"path": "<full-s3-path>",
"awsSecret": "<aws-secret>"
}
}
},
{
"apiVersion": "etcd.database.coreos.com/v1beta2",
"kind": "EtcdBackup",
"metadata": {
"name": "example-etcd-cluster-backup"
},
"spec": {
"etcdEndpoints": ["<etcd-cluster-endpoints>"],
"storageType":"S3",
"s3": {
"path": "<full-s3-path>",
"awsSecret": "<aws-secret>"
}
}
}
]
capabilities: Full Lifecycle
olm.operatorNamespace: openshift-operators
containerImage: >-
quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21087a98b93838e284a6086b13917f96b0d9b
createdAt: '2019-02-28 01:03:00'
categories: Database
description: Create and maintain highly-available etcd clusters on Kubernetes
olm.operatorGroup: global-operators
selfLink: >-
/apis/operators.coreos.com/v1alpha1/namespaces/openshift-operators/clusterserviceversions/etcdoperator.v0.9.4-clusterwide
resourceVersion: '18485'
name: etcdoperator.v0.9.4-clusterwide
uid: d8b9929f-b9d3-11e9-be47-0a850cdd866a
creationTimestamp: '2019-08-08T11:58:33Z'
generation: 1
namespace: openshift-operators
labels:
olm.api.2c1e6f7e17c07035: provided
olm.api.2fdc3540750c4d2b: provided
olm.api.c571d720f17289d3: provided
spec:
customresourcedefinitions:
owned:
- description: Represents a cluster of etcd nodes.
displayName: etcd Cluster
kind: EtcdCluster
name: etcdclusters.etcd.database.coreos.com
resources:
- kind: Service
name: ''
version: v1
- kind: Pod
name: ''
version: v1
specDescriptors:
- description: The desired number of member Pods for the etcd cluster.
displayName: Size
path: size
x-descriptors:
- 'urn:alm:descriptor:com.tectonic.ui:podCount'
- description: >-
Limits describes the minimum/maximum amount of compute resources
required/allowed
displayName: Resource Requirements
path: pod.resources
x-descriptors:
- 'urn:alm:descriptor:com.tectonic.ui:resourceRequirements'
statusDescriptors:
- description: The status of each of the member Pods for the etcd cluster.
displayName: Member Status
path: members
x-descriptors:
- 'urn:alm:descriptor:com.tectonic.ui:podStatuses'
- description: The service at which the running etcd cluster can be accessed.
displayName: Service
path: serviceName
x-descriptors:
- 'urn:alm:descriptor:io.kubernetes:Service'
- description: The current size of the etcd cluster.
displayName: Cluster Size
path: size
- description: The current version of the etcd cluster.
displayName: Current Version
path: currentVersion
- description: 'The target version of the etcd cluster, after upgrading.'
displayName: Target Version
path: targetVersion
- description: The current status of the etcd cluster.
displayName: Status
path: phase
x-descriptors:
- 'urn:alm:descriptor:io.kubernetes.phase'
- description: Explanation for the current status of the cluster.
displayName: Status Details
path: reason
x-descriptors:
- 'urn:alm:descriptor:io.kubernetes.phase:reason'
version: v1beta2
- description: Represents the intent to backup an etcd cluster.
displayName: etcd Backup
kind: EtcdBackup
name: etcdbackups.etcd.database.coreos.com
specDescriptors:
- description: Specifies the endpoints of an etcd cluster.
displayName: etcd Endpoint(s)
path: etcdEndpoints
x-descriptors:
- 'urn:alm:descriptor:etcd:endpoint'
- description: The full AWS S3 path where the backup is saved.
displayName: S3 Path
path: s3.path
x-descriptors:
- 'urn:alm:descriptor:aws:s3:path'
- description: >-
The name of the secret object that stores the AWS credential and
config files.
displayName: AWS Secret
path: s3.awsSecret
x-descriptors:
- 'urn:alm:descriptor:io.kubernetes:Secret'
statusDescriptors:
- description: Indicates if the backup was successful.
displayName: Succeeded
path: succeeded
x-descriptors:
- 'urn:alm:descriptor:text'
- description: Indicates the reason for any backup related failures.
displayName: Reason
path: reason
x-descriptors:
- 'urn:alm:descriptor:io.kubernetes.phase:reason'
version: v1beta2
- description: Represents the intent to restore an etcd cluster from a backup.
displayName: etcd Restore
kind: EtcdRestore
name: etcdrestores.etcd.database.coreos.com
specDescriptors:
- description: 'References the EtcdCluster which should be restored,'
displayName: etcd Cluster
path: etcdCluster.name
x-descriptors:
- 'urn:alm:descriptor:io.kubernetes:EtcdCluster'
- 'urn:alm:descriptor:text'
- description: The full AWS S3 path where the backup is saved.
displayName: S3 Path
path: s3.path
x-descriptors:
- 'urn:alm:descriptor:aws:s3:path'
- description: >-
The name of the secret object that stores the AWS credential and
config files.
displayName: AWS Secret
path: s3.awsSecret
x-descriptors:
- 'urn:alm:descriptor:io.kubernetes:Secret'
statusDescriptors:
- description: Indicates if the restore was successful.
displayName: Succeeded
path: succeeded
x-descriptors:
- 'urn:alm:descriptor:text'
- description: Indicates the reason for any restore related failures.
displayName: Reason
path: reason
x-descriptors:
- 'urn:alm:descriptor:io.kubernetes.phase:reason'
version: v1beta2
apiservicedefinitions: {}
keywords:
- etcd
- key value
- database
- coreos
- open source
displayName: etcd
provider:
name: CNCF
maturity: alpha
installModes:
- supported: true
type: OwnNamespace
- supported: false
type: SingleNamespace
- supported: false
type: MultiNamespace
- supported: true
type: AllNamespaces
version: 0.9.4-clusterwide
icon:
- base64data: >-
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
mediatype: image/png
links:
- name: Blog
url: 'https://coreos.com/etcd'
- name: Documentation
url: 'https://coreos.com/operators/etcd/docs/latest/'
- name: etcd Operator Source Code
url: 'https://github.com/coreos/etcd-operator'
install:
spec:
clusterPermissions:
- rules:
- apiGroups:
- etcd.database.coreos.com
resources:
- etcdclusters
- etcdbackups
- etcdrestores
verbs:
- '*'
- apiGroups:
- ''
resources:
- pods
- services
- endpoints
- persistentvolumeclaims
- events
verbs:
- '*'
- apiGroups:
- apps
resources:
- deployments
verbs:
- '*'
- apiGroups:
- ''
resources:
- secrets
verbs:
- get
serviceAccountName: etcd-operator
deployments:
- name: etcd-operator
spec:
replicas: 1
selector:
matchLabels:
name: etcd-operator-alm-owned
template:
metadata:
labels:
name: etcd-operator-alm-owned
name: etcd-operator-alm-owned
spec:
containers:
- command:
- etcd-operator
- '--create-crd=false'
- '-cluster-wide'
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
image: >-
quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21087a98b93838e284a6086b13917f96b0d9b
name: etcd-operator
- command:
- etcd-backup-operator
- '--create-crd=false'
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
image: >-
quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21087a98b93838e284a6086b13917f96b0d9b
name: etcd-backup-operator
- command:
- etcd-restore-operator
- '--create-crd=false'
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
image: >-
quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21087a98b93838e284a6086b13917f96b0d9b
name: etcd-restore-operator
serviceAccountName: etcd-operator
strategy: deployment
maintainers:
- email: etcd-dev
name: etcd Community
description: >
The etcd Operater creates and maintains highly-available etcd clusters on
Kubernetes, allowing engineers to easily deploy and manage etcd clusters for
their applications.
etcd is a distributed key value store that provides a reliable way to store
data across a cluster of machines. It’s open-source and available on GitHub.
etcd gracefully handles leader elections during network partitions and will
tolerate machine failure, including the leader.
### Reading and writing to etcd
Communicate with etcd though its command line utility `etcdctl` via port
forwarding:
$ kubectl --namespace default port-forward service/example-client 2379:2379
$ etcdctl --endpoints http://127.0.0.1:2379 get /
Or directly to the API using the automatically generated Kubernetes Service:
$ etcdctl --endpoints http://example-client.default.svc:2379 get /
Be sure to secure your etcd cluster (see Common Configurations) before
exposing it outside of the namespace or cluster.
### Supported Features
* **High availability** - Multiple instances of etcd are networked together
and secured. Individual failures or networking issues are transparently
handled to keep your cluster up and running.
* **Automated updates** - Rolling out a new etcd version works like all
Kubernetes rolling updates. Simply declare the desired version, and the etcd
service starts a safe rolling update to the new version automatically.
* **Backups included** - Create etcd backups and restore them through the
etcd Operator.
### Common Configurations
* **Configure TLS** - Specify [static TLS
certs](https://github.com/coreos/etcd-operator/blob/master/doc/user/cluster_tls.md)
as Kubernetes secrets.
* **Set Node Selector and Affinity** - [Spread your etcd
Pods](https://github.com/coreos/etcd-operator/blob/master/doc/user/spec_examples.md#three-member-cluster-with-node-selector-and-anti-affinity-across-nodes)
across Nodes and availability zones.
* **Set Resource Limits** - [Set the Kubernetes limit and
request](https://github.com/coreos/etcd-operator/blob/master/doc/user/spec_examples.md#three-member-cluster-with-resource-requirement)
values for your etcd Pods.
* **Customize Storage** - [Set a custom
StorageClass](https://github.com/coreos/etcd-operator/blob/master/doc/user/spec_examples.md#custom-persistentvolumeclaim-definition)
that you would like to use.
replaces: etcdoperator.v0.9.2-clusterwide
selector:
matchLabels:
alm-owner-etcd: etcdoperator
operated-by: etcdoperator
labels:
alm-owner-etcd: etcdoperator
operated-by: etcdoperator
status:
reason: InstallSucceeded
message: install strategy completed with no errors
lastUpdateTime: '2019-08-08T11:58:41Z'
requirementStatus:
- group: operators.coreos.com
kind: ClusterServiceVersion
message: CSV missing minimum kube version specification
name: etcdoperator.v0.9.4-clusterwide
status: NotPresent
version: v1alpha1
- group: apiextensions.k8s.io
kind: CustomResourceDefinition
message: CRD is present and Established condition is true
name: etcdbackups.etcd.database.coreos.com
status: Present
uuid: d8bb25c5-b9d3-11e9-be47-0a850cdd866a
version: v1beta1
- group: apiextensions.k8s.io
kind: CustomResourceDefinition
message: CRD is present and Established condition is true
name: etcdclusters.etcd.database.coreos.com
status: Present
uuid: d8bc72ee-b9d3-11e9-be47-0a850cdd866a
version: v1beta1
- group: apiextensions.k8s.io
kind: CustomResourceDefinition
message: CRD is present and Established condition is true
name: etcdrestores.etcd.database.coreos.com
status: Present
uuid: d8be9c1a-b9d3-11e9-be47-0a850cdd866a
version: v1beta1
- dependents:
- group: rbac.authorization.k8s.io
kind: PolicyRule
message: >-
cluster
rule:{"verbs":["*"],"apiGroups":["etcd.database.coreos.com"],"resources":["etcdclusters","etcdbackups","etcdrestores"]}
status: Satisfied
version: v1beta1
- group: rbac.authorization.k8s.io
kind: PolicyRule
message: >-
cluster
rule:{"verbs":["*"],"apiGroups":[""],"resources":["pods","services","endpoints","persistentvolumeclaims","events"]}
status: Satisfied
version: v1beta1
- group: rbac.authorization.k8s.io
kind: PolicyRule
message: >-
cluster
rule:{"verbs":["*"],"apiGroups":["apps"],"resources":["deployments"]}
status: Satisfied
version: v1beta1
- group: rbac.authorization.k8s.io
kind: PolicyRule
message: >-
cluster
rule:{"verbs":["get"],"apiGroups":[""],"resources":["secrets"]}
status: Satisfied
version: v1beta1
group: ''
kind: ServiceAccount
message: ''
name: etcd-operator
status: Present
version: v1
certsLastUpdated: null
lastTransitionTime: '2019-08-08T11:58:41Z'
conditions:
- lastTransitionTime: '2019-08-08T11:58:33Z'
lastUpdateTime: '2019-08-08T11:58:33Z'
message: requirements not yet checked
phase: Pending
reason: RequirementsUnknown
- lastTransitionTime: '2019-08-08T11:58:33Z'
lastUpdateTime: '2019-08-08T11:58:33Z'
message: 'all requirements found, attempting install'
phase: InstallReady
reason: AllRequirementsMet
- lastTransitionTime: '2019-08-08T11:58:33Z'
lastUpdateTime: '2019-08-08T11:58:33Z'
message: waiting for install components to report healthy
phase: Installing
reason: InstallSucceeded
- lastTransitionTime: '2019-08-08T11:58:33Z'
lastUpdateTime: '2019-08-08T11:58:35Z'
message: >
installing: Waiting: waiting for deployment etcd-operator to become
ready: Waiting for rollout to finish: 0 of 1 updated replicas are
available...
phase: Installing
reason: InstallWaiting
- lastTransitionTime: '2019-08-08T11:58:41Z'
lastUpdateTime: '2019-08-08T11:58:41Z'
message: install strategy completed with no errors
phase: Succeeded
reason: InstallSucceeded
phase: Succeeded
certsRotateAt: null
Which looks fine
Wrong yaml, this is the installplan:
apiVersion: operators.coreos.com/v1alpha1
kind: InstallPlan
metadata:
generateName: install-
selfLink: >-
/apis/operators.coreos.com/v1alpha1/namespaces/openshift-operators/installplans/install-mnp9n
resourceVersion: '20511'
name: install-mnp9n
uid: d86197cb-b9d3-11e9-be47-0a850cdd866a
creationTimestamp: '2019-08-08T11:58:33Z'
generation: 1
namespace: openshift-operators
ownerReferences:
- apiVersion: operators.coreos.com/v1alpha1
blockOwnerDeletion: false
controller: false
kind: Subscription
name: etcd
uid: d859fd16-b9d3-11e9-be47-0a850cdd866a
- apiVersion: operators.coreos.com/v1alpha1
blockOwnerDeletion: false
controller: false
kind: Subscription
name: etcd-2
uid: 7d54ae18-b9d4-11e9-be47-0a850cdd866a
spec:
approval: Automatic
approved: true
clusterServiceVersionNames:
- etcdoperator.v0.9.4-clusterwide
source: ''
sourceNamespace: ''
status:
catalogSources:
- community-operators
conditions:
- lastTransitionTime: '2019-08-08T11:58:33Z'
lastUpdateTime: '2019-08-08T12:03:10Z'
status: 'True'
type: Installed
phase: Complete
plan:
- resolving: etcdoperator.v0.9.4-clusterwide
resource:
group: operators.coreos.com
kind: ClusterServiceVersion
manifest: >
{"kind":"ClusterServiceVersion","apiVersion":"operators.coreos.com/v1alpha1","metadata":{"name":"etcdoperator.v0.9.4-clusterwide","namespace":"openshift-operators","creationTimestamp":null,"annotations":{"alm-examples":"[\n
{\n \"apiVersion\": \"etcd.database.coreos.com/v1beta2\",\n
\"kind\": \"EtcdCluster\",\n \"metadata\": {\n \"name\":
\"example\",\n \"annotations\": {\n
\"etcd.database.coreos.com/scope\": \"clusterwide\"\n }\n
},\n \"spec\": {\n \"size\": 3,\n \"version\":
\"3.2.13\"\n }\n },\n {\n \"apiVersion\":
\"etcd.database.coreos.com/v1beta2\",\n \"kind\":
\"EtcdRestore\",\n \"metadata\": {\n \"name\":
\"example-etcd-cluster-restore\"\n },\n \"spec\": {\n
\"etcdCluster\": {\n \"name\": \"example-etcd-cluster\"\n
},\n \"backupStorageType\": \"S3\",\n \"s3\": {\n
\"path\": \"\u003cfull-s3-path\u003e\",\n \"awsSecret\":
\"\u003caws-secret\u003e\"\n }\n }\n },\n {\n
\"apiVersion\": \"etcd.database.coreos.com/v1beta2\",\n \"kind\":
\"EtcdBackup\",\n \"metadata\": {\n \"name\":
\"example-etcd-cluster-backup\"\n },\n \"spec\": {\n
\"etcdEndpoints\": [\"\u003cetcd-cluster-endpoints\u003e\"],\n
\"storageType\":\"S3\",\n \"s3\": {\n \"path\":
\"\u003cfull-s3-path\u003e\",\n \"awsSecret\":
\"\u003caws-secret\u003e\"\n }\n }\n
}\n]\n","capabilities":"Full
Lifecycle","categories":"Database","containerImage":"quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21087a98b93838e284a6086b13917f96b0d9b","createdAt":"2019-02-28
01:03:00","description":"Create and maintain highly-available etcd
clusters on
Kubernetes","repository":"https://github.com/coreos/etcd-operator","tectonic-visibility":"ocs"}},"spec":{"install":{"strategy":"deployment","spec":{"clusterPermissions":[{"rules":[{"apiGroups":["etcd.database.coreos.com"],"resources":["etcdclusters","etcdbackups","etcdrestores"],"verbs":["*"]},{"apiGroups":[""],"resources":["pods","services","endpoints","persistentvolumeclaims","events"],"verbs":["*"]},{"apiGroups":["apps"],"resources":["deployments"],"verbs":["*"]},{"apiGroups":[""],"resources":["secrets"],"verbs":["get"]}],"serviceAccountName":"etcd-operator"}],"deployments":[{"name":"etcd-operator","spec":{"replicas":1,"selector":{"matchLabels":{"name":"etcd-operator-alm-owned"}},"template":{"metadata":{"labels":{"name":"etcd-operator-alm-owned"},"name":"etcd-operator-alm-owned"},"spec":{"containers":[{"command":["etcd-operator","--create-crd=false","-cluster-wide"],"env":[{"name":"MY_POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}},{"name":"MY_POD_NAME","valueFrom":{"fieldRef":{"fieldPath":"metadata.name"}}}],"image":"quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21087a98b93838e284a6086b13917f96b0d9b","name":"etcd-operator"},{"command":["etcd-backup-operator","--create-crd=false"],"env":[{"name":"MY_POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}},{"name":"MY_POD_NAME","valueFrom":{"fieldRef":{"fieldPath":"metadata.name"}}}],"image":"quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21087a98b93838e284a6086b13917f96b0d9b","name":"etcd-backup-operator"},{"command":["etcd-restore-operator","--create-crd=false"],"env":[{"name":"MY_POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}},{"name":"MY_POD_NAME","valueFrom":{"fieldRef":{"fieldPath":"metadata.name"}}}],"image":"quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21087a98b93838e284a6086b13917f96b0d9b","name":"etcd-restore-operator"}],"serviceAccountName":"etcd-operator"}}}}]}},"version":"0.9.4-clusterwide","maturity":"alpha","customresourcedefinitions":{"owned":[{"name":"etcdclusters.etcd.database.coreos.com","version":"v1beta2","kind":"EtcdCluster","displayName":"etcd
Cluster","description":"Represents a cluster of etcd
nodes.","resources":[{"name":"","kind":"Service","version":"v1"},{"name":"","kind":"Pod","version":"v1"}],"statusDescriptors":[{"path":"members","displayName":"Member
Status","description":"The status of each of the member Pods for the
etcd
cluster.","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]},{"path":"serviceName","displayName":"Service","description":"The
service at which the running etcd cluster can be
accessed.","x-descriptors":["urn:alm:descriptor:io.kubernetes:Service"]},{"path":"size","displayName":"Cluster
Size","description":"The current size of the etcd
cluster."},{"path":"currentVersion","displayName":"Current
Version","description":"The current version of the etcd
cluster."},{"path":"targetVersion","displayName":"Target
Version","description":"The target version of the etcd cluster, after
upgrading."},{"path":"phase","displayName":"Status","description":"The
current status of the etcd
cluster.","x-descriptors":["urn:alm:descriptor:io.kubernetes.phase"]},{"path":"reason","displayName":"Status
Details","description":"Explanation for the current status of the
cluster.","x-descriptors":["urn:alm:descriptor:io.kubernetes.phase:reason"]}],"specDescriptors":[{"path":"size","displayName":"Size","description":"The
desired number of member Pods for the etcd
cluster.","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podCount"]},{"path":"pod.resources","displayName":"Resource
Requirements","description":"Limits describes the minimum/maximum
amount of compute resources
required/allowed","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:resourceRequirements"]}]},{"name":"etcdbackups.etcd.database.coreos.com","version":"v1beta2","kind":"EtcdBackup","displayName":"etcd
Backup","description":"Represents the intent to backup an etcd
cluster.","statusDescriptors":[{"path":"succeeded","displayName":"Succeeded","description":"Indicates
if the backup was
successful.","x-descriptors":["urn:alm:descriptor:text"]},{"path":"reason","displayName":"Reason","description":"Indicates
the reason for any backup related
failures.","x-descriptors":["urn:alm:descriptor:io.kubernetes.phase:reason"]}],"specDescriptors":[{"path":"etcdEndpoints","displayName":"etcd
Endpoint(s)","description":"Specifies the endpoints of an etcd
cluster.","x-descriptors":["urn:alm:descriptor:etcd:endpoint"]},{"path":"s3.path","displayName":"S3
Path","description":"The full AWS S3 path where the backup is
saved.","x-descriptors":["urn:alm:descriptor:aws:s3:path"]},{"path":"s3.awsSecret","displayName":"AWS
Secret","description":"The name of the secret object that stores the
AWS credential and config
files.","x-descriptors":["urn:alm:descriptor:io.kubernetes:Secret"]}]},{"name":"etcdrestores.etcd.database.coreos.com","version":"v1beta2","kind":"EtcdRestore","displayName":"etcd
Restore","description":"Represents the intent to restore an etcd
cluster from a
backup.","statusDescriptors":[{"path":"succeeded","displayName":"Succeeded","description":"Indicates
if the restore was
successful.","x-descriptors":["urn:alm:descriptor:text"]},{"path":"reason","displayName":"Reason","description":"Indicates
the reason for any restore related
failures.","x-descriptors":["urn:alm:descriptor:io.kubernetes.phase:reason"]}],"specDescriptors":[{"path":"etcdCluster.name","displayName":"etcd
Cluster","description":"References the EtcdCluster which should be
restored,","x-descriptors":["urn:alm:descriptor:io.kubernetes:EtcdCluster","urn:alm:descriptor:text"]},{"path":"s3.path","displayName":"S3
Path","description":"The full AWS S3 path where the backup is
saved.","x-descriptors":["urn:alm:descriptor:aws:s3:path"]},{"path":"s3.awsSecret","displayName":"AWS
Secret","description":"The name of the secret object that stores the
AWS credential and config
files.","x-descriptors":["urn:alm:descriptor:io.kubernetes:Secret"]}]}]},"apiservicedefinitions":{},"displayName":"etcd","description":"The
etcd Operater creates and maintains highly-available etcd clusters on
Kubernetes, allowing engineers to easily deploy and manage etcd
clusters for their applications.\n\netcd is a distributed key value
store that provides a reliable way to store data across a cluster of
machines. It’s open-source and available on GitHub. etcd gracefully
handles leader elections during network partitions and will tolerate
machine failure, including the leader.\n\n\n### Reading and writing to
etcd\n\nCommunicate with etcd though its command line utility
`etcdctl` via port forwarding:\n\n $ kubectl --namespace default
port-forward service/example-client 2379:2379\n $ etcdctl
--endpoints http://127.0.0.1:2379 get /\n\nOr directly to the API
using the automatically generated Kubernetes Service:\n\n $ etcdctl
--endpoints http://example-client.default.svc:2379 get /\n\nBe sure to
secure your etcd cluster (see Common Configurations) before exposing
it outside of the namespace or cluster.\n\n\n### Supported
Features\n\n* **High availability** - Multiple instances of etcd are
networked together and secured. Individual failures or networking
issues are transparently handled to keep your cluster up and
running.\n\n* **Automated updates** - Rolling out a new etcd version
works like all Kubernetes rolling updates. Simply declare the desired
version, and the etcd service starts a safe rolling update to the new
version automatically.\n\n* **Backups included** - Create etcd backups
and restore them through the etcd Operator.\n\n### Common
Configurations\n\n* **Configure TLS** - Specify [static TLS
certs](https://github.com/coreos/etcd-operator/blob/master/doc/user/cluster_tls.md)
as Kubernetes secrets.\n\n* **Set Node Selector and Affinity** -
[Spread your etcd
Pods](https://github.com/coreos/etcd-operator/blob/master/doc/user/spec_examples.md#three-member-cluster-with-node-selector-and-anti-affinity-across-nodes)
across Nodes and availability zones.\n\n* **Set Resource Limits** -
[Set the Kubernetes limit and
request](https://github.com/coreos/etcd-operator/blob/master/doc/user/spec_examples.md#three-member-cluster-with-resource-requirement)
values for your etcd Pods.\n\n* **Customize Storage** - [Set a custom
StorageClass](https://github.com/coreos/etcd-operator/blob/master/doc/user/spec_examples.md#custom-persistentvolumeclaim-definition)
that you would like to use.\n","keywords":["etcd","key
value","database","coreos","open source"],"maintainers":[{"name":"etcd
Community","email":"etcd-dev"}],"provider":{"name":"CNCF"},"links":[{"name":"Blog","url":"https://coreos.com/etcd"},{"name":"Documentation","url":"https://coreos.com/operators/etcd/docs/latest/"},{"name":"etcd
Operator Source
Code","url":"https://github.com/coreos/etcd-operator"}],"icon":[{"base64data":"iVBORw0KGgoAAAANSUhEUgAAAOEAAADZCAYAAADWmle6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAEKlJREFUeNrsndt1GzkShmEev4sTgeiHfRYdgVqbgOgITEVgOgLTEQydwIiKwFQCayoCU6+7DyYjsBiBFyVVz7RkXvqCSxXw/+f04XjGQ6IL+FBVuL769euXgZ7r39f/G9iP0X+u/jWDNZzZdGI/Ftama1jjuV4BwmcNpbAf1Fgu+V/9YRvNAyzT2a59+/GT/3hnn5m16wKWedJrmOCxkYztx9Q+py/+E0GJxtJdReWfz+mxNt+QzS2Mc0AI+HbBBwj9QViKbH5t64DsP2fvmGXUkWU4WgO+Uve2YQzBUGd7r+zH2ZG/tiUQc4QxKwgbwFfVGwwmdLL5wH78aPC/ZBem9jJpCAX3xtcNASSNgJLzUPSQyjB1zQNl8IQJ9MIU4lx2+Jo72ysXYKl1HSzN02BMa/vbZ5xyNJIshJzwf3L0dQhJw4Sih/SFw9Tk8sVeghVPoefaIYCkMZCKbrcP9lnZuk0uPUjGE/KE8JQry7W2tgfuC3vXgvNV+qSQbyFtAtyWk7zWiYevvuUQ9QEQCvJ+5mmu6dTjz1zFHLFj8Eb87MtxaZh/IQFIHom+9vgTWwZxAQjT9X4vtbEVPojwjiV471s00mhAckpwGuCn1HtFtRDaSh6y9zsL+LNBvCG/24ThcxHObdlWc1v+VQJe8LcO0jwtuF8BwnAAUgP9M8JPU2Me+Oh12auPGT6fHuTePE3bLDy+x9pTLnhMn+07TQGh//Bz1iI0c6kvtqInjvPZcYR3KsPVmUsPYt9nFig9SCY8VQNhpPBzn952bbgcsk2EvM89wzh3UEffBbyPqvBUBYQ8ODGPFOLsa7RF096WJ69L+E4EmnpjWu5o4ChlKaRTKT39RMMaVPEQRsz/nIWlDN80chjdJlSd1l0pJCAMVZsniobQVuxceMM9OFoaMd9zqZtjMEYYDW38Drb8Y0DYPLShxn0pvIFuOSxd7YCPet9zk452wsh54FJoeN05hcgSQoG5RR0Qh9Q4E4VvL4wcZq8UACgaRFEQKgSwWrkr5WFnGxiHSutqJGlXjBgIOayhwYBTA0ER0oisIVSUV0AAMT0IASCUO4hRIQSAEECMCCEPwqyQA0JCQBzEGjWNAqHiUVAoXUWbvggOIQCEAOJzxTjoaQ4AIaE64/aZridUsBYUgkhB15oGg1DBIl8IqirYwV6hPSGBSFteMCUBSVXwfYixBmamRubeMyjzMJQBDDowE3OesDD+zwqFoDqiEwXoXJpljB+PvWJGy75BKF1FPxhKygJuqUdYQGlLxNEXkrYyjQ0GbaAwEnUIlLRNvVjQDYUAsJB0HKLE4y0AIpQNgCIhBIhQTgCKhZBBpAN/v6LtQI50JfUgYOnnjmLUFHKhjxbAmdTCaTiBm3ovLPqG2urWAij6im0Nd9aTN9ygLUEt9LgSRnohxUPIKxlGaE+/6Y7znFf0yX+GnkvFFWmarkab2o9PmTeq8sbd2a7DaysXz7i64VeznN4jCQhN9gdDbRiuWrfrsq0mHIrlaq+hlotCtd3Um9u0BYWY8y5D67wccJoZjFca7iUs9VqZcfsZwTd1sbWGG+OcYaTnPAP7rTQVVlM4Sg3oGvB1tmNh0t/HKXZ1jFoIMwCQjtqbhNxUmkGYqgZEDZP11HN/S3gAYRozf0l8C5kKEKUvW0t1IfeWG/5MwgheZTT1E0AEhDkAePQO+Ig2H3DncAkQM4cwUQCD530dU4B5Yvmi2LlDqXfWrxMCcMth51RToRMNUXFnfc2KJ0+Ryl0VNOUwlhh6NoxK5gnViTgQpUG4SqSyt5z3zRJpuKmt3Q1614QaCBPaN6je+2XiFcWAKOXcUfIYKRyL/1lb7pe5VxSxxjQ6hImshqGRt5GWZVKO6q2wHwujfwDtIvaIdexj8Cm8+a68EqMfox6x/voMouZF4dHnEGNeCDMwT6vdNfekH1MafMk4PI06YtqLVGl95aEM9Z5vAeCTOA++YLtoVJRrsqNCaJ6WRmkdYaNec5BT/lcTRMqrhmwfjbpkj55+OKp8IEbU/JLgPJE6Wa3TTe9sHS+ShVD5QIyqIxMEwKh12olC6mHIed5ewEop80CNlfIOADYOT2nd6ZXCop+Ebqchc0JqxKcKASxChycJgUh1rnHA5ow9eTrhqNI7JWiAYYwBGGdpyNLoGw0Pkh96h1BpHihyywtATDM/7Hk2fN9EnH8BgKJCU4ooBkbXFMZJiPbrOyecGl3zgQDQL4hk10IZiOe+5w99Q/gBAEIJgPhJM4QAEEoFREAIAAEiIASAkD8Qt4AQAEIAERAGFlX4CACKAXGVM4ivMwWwCLFAlyeoaa70QePKm5Dlp+/n+ye/5dYgva6YsUaVeMa+tzNFeJtWwc+udbJ0Fg399kLielQJ5Ze61c2+7ytA6EZetiPxZC6tj22yJCv6jUwOyj/zcbqAxOMyAKEbfeHtNa7DtYXptjsk2kJxR+eIeim/tHNofUKYy8DMrQcAKWz6brpvzyIAlpwPhQ49l6b7skJf5Z+YTOYQc4FwLDxvoTDwaygQK+U/kVr+ytSFBG01Q3gnJJR4cNiAhx4HDub8/b5DULXlj6SVZghFiE+LdvE9vo/o8Lp1RmH5hzm0T6wdbZ6n+D6i44zDRc3ln6CpAEJfXiRU45oqLz8gFAThWsh7ughrRibc0QynHgZpNJa/ENJ+loCwu/qOGnFIjYR/n7TfgycULhcQhu6VC+HfF+L3BoAQ4WiZTw1M+FPCnA2gKC6/FAhXgDC+ojQGh3NuWsvfF1L/D5ohlCKtl1j2ldu9a/nPAKFwN56Bst10zCG0CPleXN/zXPgHQZXaZaBgrbzyY5V/mUA+6F0hwtGN9rwu5DVZPuwWqfxdFz1LWbJ2lwKEa+0Qsm4Dl3fp+Pu0lV97PgwIPfSsS+UQhj5Oo+vvFULazRIQyvGEcxPuNLCth2MvFsrKn8UOilAQShkh7TTczYNMoS6OdP47msrPi82lXKGWhCdMZYS0bFy+vcnGAjP1CIfvgbKNA9glecEH9RD6Ol4wRuWyN/G9MHnksS6o/GPf5XcwNSUlHzQhDuAKtWJmkwKElU7lylP5rgIcsquh/FI8YZCDpkJBuE4FQm7Icw8N+SrUGaQKyi8FwiDt1ve5o+Vu7qYHy/psgK8cvh+FTYuO77bhEC7GuaPiys/L1X4IgXDL+e3M5+ovLxBy5VLuIebw1oqcHoPfoaMJUsHays878r8KbDc3xtPx/84gZPBG/JwaufrsY/SRG/OY3//8QMNdsvdZCFtbW6f8pFuf5bflILAlX7O+4fdfugKyFYS8T2zAsXthdG0VurPGKwI06oF5vkBgHWkNp6ry29+lsPZMU3vijnXFNmoclr+6+Ou/FIb8yb30sS8YGjmTqCLyQsi5N/6ZwKs0Yenj68pfPjF6N782Dp2FzV9CTyoSeY8mLK16qGxIkLI8oa1n8tz9juP40DlK0epxYEbojbq+9QfurBeVIlCO9D2396bxiV4lkYQ3hOAFw2pbhqMGISkkQOMcQ9EqhDmGZZdo92JC0YHRNTfoSg+5e0IT+opqCKHoIU+4ztQIgBD1EFNrQAgIpYSil9lDmPHqkROPt+JC6AgPquSuumJmg0YARVCuneDfvPVeJokZ6pIXDkNxQtGzTF9/BQjRG0tQznfb74RwCQghpALBtIQnfK4zhxdyQvVCUeknMIT3hLyY+T5jo0yABqKPQNpUNw/09tGZod5jgCaYFxyYvJcNPkv9eof+I3pnCFEHIETjSM8L9tHZHYCQT9PaZGycU6yg8S4akDnJ+P03L0+t23XGzCLzRgII/Wqa+fv/xlfvmKvMUOcOrlCDdoei1MGdZm6G5VEIfRzzjd4aQs69n699Rx7ewhvCGzr2gmTPs8zNsJOrXt24FbkhhOjCfT4ICA/rPbyhUy94Dks0gJCX1NzCZui9YUd3oei+c257TalFbgg19ILHrlrL2gvWgXAL26EX76gZTNASQnad8Ibwhl284NhgXpB0c+jKhWO3Ms1hP9ihJYB9eMF6qd1BCPk0qA1s+LimFIu7m4nsdQIzPK4VbQ8hYvrnuSH2G9b2ggP78QmWqBdF9Vx8SSY6QYdUW7BTA1schZATyhvY8lHvcRbNUS9YGFy2U+qmzh2YPVc0I7yAOFyHfRpyUwtCSzOdPXMHmz7qDIM0e0V2wZTEk+6Ym6N63eBLp/b5Bts+2cKCSJ/LuoZO3ANSiE5hKAZjnvNSS4931jcw9jpwT0feV/qSJ1pVtCyfHKDkvK8Ejx7pUxGh2xFNSwx8QTi2H9ceC0/nni64MS/5N5dG39pDqvRV+WgGk71c9VFXF9b+xYvOw/d61iv7m3MvEHryhvecwC52jSSx4VIIgwnMNT/UsTxIgpPt3K/ARj15CptwL3Zd/ceDSATj2DGQjbxgWwhdeMMte7zpy5On9vymRm/YxBYljGVjKWF9VJf7I1+sex3wY8w/V1QPTborW/72gkdsRDaZMJBdbdHIC7aCkAu9atlLbtnrzerMnyToDaGwelOnk3/hHSem/ZK7e/t7jeeR20LYBgqa8J80gS8jbwi5F02Uj1u2NYJxap8PLkJfLxA2hIJyvnHX/AfeEPLpBfe0uSFHbnXaea3Qd5d6HcpYZ8L6M7lnFwMQ3MNg+RxUR1+6AshtbsVgfXTEg1sIGax9UND2p7f270wdG3eK9gXVGHdw2k5sOyZv+Nbs39Z308XR9DqWb2J+PwKDhuKHPobfuXf7gnYGHdCs7bhDDadD4entDug7LWNsnRNW4mYqwJ9dk+GGSTPBiA2j0G8RWNM5upZtcG4/3vMfP7KnbK2egx6CCnDPhRn7NgD3cghLIad5WcM2SO38iqHvvMOosyeMpQ5zlVCaaj06GVs9xUbHdiKoqrHWgquFEFMWUEWfXUxJAML23hAHFOctmjZQffKD2pywkhtSGHKNtpitLroscAeE7kCkSsC60vxEl6yMtL9EL5HKGCMszU5bk8gdkklAyEn5FO0yK419rIxBOIqwFMooDE0tHEVYijAUECIshRCGIhxFWIowFJ5QkEYIS5PTJrUwNGlPyN6QQPyKtpuM1E/K5+YJDV/MiA3AaehzqgAm7QnZG9IGYKo8bHnSK7VblLL3hOwNHziPuEGOqE5brrdR6i+atCfckyeWD47HkAkepRGLY/e8A8J0gCwYSNypF08bBm+e6zVz2UL4AshhBUjML/rXLefqC82bcQFhGC9JDwZ1uuu+At0S5gCETYHsV4DUeD9fDN2Zfy5OXaW2zAwQygCzBLJ8cvaW5OXKC1FxfTggFAHmoAJnSiOw2wps9KwRWgJCLaEswaj5NqkLwAYIU4BxqTSXbHXpJdRMPZgAOiAMqABCNGYIEEJutEK5IUAIwYMDQgiCACEEAcJs1Vda7gGqDhCmoiEghAAhBAHCrKXVo2C1DCBMRlp37uMIEECoX7xrX3P5C9QiINSuIcoPAUI0YkAICLNWgfJDh4T9hH7zqYH9+JHAq7zBqWjwhPAicTVCVQJCNF50JghHocahKK0X/ZnQKyEkhSdUpzG8OgQI42qC94EQjsYLRSmH+pbgq73L6bYkeEJ4DYTYmeg1TOBFc/usTTp3V9DdEuXJ2xDCUbXhaXk0/kAYmBvuMB4qkC35E5e5AMKkwSQgyxufyuPy6fMMgAFCSI73LFXU/N8AmEL9X4ABACNSKMHAgb34AAAAAElFTkSuQmCC","mediatype":"image/png"}],"installModes":[{"type":"OwnNamespace","supported":true},{"type":"SingleNamespace","supported":false},{"type":"MultiNamespace","supported":false},{"type":"AllNamespaces","supported":true}],"replaces":"etcdoperator.v0.9.2-clusterwide","labels":{"alm-owner-etcd":"etcdoperator","operated-by":"etcdoperator"},"selector":{"matchLabels":{"alm-owner-etcd":"etcdoperator","operated-by":"etcdoperator"}}},"status":{"lastUpdateTime":null,"lastTransitionTime":null,"certsLastUpdated":null,"certsRotateAt":null}}
name: etcdoperator.v0.9.4-clusterwide
sourceName: community-operators
sourceNamespace: openshift-marketplace
version: v1alpha1
status: Present
- resolving: etcdoperator.v0.9.4-clusterwide
resource:
group: apiextensions.k8s.io
kind: CustomResourceDefinition
manifest: >
{"apiVersion":"apiextensions.k8s.io/v1beta1","kind":"CustomResourceDefinition","metadata":{"creationTimestamp":null,"name":"etcdbackups.etcd.database.coreos.com"},"spec":{"group":"etcd.database.coreos.com","names":{"kind":"EtcdBackup","listKind":"EtcdBackupList","plural":"etcdbackups","singular":"etcdbackup"},"scope":"Namespaced","version":"v1beta2"},"status":{"acceptedNames":{"kind":"","plural":""},"conditions":null,"storedVersions":null}}
name: etcdbackups.etcd.database.coreos.com
sourceName: community-operators
sourceNamespace: openshift-marketplace
version: v1beta1
status: Present
- resolving: etcdoperator.v0.9.4-clusterwide
resource:
group: apiextensions.k8s.io
kind: CustomResourceDefinition
manifest: >
{"apiVersion":"apiextensions.k8s.io/v1beta1","kind":"CustomResourceDefinition","metadata":{"creationTimestamp":null,"name":"etcdclusters.etcd.database.coreos.com"},"spec":{"group":"etcd.database.coreos.com","names":{"kind":"EtcdCluster","listKind":"EtcdClusterList","plural":"etcdclusters","shortNames":["etcdclus","etcd"],"singular":"etcdcluster"},"scope":"Namespaced","version":"v1beta2"},"status":{"acceptedNames":{"kind":"","plural":""},"conditions":null,"storedVersions":null}}
name: etcdclusters.etcd.database.coreos.com
sourceName: community-operators
sourceNamespace: openshift-marketplace
version: v1beta1
status: Present
- resolving: etcdoperator.v0.9.4-clusterwide
resource:
group: apiextensions.k8s.io
kind: CustomResourceDefinition
manifest: >
{"apiVersion":"apiextensions.k8s.io/v1beta1","kind":"CustomResourceDefinition","metadata":{"creationTimestamp":null,"name":"etcdrestores.etcd.database.coreos.com"},"spec":{"group":"etcd.database.coreos.com","names":{"kind":"EtcdRestore","listKind":"EtcdRestoreList","plural":"etcdrestores","singular":"etcdrestore"},"scope":"Namespaced","version":"v1beta2"},"status":{"acceptedNames":{"kind":"","plural":""},"conditions":null,"storedVersions":null}}
name: etcdrestores.etcd.database.coreos.com
sourceName: community-operators
sourceNamespace: openshift-marketplace
version: v1beta1
status: Present
- resolving: etcdoperator.v0.9.4-clusterwide
resource:
group: ''
kind: ServiceAccount
manifest: |
{"metadata":{"name":"etcd-operator","creationTimestamp":null}}
name: etcd-operator
sourceName: community-operators
sourceNamespace: openshift-marketplace
version: v1
status: Present
- resolving: etcdoperator.v0.9.4-clusterwide
resource:
group: rbac.authorization.k8s.io
kind: ClusterRole
manifest: >
{"metadata":{"name":"etcdoperator.v0.9.4-clusterwide-9xjpv","creationTimestamp":null,"labels":{"olm.owner":"etcdoperator.v0.9.4-clusterwide","olm.owner.kind":"ClusterServiceVersion","olm.owner.namespace":"openshift-operators"}},"rules":[{"verbs":["*"],"apiGroups":["etcd.database.coreos.com"],"resources":["etcdclusters","etcdbackups","etcdrestores"]},{"verbs":["*"],"apiGroups":[""],"resources":["pods","services","endpoints","persistentvolumeclaims","events"]},{"verbs":["*"],"apiGroups":["apps"],"resources":["deployments"]},{"verbs":["get"],"apiGroups":[""],"resources":["secrets"]}]}
name: etcdoperator.v0.9.4-clusterwide-9xjpv
sourceName: community-operators
sourceNamespace: openshift-marketplace
version: v1
status: Present
- resolving: etcdoperator.v0.9.4-clusterwide
resource:
group: rbac.authorization.k8s.io
kind: ClusterRoleBinding
manifest: >
{"metadata":{"name":"etcdoperator.v0.9.4-clusterwide-9xjpv-etcd-operator-lps2x","namespace":"openshift-operators","creationTimestamp":null,"labels":{"olm.owner":"etcdoperator.v0.9.4-clusterwide","olm.owner.kind":"ClusterServiceVersion","olm.owner.namespace":"openshift-operators"}},"subjects":[{"kind":"ServiceAccount","name":"etcd-operator","namespace":"openshift-operators"}],"roleRef":{"apiGroup":"rbac.authorization.k8s.io","kind":"ClusterRole","name":"etcdoperator.v0.9.4-clusterwide-9xjpv"}}
name: etcdoperator.v0.9.4-clusterwide-9xjpv-etcd-operator-lps2x
sourceName: community-operators
sourceNamespace: openshift-marketplace
version: v1
status: Present
Hi, Evan Yes, it has been fixed in 4.2. The users will get errors below when they try to install the same operator. LGTM. "Installing Operator in selected namespace would cause conflicts with another Operator providing these APIs: Hazelcast (hazelcast.com/v1alpha1)" Screenshot is: https://user-images.githubusercontent.com/15416633/63077464-0357c380-bf6b-11e9-894b-595212b3d15b.png But, for 4.1.z, this issue still exists. Reproduce steps: 1, Install the hazelcast operator from Certified. And then install hazelcast operator from Community. Like below: mac:~ jianzhang$ oc get sub hazelcast-enterprise-certified -o yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: creationTimestamp: "2019-08-15T06:38:47Z" generation: 1 labels: csc-owner-name: installed-certified-openshift-operators csc-owner-namespace: openshift-marketplace name: hazelcast-enterprise-certified namespace: openshift-operators resourceVersion: "905135" selfLink: /apis/operators.coreos.com/v1alpha1/namespaces/openshift-operators/subscriptions/hazelcast-enterprise-certified uid: 55c62f2e-bf27-11e9-945d-06516607c3ce spec: channel: alpha installPlanApproval: Automatic name: hazelcast-enterprise-certified source: installed-certified-openshift-operators sourceNamespace: openshift-operators startingCSV: hazelcast-operator.v0.1 status: currentCSV: hazelcast-operator.v0.1 installPlanRef: apiVersion: operators.coreos.com/v1alpha1 kind: InstallPlan name: install-dwxsl namespace: openshift-operators resourceVersion: "905093" uid: 661ad232-bf27-11e9-bfe1-0aaffb4070ce installedCSV: hazelcast-operator.v0.1 installplan: apiVersion: operators.coreos.com/v1alpha1 kind: InstallPlan name: install-dwxsl uuid: 661ad232-bf27-11e9-bfe1-0aaffb4070ce lastUpdated: "2019-08-15T06:39:16Z" state: AtLatestKnown The subscription cannot be installed successfully. mac:~ jianzhang$ oc get sub hazelcast-enterprise -o yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: creationTimestamp: "2019-08-15T06:41:23Z" generation: 1 labels: csc-owner-name: installed-community-openshift-operators csc-owner-namespace: openshift-marketplace name: hazelcast-enterprise namespace: openshift-operators resourceVersion: "906354" selfLink: /apis/operators.coreos.com/v1alpha1/namespaces/openshift-operators/subscriptions/hazelcast-enterprise uid: b2cc3b78-bf27-11e9-bfe1-0aaffb4070ce spec: channel: alpha installPlanApproval: Automatic name: hazelcast-enterprise source: installed-community-openshift-operators sourceNamespace: openshift-operators startingCSV: hazelcast-operator.v0.0.1 And then, any operators cannot be installed in this "openshift-operator" namespace. Like below: etcd installed failed: mac:~ jianzhang$ oc get sub etcd -o yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: creationTimestamp: "2019-08-15T07:10:37Z" generation: 1 labels: csc-owner-name: installed-community-openshift-operators csc-owner-namespace: openshift-marketplace name: etcd namespace: openshift-operators resourceVersion: "917927" selfLink: /apis/operators.coreos.com/v1alpha1/namespaces/openshift-operators/subscriptions/etcd uid: c807b5ce-bf2b-11e9-b640-02c0f41c286a spec: channel: clusterwide-alpha installPlanApproval: Automatic name: etcd source: installed-community-openshift-operators sourceNamespace: openshift-operators startingCSV: etcdoperator.v0.9.4-clusterwide Cluster version is 4.1.11 OLM version: io.openshift.build.commit.url=https://github.com/operator-framework/operator-lifecycle-manager/commit/b45dae333aa3d6e4baa8fb8625eac5d7700c6525 io.openshift.build.source-location=https://github.com/operator-framework/operator-lifecycle-manager This issue should be addressed in 4.1.z too, reopen it. The specific issue here is that the Subscription does not indicate enough of the state that in manages in its status object. The underlying behavior didn't change in 4.2 (i.e. no "bug" was fixed), but we surface the issues better to the user so that they can make informed decisions. Given that we had an entire epic around improving our status messages in 4.2, this is really a feature request and not a bugfix to backport. As an aside, we will continue to work with the teams shipping operators into 4.1 so that it is not possible to get into this state from operators that Red Hat ships (i.e. by having the same operator in two catalogs). |
Description of problem: For now, some `same` operators from the different repo: Certified and Community. Some of them call different "startingCSV" in their subscription objects. After installing one of them, continues to install another one in the same namespace. The 2nd installed subscription object is in `Unknown` status always. This will lead to the user cannot install any other operators in this namespace. I think the OLM should deny creating the 2nd subscription object. Version-Release number of selected component (if applicable): Cluster version is 4.1.0-0.nightly-2019-05-24-040103 OLM source commit: 586ffaf57b5da9cc2301b01e2ea10ce6117928c9 How reproducible: always Steps to Reproduce: 1. Install OCP 4.1 and create a new project called "test3". 2. Install the hazelcast operator from Certified. And then install hazelcast operator from Community. Like below: mac:~ jianzhang$ oc get sub NAME PACKAGE SOURCE CHANNEL hazelcast-enterprise hazelcast-enterprise installed-community-test3 alpha hazelcast-enterprise-certified hazelcast-enterprise-certified installed-certified-test3 alpha hazelcast-enterprise-certified 3. Install another operator in this namespace, for example, etcd. mac:~ jianzhang$ oc get sub NAME PACKAGE SOURCE CHANNEL etcd etcd installed-community-test3 singlenamespace-alpha hazelcast-enterprise hazelcast-enterprise installed-community-test3 alpha hazelcast-enterprise-certified hazelcast-enterprise-certified installed-certified-test3 alpha Actual results: The etcd operator cannot be installed as expected. No status. mac:~ jianzhang$ oc get sub etcd -o yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: creationTimestamp: "2019-05-29T08:33:30Z" generation: 1 labels: csc-owner-name: installed-community-test3 csc-owner-namespace: openshift-marketplace name: etcd namespace: test3 resourceVersion: "1403247" selfLink: /apis/operators.coreos.com/v1alpha1/namespaces/test3/subscriptions/etcd uid: 6ffeb18f-81ec-11e9-8e37-029ce9e9e584 spec: channel: singlenamespace-alpha installPlanApproval: Automatic name: etcd source: installed-community-test3 sourceNamespace: test3 startingCSV: etcdoperator.v0.9.4 Expected results: The OLM should deny creating the 2nd subscription object "hazelcast-enterprise". Additional info: The 2nd installed subscription "hazelcast-enterprise" didn't have the Status. Based on current design, the users cannot install any other operators in this namespace. Workaround: remove this "Unknown" subscription object(hazelcast-enterprise) manually. mac:~ jianzhang$ oc get sub hazelcast-enterprise -o yaml apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: creationTimestamp: "2019-05-29T08:28:40Z" generation: 1 labels: csc-owner-name: installed-community-test3 csc-owner-namespace: openshift-marketplace name: hazelcast-enterprise namespace: test3 resourceVersion: "1399085" selfLink: /apis/operators.coreos.com/v1alpha1/namespaces/test3/subscriptions/hazelcast-enterprise uid: c3625807-81eb-11e9-8e37-029ce9e9e584 spec: channel: alpha installPlanApproval: Automatic name: hazelcast-enterprise source: installed-community-test3 sourceNamespace: test3 startingCSV: hazelcast-operator.v0.0.1