Not being able to register CRD is not a fatal error (#444)
Operator proceeds to checking if CRD is present and ready, and if not, only then it is a fatal error.
This commit is contained in:
parent
e1d9395338
commit
44acd7e4db
|
|
@ -32,7 +32,7 @@ configuration.
|
||||||
kubectl create -f manifests/postgresql-operator-default-configuration.yaml
|
kubectl create -f manifests/postgresql-operator-default-configuration.yaml
|
||||||
kubectl get operatorconfigurations postgresql-operator-default-configuration -o yaml
|
kubectl get operatorconfigurations postgresql-operator-default-configuration -o yaml
|
||||||
```
|
```
|
||||||
Note that the operator first registers the CRD of the `OperatorConfiguration`
|
Note that the operator first attempts to register the CRD of the `OperatorConfiguration`
|
||||||
and then waits for an instance to be created. In between these two event the
|
and then waits for an instance to be created. In between these two event the
|
||||||
operator pod may be failing since it cannot fetch the not-yet-existing
|
operator pod may be failing since it cannot fetch the not-yet-existing
|
||||||
`OperatorConfiguration` instance.
|
`OperatorConfiguration` instance.
|
||||||
|
|
|
||||||
|
|
@ -51,17 +51,18 @@ func (c *Controller) clusterWorkerID(clusterName spec.NamespacedName) uint32 {
|
||||||
|
|
||||||
func (c *Controller) createOperatorCRD(crd *apiextv1beta1.CustomResourceDefinition) error {
|
func (c *Controller) createOperatorCRD(crd *apiextv1beta1.CustomResourceDefinition) error {
|
||||||
if _, err := c.KubeClient.CustomResourceDefinitions().Create(crd); err != nil {
|
if _, err := c.KubeClient.CustomResourceDefinitions().Create(crd); err != nil {
|
||||||
if !k8sutil.ResourceAlreadyExists(err) {
|
if k8sutil.ResourceAlreadyExists(err) {
|
||||||
return fmt.Errorf("could not create customResourceDefinition: %v", err)
|
c.logger.Infof("customResourceDefinition %q is already registered and will only be updated", crd.Name)
|
||||||
}
|
|
||||||
c.logger.Infof("customResourceDefinition %q is already registered and will only be updated", crd.Name)
|
|
||||||
|
|
||||||
patch, err := json.Marshal(crd)
|
patch, err := json.Marshal(crd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not marshal new customResourceDefintion: %v", err)
|
return fmt.Errorf("could not marshal new customResourceDefintion: %v", err)
|
||||||
}
|
}
|
||||||
if _, err := c.KubeClient.CustomResourceDefinitions().Patch(crd.Name, types.MergePatchType, patch); err != nil {
|
if _, err := c.KubeClient.CustomResourceDefinitions().Patch(crd.Name, types.MergePatchType, patch); err != nil {
|
||||||
return fmt.Errorf("could not update customResourceDefinition: %v", err)
|
return fmt.Errorf("could not update customResourceDefinition: %v", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.logger.Errorf("could not create customResourceDefinition %q: %v", crd.Name, err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
c.logger.Infof("customResourceDefinition %q has been registered", crd.Name)
|
c.logger.Infof("customResourceDefinition %q has been registered", crd.Name)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue