Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

load kubeconfig from custom environment variables #1097

Closed

Conversation

goenning
Copy link
Contributor

@goenning goenning commented Dec 4, 2022

Signed-off-by: goenning me@goenning.net

Motivation

I'd like to support loading kubeconfig files from a non-standard environment variable name.

Solution

I first tried to copy this function over to my project, but Kubeconfig's merge fn is private. We could make it public, but I thought it might be beneficial to make have this small additional function on kube-rs

Signed-off-by: goenning <me@goenning.net>
@codecov-commenter
Copy link

Codecov Report

Merging #1097 (199906f) into main (593fa89) will increase coverage by 0.24%.
The diff coverage is 100.00%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1097      +/-   ##
==========================================
+ Coverage   72.39%   72.64%   +0.24%     
==========================================
  Files          65       65              
  Lines        4774     4821      +47     
==========================================
+ Hits         3456     3502      +46     
- Misses       1318     1319       +1     
Impacted Files Coverage Δ
kube-client/src/config/file_config.rs 74.68% <100.00%> (+0.32%) ⬆️
kube-runtime/src/wait.rs 75.47% <0.00%> (-1.89%) ⬇️
kube-runtime/src/reflector/mod.rs 100.00% <0.00%> (ø)
kube-runtime/src/events.rs 97.29% <0.00%> (+0.07%) ⬆️
kube-runtime/src/scheduler.rs 96.95% <0.00%> (+0.13%) ⬆️
kube-runtime/src/controller/runner.rs 95.45% <0.00%> (+0.14%) ⬆️
kube-client/src/api/util/mod.rs 93.50% <0.00%> (+0.17%) ⬆️
kube-client/src/client/mod.rs 70.48% <0.00%> (+0.17%) ⬆️
kube-runtime/src/utils/event_flatten.rs 92.30% <0.00%> (+0.20%) ⬆️
kube-client/src/lib.rs 94.00% <0.00%> (+0.20%) ⬆️
... and 9 more

Comment on lines -353 to +363
match std::env::var_os(KUBECONFIG) {
Self::from_custom_env(KUBECONFIG)
}

/// Create `Kubeconfig` from a given environment variable.
/// Supports list of files to be merged.
///
/// # Panics
///
/// Panics if the environment variable value contains the NUL character.
pub fn from_custom_env(env_name: &str) -> Result<Option<Self>, KubeconfigError> {
match std::env::var_os(env_name) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As much as it feels like a rare use-case to have people use different evars, this way of exporting two sides of the functionality in from_env that you have here, is probably the best split.

Tried to think of a few other splits where ::from_env would parse the KUBECONFIG first, and maybe splits the paths, then maybe collects (and maybe even reads the files), before then calling a merger fn; but none of those options feel like they are actually giving us a useful split IO/non-IO split without making a very ugly interface.

That said, I'm kind of more positive on exporting the merge fn here than to have kube read a different non-standard evar as that feels very unexpected for kube to do (and something i expect to be an extremely rare use-case - unless I am missing something).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

100% understandable, it's a rare use-case indeed. Exporting merge would also work for me, so I created this other PR #1100

Copy link
Member

@clux clux Dec 7, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Appreciate it. Have merged that* pr and closed this PR. It's nicer to have fns that export documented parts of kubernetes algorithms be public.

@clux
Copy link
Member

clux commented Dec 7, 2022

Replaced by #1100

@clux clux closed this Dec 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants