Come up with clear policy around how integrations are managed #1512
Replies: 10 comments 12 replies
-
First I want to talk about Jan's idea. His idea is to have a directory that contains the integrations. I'm not sure whether this directory is one that exists as part of the installation of RD, or whether this directory would be created at some point when RD is running. We would then create an entry in While I like this scheme because of its simplicity, I don't see a way for it to work for AppImages on Linux. This is because of how AppImages work: they are a filesystem image that is mounted using FUSE at runtime on a directory in Another possible problem is users overwriting Of course, there is no reason that we couldn't have one scheme for AppImages and another scheme for other formats. But it would be nice to minimize the number of schemes we have. |
Beta Was this translation helpful? Give feedback.
-
I just remembered that I suggested using And the warning about shadowing binaries on |
Beta Was this translation helpful? Give feedback.
-
I want to describe the problem that initially got me onto this subject - maybe it will help others understand where I'm coming from. The problem has to do with the AppImage on Linux. I'm going to describe how AppImages work again because I want to have all the information here. An AppImage is an executable with a filesystem image embedded in it. This filesystem image contains everything that is needed to run an application: the application executable, .so's, static files, and so on. The executable part of the AppImage has just enough code to:
This is great because it means that we can ship and run our programs as a single file. All the user has to do is make the AppImage executable, and they have a program that just runs on their machine. Of course, in our case it gets a little more complicated. Running the application from a mounted filesystem image means that when the application exits, the filesystem image must be unmounted. This is important to understand because we rely on the filesystem image to provide our integrations: symlinks are made in This is a problem that David noticed previously. The solution at that time (see Here is what I propose. I want to create a part of the Settings object that is for tracking which integrations we are managing, and which we are not. These would all be I'm not yet sure how this will work with the existing |
Beta Was this translation helpful? Give feedback.
-
I feel like managing each integration individually is just too much, so I would prefer to have the same approach for AppImage as for macOS and Windows (and non-AppImage Linux): Whenever Rancher Desktop starts, it can will delete (if it exists) and create a symlink from Sample commands (but on macOS): $ rm ~/.rancher-desktop
$ ln -s "/Applications/Rancher Desktop.app/Contents/Resources/resources/darwin/bin" ~/.rancher-desktop
$ ls ~/.rancher-desktop/
docker err helm kubectl kuberlr nerdctl
$ ~/.rancher-desktop/kuberlr version
kuberlr version: 0.4.1 (tagged as "v0.4.1") 2021-08-17T16:44:50Z go1.13.15 Just like on other platforms, users can then add their own version of utilities on the front before that, to shadow the versions included with Rancher Desktop. The AppImage should delete the symlink when shutting down, but I don't think a dangling symlink in |
Beta Was this translation helpful? Give feedback.
-
One complication is that the docker plugins ( It is not clear to me yet how to handle this. @ericpromislow Is there any problem with installing the plugins into the |
Beta Was this translation helpful? Give feedback.
-
So Jan and I chatted about this and we'd tentatively like to move in the direction Jan described, that is, modifying There are a couple wrinkles though:
|
Beta Was this translation helpful? Give feedback.
-
I looked into whether the directory Maybe we can just symlink a docker plugins directory within the RD installation to |
Beta Was this translation helpful? Give feedback.
-
Question: should we always create a symlink in Pro:
I would say we should definitely do this for all versions on Linux. I'm less sure about macOS. On Windows we have 2 directories, making it more complex, and we already have a way to put them on the Bikeshedding: I changed the symlink location to |
Beta Was this translation helpful? Give feedback.
-
Personally I'm not a fan of this, but for the sake of discussion: Should we offer to edit shell configuration scripts? Unlike editing Look through the user's home directory for ### RANCHER DESKTOP START (DO NOT EDIT)
export PATH="$HOME/.rd/bin:$PATH"
### RANCHER DESKTOP END (DO NOT EDIT) Bonus: we likely end up close to the front of the |
Beta Was this translation helpful? Give feedback.
-
My 2 cents as an end user... Clearly, there has been a lot of discussion here about the possible ways to go forward with this. So that you know where I am coming from - I am on Fedora 35 and use the AppImage to run RD (RD is great by the way!). I opened #1619 as I wanted the preferences I had selected for 'Supporting Utilities' to be preserved across restarts of RD. This was already mentioned in the comment above:
Other than that issue (and the issues/bugs picked up at the head of this discussion) the current way things work is intuitive and work well for me. I have a clear understanding of what selecting those check boxes does and how it works - the implementation is simple enough for me to understand. Some of the implementation details/internals you are discussing are clearly beyond what I need to know about or understand as an end user. However, I would like to say that I do not like any solution that:
I hope that helps. |
Beta Was this translation helpful? Give feedback.
-
As it is, there is confusion as to how we want to manage integrations. By "integrations", I mean "the programs we install alongside Rancher Desktop to enable users to use the services running in the VM." So, for example,
kubectl
andhelm
.There are a number of issues related to this:
#848
#889
#1300
#1400
I am creating this discussion so that we can establish a clear policy on how we manage integrations.
Beta Was this translation helpful? Give feedback.
All reactions