作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。
介绍
随着开发人员工具转向云,云 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
一旦状态变为运行
,代码服务器就已完成安装到您的集群中。
您现在可以在浏览器中导航到您的域,您将看到代码服务器的登录提示。
代码服务器正在询问您的密码. 输入您在上一步设置的密码,然后按 Enter IDE. 您现在将输入代码服务器并立即看到其编辑器的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的左侧,有一个六个按钮的垂直行,在被称为活动栏的侧面面板中打开了最常用的功能。
此栏是可自定义的;您可以重新排序这些视图或从栏中删除它们. 默认情况下,第一个视图打开 Explorer 面板,为项目结构提供树形导航。
接下来,默认顺序是您对源控制系统的观点,如 Git。Visual Studio Code 也支持其他源控制提供商,您可以在本文中找到与编辑器的源控制工作流程的进一步说明(https://code.visualstudio.com/docs/editor/versioncontrol)。
活动栏上的调试选项提供了面板上的所有常见调试操作。Visual Studio Code 配备了内置的 Node.js运行时调试器和任何转载到 Javascript的语言的支持。 对于其他语言,您可以为所需调试器安装 扩展。
活动栏中的最终视图提供了一个菜单,用于访问 Marketplace上可用的扩展。
GUI的中心部分是您的编辑器,您可以通过标签来分离编辑代码,您可以将编辑视图更改为网格系统或旁边的文件。
通过 ** 文件 ** 菜单创建新文件后,一个空的文件将打开在一个新的卡片中. 一旦保存,该文件的名称将可在 Explorer 侧面面板中查看. 创建文件夹可以通过右键单击 Explorer 侧面栏并选择 ** 新文件夹**. 您可以通过点击其名称来扩展文件夹,并将文件和文件夹拖放到层次的顶部,将其移动到新的位置。
您可以通过按CTRL+SHIFT+
来访问终端,或者在汉堡菜单中按终端
并选择新终端
来访问终端。
如果您想破坏集群上的部署,请运行以下命令:
1kubectl delete -f code-server.yaml
您已经探索了代码服务器接口的高级概述,并审查了一些最常用的功能。
结论
您现在已在您的 DigitalOcean Kubernetes 集群上安装了代码服务器,一个多功能的云 IDE。您可以单独使用代码和文档工作,或与您的团队合作。在集群上运行云 IDE 可为测试、下载和更彻底或更严格的计算提供更多功能。