真香!使用 Goland 网页版实现真正的云开发

2021年3月23日 324点热度 0人点赞 0条评论

图片

云原生玩家往往都是左手 MacBook,右手 Goland,但由于大部分人的 MacBook 硬件资源有限,基本上无法丝滑地使用 Goland。即使你是 8C16G 的高富帅,多开几个 PornHub 标签页也会撑不住的,许多人不得不忍痛转向 VSCode

现在我要告诉你们一个重大好消息:Goland 竟然有网页版了!

有了网页版之后,我们就可以直接在 Linux 环境中调试应用了,那感觉真叫一个酸爽啊。只要你的远程机器资源充足,可以随意给网页版 Goland 分配 CPU 和内存资源,想象一下,你拥有一个 16C32G 的网页版 Goland,而且这 16C32G 都是 Goland 独占的,那该有多幸福!

部署方法闭着眼睛也能猜到了,官方直接提供了 Docker 镜像,一把梭跑起来就完事了,项目地址:

  • https://github.com/JetBrains/projector-docker[1]

官方提供的部署命令比较简单,不太适合实际使用,还需要加点参数才能真正用起来。由于我有丰富的 Kubernetes 集群资源,就直接部署在 Kubernetes 中了,本文也只讲解 Kubernetes 的部署方式,如果你是通过 docker-compose 或直接用 docker 部署,可以参考我的方案自己修改。

官方镜像最大的问题是没有安装 golang 的 SDK 环境,但是我也不想自己再重新构建镜像了,就直接使用 Kubernetes 的持久化存储来解决了。同时 Goland 自身的配置和 Go 项目所在的目录都要持久化,不然 Pod 重启就玩完了。好在所有持久化的东西都在 /home/projector-user 目录下,存储直接挂载到这个目录就行了。

先准备一个 Deployment 资源清单:

# projector-goland.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: project-data
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: projector-goland
  labels:
    app: projector-goland
spec:
  replicas: 1
  selector:
    matchLabels:
      app: projector-goland
  template:
    metadata:
      labels:
        app: projector-goland
    spec:
      containers:
      - name: projector-goland
        image: registry.jetbrains.team/p/prj/containers/projector-goland
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
        - mountPath: /home/projector-user
          name: project-data
      imagePullSecrets:
      - name: regcred
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: project-data
        persistentVolumeClaim:
          claimName: project-data
---
apiVersion: v1
kind: Service
metadata:
  name: projector-goland
  labels:
    app: projector-goland
spec:
  selector:
    app: projector-goland
  ports:
    - protocol: TCP
      name: http
      port: 80
      targetPort: 8887

如果你的 Kubernetes 集群没有对接后端分布式存储,可以使用 hostPath 代替,然后将 Pod 调度到指定的节点。

使用资源清单创建应用实例:

$ kubectl apply -f projector-goland.yaml

查看是否创建成功:

$ kubectl get pod -l app=projector-goland
NAME                                READY   STATUS    RESTARTS   AGE
projector-goland-7dcc58f964-9p7xw   1/1     Running   0          3m38s

$ kubectl get svc -l app=projector-goland
NAME               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
projector-goland   ClusterIP   10.106.190.178   <none>        80/TCP    3m38s

如果你能够?直接访问集群的 Service IP,就可以直接通过 Service IP 访问 Goland 网页版了:

图片

经过一番设置之后,最后激活进入主界面:

图片

激活方法我就不介绍了,大家自己想办法。

接下来你可以从本地的 Goland IDE 导出插件和配置:

图片

将备份拷贝到容器中:

$ kubectl cp settings.zip projector-goland-7dcc58f964-9p7xw:/home/projector-user/settings.zip

在网页版 Goland 中依次点击 Configure -> Import Settings

图片

选择备份配置:

图片

点击 OK 开始导入:

图片

最后选择 Shutdown 关闭容器进程,稍后 Pod 中的进程会原地重启,Pod 不会被销毁重建:

图片

点击 reconnect 重新连接:

图片

下面还需要做一些额外的操作,因为官方的镜像默认没有安装 golang 的 SDK 环境,在线下载需要叉叉上网,所以最好还是先手动下载:

$ wget https://mirrors.ustc.edu.cn/golang/go1.16.2.linux-amd64.tar.gz

然后再拷贝到容器中:

$ kubectl cp go1.16.2.linux-amd64.tar.gz projector-goland-7dcc58f964-9p7xw:/home/projector-user/go1.16.2.linux-amd64.tar.gz

进入容器解压 sdk:

$ kubectl exec -it projector-goland-7dcc58f964-9p7xw -- bash
projector-user@projector-goland-7dcc58f964-9p7xw:/$ cd ~
projector-user@projector-goland-7dcc58f964-9p7xw:/$ mkdir sdk
projector-user@projector-goland-7dcc58f964-9p7xw:/$ tar zxvf go1.16.2.linux-amd64.tar.gz -C sdk

访问 Goland 网页版,依次点击右下角的 Configure -> Settings -> Go -> GOROOT,点击 Add SDK,选择 local:

图片

选择 sdk 路径,然后点击 OK:

图片

点击 Apply,然后再点击 OK:

图片

点击 Go Modules,勾上 Enable Go modules integrationVgo excutable 选择 Project SDK,然后点击 OK:

图片

至此网页版 Goland 就配置完成了:

图片

从此以后躺在家里吃灰的 iPad 就可以拿来写代码了。。。

如果你无法拉取官方的镜像,可以从我这边获取,关注公众号:

公众号后台回复 goland 即可获取 goland 网页版镜像。

参考资料

[1]

https://github.com/JetBrains/projector-docker: https://github.com/JetBrains/projector-docker

图片

图片

你可能还喜欢

点击下方图片即可阅读

图片

cgroup 挂载失败是什么鬼???

图片

云原生是一种信仰 ?


关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!



图片

图片

点击 "阅读原文" 获取更好的阅读体验!

发现朋友圈变“安静”了吗?

图片

6060真香!使用 Goland 网页版实现真正的云开发

root

这个人很懒,什么都没留下

文章评论