如何在 DigitalOcean Kubernetes 上设置 code-server 云 IDE 平台

作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。

介绍

随着开发人员工具转向云,云 IDE(集成开发环境)平台的创建和采用正在增加。云 IDE允许开发人员团队之间实时协作,在一个统一的开发环境中工作,从而最大限度地减少不兼容性和提高生产力。通过Web浏览器访问,云 IDE可以从任何现代设备中获得。

代码服务器Microsoft Visual Studio Code在远程服务器上运行,可以直接从您的浏览器访问。Visual Studio Code是一个现代代码编辑器,具有集成的Git支持,代码调试器,智能自动完成,以及可自定义和可扩展的功能。

在本教程中,您将在您的 DigitalOcean Kubernetes 集群上设置代码服务器云 IDE 平台,并将其暴露在您的域中,使用 Let's Encrypt 证书进行保护。

前提条件

  • 数字海洋Kubernetes集群,您的连接配置为 kubectl 默认值。 关于如何配置 kubectl 的指令, 在创建您的集群时, 在 ** 连接到您的集群** 步骤下显示 。 要创建数字海洋上的Kubernetes集群,请参见[Kubernetes Quickstart] (https://www.digitalocean.com/docs/kubernetes/quickstart/).
  • Helm 3 软件包管理器安装在您的本地机器上 。 完成 [Helm 3 软件包管理器在Kubernetes集群上安装软件]的步骤1(https://andsky.com/tech/tutorials/how-to-install-software-on-kubernetes-clusters-with-the-helm-3-package-manager)教程.
  • Nginx 入侵控制器和 Cert-Manager 安装在您的集群上,使用Helm来曝光使用入侵资源的代码服务器. 要做到这一点,请遵循[如何在使用Helm的数字海洋库伯内特斯上设置Nginx入侵 (https://andsky.com/tech/tutorials/how-to-set-up-an-nginx-ingress-on-digitalocean-kubernetes-using-helm).
  • 一个完全注册的域名来主机代码服务器,指向了Nginx Ingress使用的负载平衡器. 此教程将使用代码服务器。 您的域名 。 您可以在 [Namecheap] (https://www.namecheap.com/) 上购买域名, 在 [Freenom (https://www.freenom.com/en/index.html?lang=en 上免费获取域名, 或者使用您选择的域名注册员 。 此域名必须不同于 如何在数字海洋库伯内特斯上设置 Nginx 入侵 中所使用的域名 。 (英语)

步骤 1 – 安装和暴露代码服务器

在本节中,您将安装代码服务器到您的 DigitalOcean Kubernetes 集群,并使用 Nginx Ingress 控制器将其曝光到您的域。

作为 Nginx Ingress 控制器的前提条件的一部分,您创建了示例服务和 Ingress. 在本教程中您不需要它们,因此您可以通过运行以下命令来删除它们:

1kubectl delete -f hello-kubernetes-first.yaml
2kubectl delete -f hello-kubernetes-second.yaml
3kubectl delete -f hello-kubernetes-ingress.yaml

kubectl删除命令接受文件在通过-f参数时删除。

您将将部署配置存储在本地机器上,以名为code-server.yaml的文件中。

1nano code-server.yaml

将以下行添加到文件中:

 1[label code-server.yaml]
 2apiVersion: v1
 3kind: Namespace
 4metadata:
 5  name: code-server
 6---
 7apiVersion: networking.k8s.io/v1
 8kind: Ingress
 9metadata:
10  name: code-server
11  namespace: code-server
12spec:
13  ingressClassName: nginx
14  rules:
15  - host: code-server.your_domain
16    http:
17      paths:
18      - pathType: Prefix
19        path: "/"
20        backend:
21          service:
22            name: code-server
23            port:
24              number: 80
25---
26apiVersion: v1
27kind: Service
28metadata:
29 name: code-server
30 namespace: code-server
31spec:
32 ports:
33 - port: 80
34   targetPort: 8080
35 selector:
36   app: code-server
37---
38apiVersion: apps/v1
39kind: Deployment
40metadata:
41  labels:
42    app: code-server
43  name: code-server
44  namespace: code-server
45spec:
46  selector:
47    matchLabels:
48      app: code-server
49  replicas: 1
50  template:
51    metadata:
52      labels:
53        app: code-server
54    spec:
55      containers:
56      - image: codercom/code-server:latest
57        imagePullPolicy: Always
58        name: code-server
59        env:
60        - name: PASSWORD
61          value: "your_password"

此配置定义了一个名称空间、一个部署、一个服务和一个 Ingress. 这个名称空间被称为代码服务器,并将代码服务器的安装与您的集群的其余部分分开。

代码服务器服务在端口80内部曝光了pod(作为部署的一部分创建),该文件中定义的 Ingress 指示 Ingress 控制器为nginx,并且代码服务器.your_domain域将由服务提供。

请记住用你想要的密码替换your_password,用你想要的域代替code-server.your_domain,指向 Nginx Ingress 控制器的负载平衡器。

保存并关闭文件。

然后,通过运行以下命令在 Kubernetes 中创建配置:

1kubectl apply -f code-server.yaml

您将看到以下输出:

1[secondary_label Output]
2namespace/code-server created
3ingress.networking.k8s.io/code-server created
4service/code-server created
5deployment.apps/code-server created

您可以通过运行观看代码服务器 pod 变得可用:

1kubectl get pods -w -n code-server

结果将看起来像这样:

1[secondary_label Output]
2NAME READY STATUS RESTARTS AGE
3code-server-6c4745497c-l2n7w 0/1 ContainerCreating 0 12s

一旦状态变为运行,代码服务器就已完成安装到您的集群中。

您现在可以在浏览器中导航到您的域,您将看到代码服务器的登录提示。

code-server login prompt

代码服务器正在询问您的密码. 输入您在上一步设置的密码,然后按 Enter IDE. 您现在将输入代码服务器并立即看到其编辑器的GUI。

code-server GUI

您已在您的 Kubernetes 集群中安装了代码服务器,并在您的域中提供。您还验证了它需要您使用密码登录。

步骤 2 – 确保代码服务器部署

在本节中,您将通过将 Let's Encrypt 证书应用到您的 Ingress 来保护您的代码服务器安装,而 Cert-Manager 将自动创建这些证书。

打开 code-server.yaml 来编辑:

1nano code-server.yaml

将突出列出的行添加到您的文件中,确保您用自己的域代替示例域:

 1[label code-server.yaml]
 2apiVersion: v1
 3kind: Namespace
 4metadata:
 5  name: code-server
 6---
 7apiVersion: networking.k8s.io/v1
 8kind: Ingress
 9metadata:
10  name: code-server
11  namespace: code-server
12  annotations:
13    cert-manager.io/cluster-issuer: letsencrypt-prod
14spec:
15  ingressClassName: nginx
16  tls:
17  - hosts:
18    - code-server.your_domain
19    secretName: codeserver-prod
20  rules:
21    - host: code-server.your_domain
22    http:
23      paths:
24      - backend:
25          service:
26            name: code-server
27            port:
28              number: 80
29...

首先,您指定此 Ingress 将使用集群发行器 letsencrypt-prod 来提供您创建的证书,作为前提的一部分。

保存并关闭文件。

通过运行以下命令将更改应用到您的 Kubernetes 集群:

1kubectl apply -f code-server.yaml

您需要等待几分钟,让 Let's Encrypt 提供您的证书,同时,您可以通过查看以下命令的输出来跟踪其进展:

1kubectl describe certificate codeserver-prod -n code-server

当它完成时,输出的结尾将看起来像这样:

1[secondary_label Output]
2Events:
3  Type Reason Age From Message
4  ----    ------     ----  ----          -------
5  Normal Issuing 44m cert-manager Issuing certificate as Secret does not exist
6  Normal Generated 44m cert-manager Stored new private key in temporary Secret resource "codeserver-prod-m7r8v"
7  Normal Requested 44m cert-manager Created new CertificateRequest resource "codeserver-prod-sc7xm"
8  Normal Issuing 44m cert-manager The certificate has been successfully issued

您现在可以在浏览器中更新您的域名,您将看到浏览器地址栏的左侧的锁定,表示连接是安全的。

在此步骤中,您已配置 Ingress 以确保您的代码服务器部署,现在您可以查看代码服务器用户界面。

步骤 3 – 探索代码服务器接口

在本节中,您将探索代码服务器界面的一些功能,因为代码服务器是运行在云中的Visual Studio Code,它与独立桌面版本具有相同的界面。

在IDE的左侧,有一个六个按钮的垂直行,在被称为活动栏的侧面面板中打开了最常用的功能。

code-server GUI - Sidepanel

此栏是可自定义的;您可以重新排序这些视图或从栏中删除它们. 默认情况下,第一个视图打开 Explorer 面板,为项目结构提供树形导航。

接下来,默认顺序是您对源控制系统的观点,如 Git。Visual Studio Code 也支持其他源控制提供商,您可以在本文中找到与编辑器的源控制工作流程的进一步说明(https://code.visualstudio.com/docs/editor/versioncontrol)。

Source control actions

活动栏上的调试选项提供了面板上的所有常见调试操作。Visual Studio Code 配备了内置的 Node.js运行时调试器和任何转载到 Javascript的语言的支持。 对于其他语言,您可以为所需调试器安装 扩展

Debugger View with launch.json open

活动栏中的最终视图提供了一个菜单,用于访问 Marketplace上可用的扩展。

code-server GUI - Tabs

GUI的中心部分是您的编辑器,您可以通过标签来分离编辑代码,您可以将编辑视图更改为网格系统或旁边的文件。

Editor Grid View

通过 ** 文件 ** 菜单创建新文件后,一个空的文件将打开在一个新的卡片中. 一旦保存,该文件的名称将可在 Explorer 侧面面板中查看. 创建文件夹可以通过右键单击 Explorer 侧面栏并选择 ** 新文件夹**. 您可以通过点击其名称来扩展文件夹,并将文件和文件夹拖放到层次的顶部,将其移动到新的位置。

code-server GUI - New Folder

您可以通过按CTRL+SHIFT+来访问终端,或者在汉堡菜单中按终端并选择新终端来访问终端。

如果您想破坏集群上的部署,请运行以下命令:

1kubectl delete -f code-server.yaml

您已经探索了代码服务器接口的高级概述,并审查了一些最常用的功能。

结论

您现在已在您的 DigitalOcean Kubernetes 集群上安装了代码服务器,一个多功能的云 IDE。您可以单独使用代码和文档工作,或与您的团队合作。在集群上运行云 IDE 可为测试、下载和更彻底或更严格的计算提供更多功能。

Published At
Categories with 技术
comments powered by Disqus