OCPBUGS-35800: kubelet config controller does not always propogate tlsSecurityProfile - #4512
Conversation
|
@djoshy: This pull request references Jira Issue OCPBUGS-35800, which is invalid:
Comment The bug has been updated to refer to the pull request using the external bug tracker. 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. |
|
/jira refresh |
|
@djoshy: This pull request references Jira Issue OCPBUGS-35800, which is valid. The bug has been moved to the POST state. 3 validation(s) were run on this bug
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. |
| <-stopCh | ||
| } | ||
| func (ctrl *Controller) filterAPIServer(apiServer *configv1.APIServer) { | ||
| if apiServer.Name == "cluster" { |
There was a problem hiding this comment.
reversing the logic here would remove the nested if.
| if apiServer.Name == "cluster" { | |
| if apiServer.Name != "cluster" { | |
| return | |
| } |
|
/test unit /hold for QE review |
|
/lgtm |
This commit replaces the hardcoded TLS configuration values in the templates with rendered values from the APIServer object. This is done during bootstrap and during in cluster operation. If no tls configuration is provided by the APIServer object, the intermediate profile is used as a default.
This commit adds new APIServer based callbacks for the kubelet config controller, so that it can update the kubelet config MachineConfigs if there is an update to the cluster wide TLS settings.
|
/retest |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: djoshy, rphillips 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 |
|
/test e2e-gcp-op-techpreview /hold |
|
/test all |
|
Pre-merge verified: More detail steps about verification are provided here: MCO-850 Check that applied config is configured on the node too. Switch the tlsSecurityProfile via apiserver Apply custom created kubelet config with TLS settings that are different from the the APIServer object. Wait for particular pool to be updated on which kubelet config is applied Check the The tls setting is not disturbed by kubelet config in pods we could see the same tls setting as that of API server |
|
/unhold |
|
Pre-merge Verified on Steps: By default the tlsSecurityProfile is Intermediate , same can be seen on node in More detail steps about verification are provided here: MCO-850 Switch tlsSecurityProfile and wait till MCP is updated Apply kubelet config Wait for MCP to be updated on which kubelet is applied Kubelet Config does not affect the apiserver configuration applied other than on particular pool node If we apply the tls setting after the kubelet config is applied it wont override the tls setting of kubelet config e.g in SNO cluster Switch to Custom API server Delete the Kubelet Config to have same tls setting as of API server Note: As all the cluster installed here has API server object and if we manually try to delete the api server it shows as forbidden to remove it so hence the fail configs were not generated. |
|
/label qe-approved |
|
@djoshy: This pull request references Jira Issue OCPBUGS-35800, which is valid. 3 validation(s) were run on this bug
No GitHub users were found matching the public email listed for the QA contact in Jira (ptalgulk@redhat.com), skipping review request. 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. |
|
/test e2e-hypershift |
|
/test e2e-gcp-op |
|
/override ci/prow/e2e-hypershift Overriding since hypershift seems to be flaking and it has passed several times prior. |
|
@djoshy: Overrode contexts on behalf of djoshy: ci/prow/e2e-hypershift 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 kubernetes-sigs/prow repository. |
|
@djoshy: Jira Issue OCPBUGS-35800: All pull requests linked via external trackers have merged: Jira Issue OCPBUGS-35800 has been moved to the MODIFIED state. 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. |
|
@djoshy: 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. |
OCPBUGS-35800: kubelet config controller does not always propogate tlsSecurityProfile
- What I did
APIServerobject settings, including their bootstrap variants. If a bootstrapAPIServermanifest is provided, the controllers will use that - otherwise it will default to the intermediate TLS profile.APIServerobject. The initial resync is done by the node config controller, which subsequently calls the kubelet-config and feature sub controllers.- How to verify it
APIServermanifest named "cluster". Ensure that this manifest has the TLS profile you'd like to test./etc/kubernetes/kubelet.conf) on any node to ensure that it has the correct values for TLSCiphers and TLSMinVersion.APIServerobject named "cluster".MachineConfigrollout. You can verify the TLS values on the nodes are as expected as the update rolls through the cluster.KubeletConfigwith TLS settings that are different from the ones in theAPIServerobject. This should cause anotherMachineConfigrollout to the pool it was targeted to. After the update, you should see the nodes in the pool with the TLS values specified by the newKubeletConfig(not theAPIServerobject).Things to note