-
Notifications
You must be signed in to change notification settings - Fork 111
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
Questions & Suggestions regarding Cloud Code #343
Comments
Thanks Vignesh(@tvvignesh) for detailed and thoughtful suggestions and questions: (1) Deeper integrations with Minikube (local development, auto state transitions and cleanups), simplification of GCP auth, secrets mgmt, testing them locally with out deploying, GCP API usage right out of IDE, integration with serverless compute (like cloud run) with a similar flow as K8. The IDE plugins are free, we are re-evaluating about open sourcing for more community engagement. (2) We have been thinking about something similar for testing in conjunction with micro services development where all of them can’t fit in the box. Today they split out a public URL service endpoints for every run which means you can launch in a remote environment and have other environments to talk to this one using public URL/interfaces. We will at some time simplify the upstream routing that does the routing magic in a subset of micro-services but downstream routing should be already there. (3) What is the scenario you are trying to use the remote VM for? Are you planning to use the remote GCE VM as a dev environment for IDE(VSCode) (or) Are you trying to work with multiple GCE VMs and from IDE(VSCode) you need a way to browse and perform operations on each VM across pool of VMs? For the first one did you try our remote shell development environment that plugins work with(https://cloud.google.com/code/docs/vscode/quickstart-remote-dev). (4) I think the above tutorial is what you are looking for, in the remote shell if you open any terminal that one is connected to your remote box and you can do all your development there. But do let me know if that is not what you are looking for. (5) I haven’t played with tilt for orchestration of services, the skaffold configuration is planning to take multiple set of environment and they map to set of services that can be deployed sometime in their roadmap. Today in the project you can have multiple services and we allow deploying to all of them at once. I am going to follow up on this one and get back. (6) This multiple different phases/diagnostics is going to be coming in to cloud code in a native VSCode UX, some time in early next year. What problem do you currently see when trying to deploy using IDE plugins since those stage are broken down in a different way in the output window? (7) Going to create a separate task for the dynamic port forwarding feature. |
@sivakku Thanks for your quick amd elaborate reply.
a) Telepresence - Does not cater to multiple developers on the same namespace b) Service Preview - Addresses this but since I use Restricted PSP in my cluster, I was not able to use it. Also it is not open source, with free subscription upto 5 devs, c) Mindaro - Does exactly this but facing quite a few challenges since it is in its early stages - You can see Issue No. 63 which I filed in their repo and they are actively working on it. But the great thing here is that, it integrates with Azure Kubernetes Tools extension hence making it a platform for other extensions to work on. d) Tilt - Good for local development but I still do face some challenges which I am discussing with the Tilt team. But does not provide hybrid devex like Mindaro with no integration currently with VSCode having me to switch contexts regularly. Also, since it currently does not cater prod deployments, I have to maintain both a Tiltfile and Skaffold file. e) Okteto - While they are doing great work (and I have not tried it personally), the problem I see here is the need to have separate namespaces for every developer. f) Skaffold - Great for local dev and a bit challenging for remote dev and does not currently do hybrid dev So, as of now, I am just hoping I can have one tool (preferrably with VSCode) to do all the job for me.
Hope this clarifies. Thanks. |
Btw 3 and 4 are not critical for me since the scripts already work well for me. The rest are important to have. |
@sivakku Hi again. I just tried cloud code properly again and I am facing some issues. Cloud code deployed everything properly onto the cluster.
In the same context, a way to manually trigger cleanup would be good to have. Apart from this, it was really great. I will share more feedback as I try it. |
Another issue I see is that, even if I install the latest version of skaffold, for eg. For instance When I do
Though I understand that Cloud code may depend on a specific version of skaffold, I am wondering why its overriding the global path variables. |
Sorry, making this thread huge. Just wanted to consolidate all my suggestions here as I work with Cloud code. When you go to logs viewer (through the picker) rather than drilling through the explorer, selecting the right pod and clicking on View Logs the filters are empty. Rather the filters can be inferred from the skaffold file being used. This will allow me to do things like add a keybinding to Logs Viewer, then I can just get into the project I want in VSCode and press the Keybinding to get the logs. A minor but significant usability improvement. |
GKE offers me checkboxes to select multiple resources and do bulk operations (like bulk delete). The Cloud Code Cluster explorer can support multiple operations like these as well rather than having to do it via the UI (this is not a priority though, but good to have). |
The Log Viewer only has options to filter pods within a deployment, but not statefulsets. You also don't get the Context menu when you right click in the cluster explorer. Also, if I am not wrong, none of the logs are shown for pods from Stateful sets, even if you go to the pod level and go to View Logs. Tried the same with different statefulsets and have the same result. It works for deployments though. |
I find Cloud Code Explorer to be very slow (not sure why). So, when I went to the console to see if there were any logs, I find these huge logs printed repeatedly that the console itself hangs when scrolling through them. Also the sourcemap does not exist in the path it is looking for, I get these logs in the console: |
Hi. I have been using Skaffold for quite a while now and Cloud code's support for Skaffold with VSCode looks awesome. I did try installing and exploring the features. Looks great, I just had a few questions for which I was looking for answers. Also had some suggestions/ideas. Sharing it all here:
I have been using Azure Kubernetes Tools extension so far to work with K8 clusters in both my local Kind cluster as well my remote GKE cluster. Is it possible to provide some comparison on how both of these differ (pros/cons) - would be useful info for users trying to choose either. One pro I definitely see of Azure kubernetes tools is the licensing (which is open source MIT) whereas this is proprietary and the pro I see here is the great integration with Skaffold. Is there any comparison available?
I have been also closely following Mindaro a.k.a Bridge for Kubernetes (https://github.com/microsoft/mindaro) , again from Microsoft which is in early development. Does cloud code support something like that? Have everything in remote cluster and take just what you are working on and work on it locally? (Hybrid development). This would greatly help since as the application grows, especially in a microservices environment, it is not practical to have all services running locally. And complete remote development would also be an issue. So, something like this would help since it avoids the mess of having to provision separate namespaces for every developer.
Since Cloud Code already has integration with GCP, an integration with GCE would also be great here. I have my complete remote dev environment hosted in GCE and I access everything else from there. I use pre-emptible GCE VMs with boot disk and data disk attached to the VM (so my dev env is disposable). I currently do operations like starting VM, stopping VM via Powershell scripts but it would be great to have Cloud code support that as well.
Also, in the same context, I use IAP tunneling for everything. So, I run a Powershell script again to start my IAP tunnel after which I do a VSCode remote SSH via the tunnel onto my development VM from which I do everything. Maybe, Cloud code can provide me a config to automatically tunnel when I use remote SSH.
Also, whenever I start my cluster, I have to deploy multiple services be it remote/local. Currently, I am doing this using Tilt locally and I am not sure what's the best way to do this remotely, but Cloud Code or Skaffold providing this feature would be great. I see that this has landed in Icebox milestone with Skaffold here: Better handling for multiple microservices (ability to handle multiple skaffold.yaml files) GoogleContainerTools/skaffold#167 and another issue here: Support parent/child "module" spec inlined in a single skaffold.yaml GoogleContainerTools/skaffold#4457 - this is important to manage a microservices architecture.
In the same context, it would be great if Cloud Code handles this: https://github.com/GoogleContainerTools/skaffold/blob/master/ROADMAP.md#interactive-ui---p3 so developers can avoid a separate UI or context switching but get a context of all services running in the cluster without having to manually browse open the logs of every service.
Also, regarding Port Forwarding, while I see this issue: FR: Allow port-forward and attaching terminal to pods/services #47 where Skaffold and Run on Kubernetes, the problem is that the Port forwarding rules need to be predefined. While I can definitely specify the port forwarding rules for significant pods before hand, not all ports would typically be specified. Having the ability to dynamically specify ports to forward would help rather than adding it to the config. This is how Remote SSH and Azure VSCode Kubernetes tools does forwarding as well. Right click -> Forward Port -> Specify port mapping -> Done
Thanks in advance. And sorry for the long thread 😅
The text was updated successfully, but these errors were encountered: