CCO-788: Remove kube-rbac-proxy container from metrics#983
CCO-788: Remove kube-rbac-proxy container from metrics#983jstuever wants to merge 1 commit intoopenshift:masterfrom
Conversation
Previously, a kube-rbac-proxy container was deployed with the operator deployment in order to provide RBAC security to the metrics port. Because it was deployed as part of the operator deployment, the tls configuration for the container could not be managed by the operator itself. This change removes kube-rbac-proxy from the metrics service and implements rbac via the controller-runtime directly. As a result, the tls configuration on the metrics port can now be managed by the operator while maintaining equal security posture.
|
@jstuever: This pull request references CCO-788 which is a valid jira issue. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
WalkthroughThis pull request removes the kube-rbac-proxy sidecar container from the operator deployment and migrates metrics serving to the cloud-credential-operator with native TLS termination and authentication. The operator's metrics endpoint is reconfigured from port 2112 to 8443 with certificate-based serving, and corresponding image references and dependencies are updated. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~15 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs). Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@jstuever: This pull request references CCO-788 which is a valid jira issue. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: jstuever The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
manifests/03-deployment.yaml (1)
96-98: Consider addingoptional: trueto the serving cert secret volume.The secret is auto-provisioned by OpenShift's service-serving-cert-signer, but there's a potential startup race if the deployment is created before the secret exists. Adding
optional: truewould allow the pod to start and retry when the secret becomes available, rather than failing outright.That said, this is a common pattern in OpenShift and the deployment will retry, so this is a minor concern.
♻️ Optional: Add optional flag for graceful startup
- name: cloud-credential-operator-serving-cert secret: secretName: cloud-credential-operator-serving-cert + optional: true🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@manifests/03-deployment.yaml` around lines 96 - 98, The volume definition for the serving cert (name: cloud-credential-operator-serving-cert, secret.secretName: cloud-credential-operator-serving-cert) should mark the secret as optional to avoid pod startup failure if the service-serving-cert-signer hasn’t created it yet; update the Secret volume spec for cloud-credential-operator-serving-cert to include secret.optional: true so the Pod can start and retry when the secret becomes available.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@manifests/03-deployment.yaml`:
- Around line 96-98: The volume definition for the serving cert (name:
cloud-credential-operator-serving-cert, secret.secretName:
cloud-credential-operator-serving-cert) should mark the secret as optional to
avoid pod startup failure if the service-serving-cert-signer hasn’t created it
yet; update the Secret volume spec for cloud-credential-operator-serving-cert to
include secret.optional: true so the Pod can start and retry when the secret
becomes available.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: a5edb621-5f5e-4356-9665-b394bc21b930
⛔ Files ignored due to path filters (296)
go.sumis excluded by!**/*.sumvendor/github.com/cenkalti/backoff/v4/.gitignoreis excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/LICENSEis excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/README.mdis excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/backoff.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/context.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/exponential.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/retry.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/ticker.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/timer.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/cenkalti/backoff/v4/tries.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/BUILD.bazelis excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/README.mdis excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/bindings.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/comprehensions.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/encoders.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/extension_option_factory.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/formatting.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/formatting_v2.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/guards.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/lists.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/math.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/native.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/protos.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/regex.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/sets.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/ext/strings.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/interpreter/functions/BUILD.bazelis excluded by!**/vendor/**,!vendor/**vendor/github.com/google/cel-go/interpreter/functions/functions.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/LICENSEis excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/BUILD.bazelis excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/compile.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/fuzz.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/parse.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/internal/httprule/types.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/BUILD.bazelis excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/context.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/convert.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/doc.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/errors.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/fieldmask.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/handler.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_httpbodyproto.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_json.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_jsonpb.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshal_proto.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/marshaler_registry.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/mux.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/pattern.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/proto2_convert.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/runtime/query.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/BUILD.bazelis excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/doc.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/pattern.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/readerfactory.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/string_array_flag.gois excluded by!**/vendor/**,!vendor/**vendor/github.com/grpc-ecosystem/grpc-gateway/v2/utilities/trie.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/LICENSEis excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/README.mdis excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/span.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/LICENSEis excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/README.mdis excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/client.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/doc.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/exporter.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/envconfig/envconfig.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/gen.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/envconfig.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/optiontypes.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/tls.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/partialsuccess.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry/retry.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/options.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/README.mdis excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/doc.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/event.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/link.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/provider.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/sampling.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/span.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/span_limits.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/span_processor.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/sdk/trace/tracer.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.17.0/README.mdis excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.17.0/doc.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.17.0/event.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.17.0/exception.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.17.0/http.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.17.0/resource.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.17.0/schema.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/otel/semconv/v1.17.0/trace.gois excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/proto/otlp/LICENSEis excluded by!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service.pb.gw.gois excluded by!**/*.pb.gw.go,!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/proto/otlp/collector/trace/v1/trace_service_grpc.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/proto/otlp/common/v1/common.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/proto/otlp/resource/v1/resource.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/go.opentelemetry.io/proto/otlp/trace/v1/trace.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/golang.org/x/sync/singleflight/singleflight.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/feature/plural/common.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/feature/plural/message.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/feature/plural/plural.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/feature/plural/tables.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/catmsg/catmsg.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/catmsg/codec.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/catmsg/varint.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/format/format.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/format/parser.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/number/common.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/number/decimal.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/number/format.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/number/number.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/number/pattern.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/number/roundingmode_string.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/number/tables.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/internal/stringset/set.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/catalog.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/catalog/catalog.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/catalog/dict.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/catalog/go19.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/catalog/gopre19.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/doc.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/format.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/message.gois excluded by!**/vendor/**,!vendor/**vendor/golang.org/x/text/message/print.gois excluded by!**/vendor/**,!vendor/**vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/k8s.io/apimachinery/pkg/api/validation/path/name.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apimachinery/pkg/apis/asn1/oid.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/doc.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/install/install.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/register.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/types.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/types_encryption.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1/defaults.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1/doc.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1/register.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1/types.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1/types_encryption.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1/zz_generated.conversion.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/v1/zz_generated.deepcopy.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/v1/zz_generated.defaults.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/conversion.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/defaults.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/doc.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/register.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/types.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.conversion.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.deepcopy.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1/zz_generated.defaults.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/v1beta1/conversion.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1beta1/defaults.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1beta1/doc.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1beta1/register.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1beta1/types.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/v1beta1/zz_generated.conversion.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/v1beta1/zz_generated.deepcopy.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/v1beta1/zz_generated.defaults.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/apiserver/validation/validation.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/validation/validation_encryption.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/apiserver/zz_generated.deepcopy.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/audit/OWNERSis excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/doc.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/helpers.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/register.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/types.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/v1/doc.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/v1/generated.pb.gois excluded by!**/*.pb.go,!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/v1/generated.protois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/v1/register.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/v1/types.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/apis/audit/v1/zz_generated.conversion.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/audit/v1/zz_generated.deepcopy.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/audit/v1/zz_generated.defaults.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/audit/zz_generated.deepcopy.gois excluded by!**/vendor/**,!vendor/**,!**/zz_generated*vendor/k8s.io/apiserver/pkg/apis/cel/config.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/OWNERSis excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/context.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/evaluator.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/format.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/metrics.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/request.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/scheme.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/types.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/audit/union.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/authenticator/audagnostic.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/authenticator/audiences.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/authenticator/interfaces.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory/delegating.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory/loopback.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory/metrics.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/authenticatorfactory/requestheader.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/cel/compile.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/cel/interface.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/cel/mapper.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/group/authenticated_group_adder.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/group/group_adder.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/group/token_group_adder.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/anonymous/anonymous.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/bearertoken/bearertoken.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/headerrequest/requestheader_controller.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/union/union.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/websocket/protocol.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/x509/OWNERSis excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/x509/doc.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/x509/verify_options.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/request/x509/x509.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/util.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/token/cache/cache_simple.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/token/cache/cache_striped.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/token/cache/cached_token_authenticator.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/token/cache/stats.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authentication/token/tokenfile/tokenfile.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/authorizer/interfaces.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/authorizer/rule.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory/builtin.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory/delegating.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/authorizerfactory/metrics.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/cel/compile.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/cel/interface.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/cel/matcher.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/authorization/cel/metrics.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/OWNERSis excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/cidr.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/environment/base.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/environment/environment.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/errors.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/escaping.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/format.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/ip.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/authz.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/cidr.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/cost.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/format.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/ip.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/jsonpatch.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/libraries.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/lists.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/quantity.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/regex.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/semverlib.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/test.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/library/urls.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/limits.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/quantity.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/semver.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/types.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/url.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/cel/value.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/endpoints/request/OWNERSis excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/endpoints/request/context.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/endpoints/request/doc.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/endpoints/request/methods.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/endpoints/request/received_time.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/endpoints/request/requestinfo.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/endpoints/request/server_shutdown_signal.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/endpoints/request/webhook_duration.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/features/OWNERSis excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/features/kube_features.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/cert_key.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/client_ca.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/configmap_cafile_content.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/dynamic_cafile_content.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/dynamic_serving_content.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/dynamic_sni_content.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/interfaces.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/named_certificates.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/static_content.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/tlsconfig.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/union_content.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/util.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/egressselector/config.gois excluded by!**/vendor/**,!vendor/**vendor/k8s.io/apiserver/pkg/server/egressselector/egress_selector.gois excluded by!**/vendor/**,!vendor/**
📒 Files selected for processing (4)
go.modmanifests/03-deployment.yamlmanifests/image-referencespkg/cmd/operator/cmd.go
💤 Files with no reviewable changes (1)
- manifests/image-references
|
/payload-job 4.22 nightly aws-ovn-serial-1of2 |
|
@jstuever: trigger 0 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command |
|
/payload-job periodic-ci-openshift-release-main-nightly-4.22-e2e-aws-ovn-serial-1of2 |
|
@jstuever: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command
See details on https://pr-payload-tests.ci.openshift.org/runs/ci/28183100-1be9-11f1-9028-a4696d069f08-0 |
|
/payload-job periodic-ci-openshift-release-main-ci-4.22-e2e-aws-ovn-techpreview-serial-1of3 |
|
@jstuever: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command
See details on https://pr-payload-tests.ci.openshift.org/runs/ci/306bff30-1be9-11f1-8600-6c37f478c3f5-0 |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #983 +/- ##
==========================================
- Coverage 46.20% 46.19% -0.02%
==========================================
Files 98 98
Lines 12253 12256 +3
==========================================
Hits 5662 5662
- Misses 5941 5944 +3
Partials 650 650
🚀 New features to boost your workflow:
|
|
/hold |
|
/assign @dlom |
| BindAddress: ":2112", | ||
| BindAddress: ":8443", | ||
| SecureServing: true, | ||
| FilterProvider: filters.WithAuthenticationAndAuthorization, |
There was a problem hiding this comment.
WithAuthenticationAndAuthorization uses token reviews which doesn't meet the OCP guidelines (https://github.com/openshift/enhancements/blob/master/CONVENTIONS.md#metrics and https://github.com/openshift/enhancements/blob/master/enhancements/monitoring/client-cert-scraping.md) which prescribe mutual TLS authentication. See https://rhobs-handbook.netlify.app/products/openshiftmonitoring/collecting_metrics.md/#controller-runtime--v0160 for more details.
I understand that prior to this change, the situation was the same (e.g. kube-rbac-proxy not configured for mTLS) but it'd be good to address the point in a follow-up (sooner than later).
|
/hold cancel |
|
/retest |
|
@jstuever: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
Previously, a kube-rbac-proxy container was deployed with the operator deployment in order to provide RBAC security to the metrics port. Because it was deployed as part of the operator deployment, the tls configuration for the container could not be managed by the operator itself.
This change removes kube-rbac-proxy from the metrics service and implements rbac via the controller-runtime directly. As a result, the tls configuration on the metrics port can now be managed by the operator while maintaining equal security posture.
Summary by CodeRabbit
New Features
Infrastructure