-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Kubernetes Service Catalog interop : idempotent on duplicate create service #17
Comments
Symptom when concurrent provisionning request is sent by K8S
|
Desired approach:
This is costly to do because the StateRepository is not currently accessible to CloudFoundryDeployer but only the WorkflowServiceInstanceService Alternative more affordable degraded approach
=> we sacrifice the cases where
|
Pb with initial implementation in ec163e7: race condition between servlet threads (reading the state repository) and reactor threads (writing to state repository async) Alternatives:
Option 1) was successfully tested on openshift |
Same problem arises with service bindings:
Log pollution of level ERROR:
The service binding specs mentions at https://github.com/openservicebrokerapi/servicebroker/blob/master/spec.md#binding in the response-6 section:
However, the osb-cmdb service binding are not yet asynchronous (nor is there a scab support for async service bindings), hence returning a 202 for dup binding requests isn't an option. Possible alternatives:
Opted to 2) |
See related openshift 3.9 documentation at https://docs.openshift.com/container-platform/3.9/architecture/service_catalog/index.html Pointers and procedure to refresh service catalog in Openshift:
Procedure to register a service broker with basic auth (see inspiration) # enable oc completion
$ source <(oc completion bash)
$ kubectl create secret generic osb-cmdb-0-auth \
--from-literal username=redacted-user \
--from-literal password=redacted-password
# Alternatively in a spec file as documented into https://kubernetes.io/docs/concepts/configuration/secret/#creating-a-secret-manually
$ cat secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: osb-cmdb-0-auth
type: Opaque
data:
username: *****=
password: ********
$ kubectl apply -f ./secret.yaml
secret "osb-cmdb-0-auth" created
# Seems to fail to make the broker appear in openshift UI
$ svcat register osb-cmdb-0-broker \
--url https://ocb-cmdb-0.redacted-domain \
--scope cluster \
--basic-secret osb-cmdb-0-auth
--skip-tls
# Alternatively
$ cat broker.yml
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServiceBroker
metadata:
name: osbcmdb-broker
spec:
url: https://osb-cmdb-broker-0.redacted-domain
insecureSkipTLSVerify: true
authInfo:
basic:
secretRef:
namespace: interco-kermit-fp
name: osb-cmdb-0-auth
$ oc create -f broker.yml
clusterservicebroker "osbcmdb-broker" created Other diagnostic commands
Cleanup/recovery/purge commands: See related kubernetes-retired/service-catalog#2268
|
Started an upstream PR in spring-cloud/spring-cloud-app-broker#343 but there is remaining effort needed to diagnose test failure. Pausing for now as I'm out of budget for this upstream PR. |
Expected behavior
Expecting Openshift service catalog to be able to consume services fronted by OSBCMDB.
Observed behavior
Openshift issues multiple PUT to create a service instance. Seems compliant with OSB spec.
.kubernetes-retired/service-catalog#1639
The broker rejects the duplicate PUT, giving provisionning error on OpenShift v3.9.51 ( Kubernetes v1.9.1+a0ce1bc657 )
cc @pdechamboux
The text was updated successfully, but these errors were encountered: