Skip to content

Commit

Permalink
Merge pull request #125 from alebedev87/readiness-probe
Browse files Browse the repository at this point in the history
Bind the operator readiness to the webhook server
  • Loading branch information
openshift-merge-robot committed Mar 27, 2022
2 parents 8957198 + 3e1a97b commit e341083
Show file tree
Hide file tree
Showing 46 changed files with 664 additions and 570 deletions.
10 changes: 10 additions & 0 deletions bundle/manifests/external-dns-operator_clusterserviceversion.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,16 @@ spec:
ports:
- containerPort: 9443
name: webhook-server
protocol: TCP
- containerPort: 9440
name: health-check
protocol: TCP
readinessProbe:
httpGet:
path: /readyz
port: health-check
initialDelaySeconds: 5
periodSeconds: 5
resources:
requests:
cpu: 100m
Expand Down
1 change: 1 addition & 0 deletions cmd/external-dns-operator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ func main() {
flag.StringVar(&opCfg.TrustedCAConfigMapName, "trusted-ca-configmap", operatorconfig.DefaultTrustedCAConfigMapName, "The name of the config map containing TLS CA(s) which should be trusted by ExternalDNS containers. PEM encoded file under \"ca-bundle.crt\" key is expected.")
flag.BoolVar(&opCfg.EnableWebhook, "enable-webhook", operatorconfig.DefaultEnableWebhook, "Enable the validating webhook server. Defaults to true.")
flag.BoolVar(&opCfg.EnablePlatformDetection, "enable-platform-detection", operatorconfig.DefaultEnablePlatformDetection, "Enable the detection of the underlying platform. Defaults to true.")
flag.StringVar(&opCfg.HealthProbeBindAddress, "health-probe-bind-addr", operatorconfig.DefaultHealthProbeAddr, "The address the health endpoint binds to.")
opts := zap.Options{
Development: true,
}
Expand Down
9 changes: 9 additions & 0 deletions config/default/manager_webhook_patch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,19 @@ spec:
- containerPort: 9443
name: webhook-server
protocol: TCP
- containerPort: 9440
name: health-check
protocol: TCP
volumeMounts:
- mountPath: /tmp/k8s-webhook-server/serving-certs
name: cert
readOnly: true
readinessProbe:
httpGet:
path: /readyz
port: health-check
initialDelaySeconds: 5
periodSeconds: 5
volumes:
- name: cert
secret:
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ require (
k8s.io/api v0.22.1
k8s.io/apimachinery v0.22.1
k8s.io/client-go v0.22.1
k8s.io/utils v0.0.0-20210722164352-7f3ee0f31471
sigs.k8s.io/controller-runtime v0.9.5
k8s.io/utils v0.0.0-20210802155522-efc7438f0176
sigs.k8s.io/controller-runtime v0.10.0
sigs.k8s.io/controller-runtime/tools/setup-envtest v0.0.0-20211004203041-b1efff64d3d2
sigs.k8s.io/controller-tools v0.6.0
)
71 changes: 54 additions & 17 deletions go.sum

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions pkg/operator/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ const (
DefaultEnableWebhook = true
DefaultEnablePlatformDetection = true
DefaultTrustedCAConfigMapName = ""
DefaultHealthProbeAddr = ":9440"

openshiftKind = "OpenShiftAPIServer"
openshiftResourceGroup = "operator.openshift.io"
Expand Down Expand Up @@ -85,6 +86,10 @@ type Config struct {

// TrustedCAConfigMapName is the name of the configmap containing CA bundle to be trusted by ExternalDNS containers.
TrustedCAConfigMapName string

// HealthProbeBindAddress is the TCP address that the operator should bind to for
// serving health probes (readiness and liveness).
HealthProbeBindAddress string
}

// DetectPlatform detects the underlying platform and fills corresponding config fields
Expand Down
11 changes: 8 additions & 3 deletions pkg/operator/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,10 @@ type Operator struct {
// New creates a new operator from cliCfg and opCfg.
func New(cliCfg *rest.Config, opCfg *operatorconfig.Config) (*Operator, error) {
mgrOpts := manager.Options{
Scheme: GetOperatorScheme(),
MetricsBindAddress: opCfg.MetricsBindAddress,
Namespace: opCfg.OperatorNamespace,
Scheme: GetOperatorScheme(),
MetricsBindAddress: opCfg.MetricsBindAddress,
HealthProbeBindAddress: opCfg.HealthProbeBindAddress,
Namespace: opCfg.OperatorNamespace,
NewCache: cache.MultiNamespacedCacheBuilder([]string{
opCfg.OperatorNamespace,
opCfg.OperandNamespace,
Expand Down Expand Up @@ -102,6 +103,10 @@ func New(cliCfg *rest.Config, opCfg *operatorconfig.Config) (*Operator, error) {
}
//+kubebuilder:scaffold:builder

if err := mgr.AddReadyzCheck("webhook", mgr.GetWebhookServer().StartedChecker()); err != nil {
return nil, fmt.Errorf("unable to setup ready check: %w", err)
}

if err = opCfg.FillPlatformDetails(context.TODO(), mgr.GetClient()); err != nil {
return nil, fmt.Errorf("failed to fill the platform details: %w", err)
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions vendor/k8s.io/utils/pointer/pointer.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ k8s.io/api/scheduling/v1beta1
k8s.io/api/storage/v1
k8s.io/api/storage/v1alpha1
k8s.io/api/storage/v1beta1
# k8s.io/apiextensions-apiserver v0.21.3
# k8s.io/apiextensions-apiserver v0.22.1
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1
Expand Down Expand Up @@ -670,20 +670,20 @@ k8s.io/client-go/util/jsonpath
k8s.io/client-go/util/keyutil
k8s.io/client-go/util/retry
k8s.io/client-go/util/workqueue
# k8s.io/component-base v0.21.3
# k8s.io/component-base v0.22.1
k8s.io/component-base/config
k8s.io/component-base/config/v1alpha1
# k8s.io/klog/v2 v2.9.0
k8s.io/klog/v2
# k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e
k8s.io/kube-openapi/pkg/util/proto
# k8s.io/utils v0.0.0-20210722164352-7f3ee0f31471
# k8s.io/utils v0.0.0-20210802155522-efc7438f0176
## explicit
k8s.io/utils/buffer
k8s.io/utils/integer
k8s.io/utils/pointer
k8s.io/utils/trace
# sigs.k8s.io/controller-runtime v0.9.5
# sigs.k8s.io/controller-runtime v0.10.0
## explicit
sigs.k8s.io/controller-runtime
sigs.k8s.io/controller-runtime/pkg/builder
Expand Down
2 changes: 1 addition & 1 deletion vendor/sigs.k8s.io/controller-runtime/FAQ.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions vendor/sigs.k8s.io/controller-runtime/Makefile

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion vendor/sigs.k8s.io/controller-runtime/OWNERS_ALIASES

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions vendor/sigs.k8s.io/controller-runtime/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/sigs.k8s.io/controller-runtime/TMP-LOGGING.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/sigs.k8s.io/controller-runtime/doc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 9 additions & 11 deletions vendor/sigs.k8s.io/controller-runtime/go.mod

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit e341083

Please sign in to comment.