Skip to main content

Internal error, failed calling webhook when deploying Armory Continuous Deployment after upgrading the Armory Operator

Last updated on

Issue

Users cannot deploy Spinnaker (Armory Enterprise) after installing a new Armory Operator. After running the following command: kubectl -n armory apply -k overlays/dev/, admins see the following exception: Error from server (InternalError): error when creating "overlays/dev/": Internal error occurred: failed calling webhook "webhook-spinnakerservices-v1alpha2.spinnaker.armory.io": Post "https://spinnaker-operator.armory.svc:443/validate-spinnaker-armory-io-v1alpha2-spinnakerservice?timeout=10s": context deadline exceeded   Or an exception like this: Error from server (InternalError): error when creating "STDIN": Internal error occurred: failed calling webhook "webhook-spinnakerservices-v1alpha2.spinnaker.armory.io": Post "https://spinnaker-operator.armory-operator.svc:443/validate-spinnaker-armory-io-v1alpha2-spinnakerservice?timeout=10s": no endpoints available for service "spinnaker-operator"


## Cause
The reason for this issue is that when deploying a new Armory Operator, the old ```spinnakervalidatingwebhook``` was not removed.
During installation the Operator by following instructions: [https://docs.armory.io/armory-enterprise/installation/armory-operator/op-quickstart/#single-manifest-file-option](https://docs.armory.io/armory-enterprise/installation/armory-operator/op-quickstart/#single-manifest-file-option),
the step
```kubectl apply -f deploy/crds/``` will create two ```customresourcedefinition.apiextensions.k8s.io```:
* ```armoryaccounts.spinnaker.armory.io```
* ```spinnakerservices.spinnaker.armory.io```
The ```spinnakervalidatingwebhook``` ```ValidatingWebhookConfiguration``` creates two validating admission webhooks:

* ```webhook-spinnakeraccounts-v1alpha2.spinnaker.armory.io```
* ```webhook-spinnakerservices-v1alpha2.spinnaker.armory.io```

The mismatched ```caBundle``` of ```webhook-spinnakerservices-v1alpha2.spinnaker.armory.io``` will generate an Internal error as shown.