如何在DigitalOceanKubernetes上设置代码服务器云IDE平台

来自菜鸟教程
跳转至:导航、​搜索

作为 Write for DOnations 计划的一部分,作者选择了 Free and Open Source Fund 来接受捐赠。

介绍

随着开发人员工具迁移到云端,云 IDE(集成开发环境)平台的创建和采用正在增长。 云 IDE 允许开发人员团队之间的实时协作,以便在统一的开发环境中工作,从而最大限度地减少不兼容性并提高生产力。 云 IDE 可通过 Web 浏览器访问,适用于各种现代设备。 云 IDE 的另一个优势是可以利用集群的能力,这可以大大超过单个开发计算机的处理能力。

code-serverMicrosoft Visual Studio Code 运行在远程服务器上,可直接从浏览器访问。 Visual Studio Code 是一个现代代码编辑器,具有集成的 Git 支持、代码调试器、智能自动完成以及可自定义和可扩展的功能。 这意味着您可以使用各种设备,运行不同的操作系统,并且始终拥有一致的开发环境。

在本教程中,您将在您的 DigitalOcean Kubernetes 集群上设置代码服务器云 IDE 平台,并在您的域中公开它,并使用 Let's Encrypt 证书进行保护。 最后,您将在 Kubernetes 集群上运行 Microsoft Visual Studio Code,可通过 HTTPS 访问并受密码保护。

先决条件

  • 一个 DigitalOcean Kubernetes 集群,您的连接配置为 kubectl 默认值。 创建集群时,在 Connect to your Cluster 步骤下显示了有关如何配置 kubectl 的说明。 要在 DigitalOcean 上创建 Kubernetes 集群,请参阅 Kubernetes 快速入门
  • 安装在本地机器上的 Helm 3 包管理器。 完成 如何使用 Helm 3 包管理器 教程在 Kubernetes 集群上安装软件的 步骤 1
  • Nginx Ingress Controller 和 Cert-Manager 使用 Helm 安装在您的集群上,以便使用 Ingress Resources 公开代码服务器。 为此,请遵循 如何使用 Helm 在 DigitalOcean Kubernetes 上设置 Nginx 入口。
  • 托管代码服务器的完全注册域名,指向 Nginx Ingress 使用的负载均衡器。 本教程将自始至终使用 code-server.your_domain。 您可以在 Namecheap 上购买一个域名,在 Freenom 上免费获得一个域名,或者使用您选择的域名注册商。 此域名必须与如何在 DigitalOcean Kubernetes 必备教程上设置 Nginx Ingress 中使用的域名不同。

第 1 步 — 安装和公开代码服务器

在本节中,您将安装代码服务器到您的 DigitalOcean Kubernetes 集群,并使用 Nginx Ingress 控制器在您的域中公开它。 您还将设置入场密码。

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

kubectl delete -f hello-kubernetes-first.yaml
kubectl delete -f hello-kubernetes-second.yaml
kubectl delete -f hello-kubernetes-ingress.yaml

kubectl delete 命令在传递 -f 参数时接受要删除的文件。

您将部署配置存储在本地计算机上的一个名为 code-server.yaml 的文件中。 使用以下命令创建它:

nano code-server.yaml

将以下行添加到文件中:

代码服务器.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: code-server
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: code-server
  namespace: code-server
spec:
  ingressClassName: nginx
  rules:
  - host: code-server.your_domain
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: code-server
            port:
              number: 80
---
apiVersion: v1
kind: Service
metadata:
 name: code-server
 namespace: code-server
spec:
 ports:
 - port: 80
   targetPort: 8080
 selector:
   app: code-server
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: code-server
  name: code-server
  namespace: code-server
spec:
  selector:
    matchLabels:
      app: code-server
  replicas: 1
  template:
    metadata:
      labels:
        app: code-server
    spec:
      containers:
      - image: codercom/code-server:latest
        imagePullPolicy: Always
        name: code-server
        env:
        - name: PASSWORD
          value: "your_password"

此配置定义了命名空间、部署、服务和入口。 命名空间称为 code-server 并将代码服务器安装与集群的其余部分分开。 Deployment 包含一个 codercom/code-server Docker 镜像的副本,以及一个名为 PASSWORD 的环境变量,用于指定访问密码。

code-server 服务在端口 80 内部公开 pod(作为部署的一部分创建)。 文件中定义的 Ingress 指定 Ingress Controller 为 nginx,并且将从 Service 提供 code-server.your_domain 域。

请记住将 your_password 替换为您想要的密码,并将 code-server.your_domain 替换为您想要的域,指向 Nginx 入口控制器的负载均衡器。

保存并关闭文件。

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

kubectl apply -f code-server.yaml

您将看到以下输出:

Outputnamespace/code-server created
ingress.networking.k8s.io/code-server created
service/code-server created
deployment.apps/code-server created

您可以通过运行以下命令来查看代码服务器 pod 变得可用:

kubectl get pods -w -n code-server

输出将类似于以下内容:

OutputNAME                           READY   STATUS              RESTARTS   AGE
code-server-6c4745497c-l2n7w   0/1     ContainerCreating   0          12s

一旦状态变为 Running,code-server 就已完成安装到您的集群。

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

code-server 要求您输入密码。 输入上一步设置的,按进入IDE。 您现在将进入 code-server 并立即看到它的编辑器 GUI。

您已将代码服务器安装到 Kubernetes 集群并使其在您的域中可用。 您还验证了它要求您使用密码登录。 现在,您将继续使用 Cert-Manager 使用免费的 Let's Encrypt 证书来保护它。

第 2 步 - 保护代码服务器部署

在本节中,您将通过将 Let's Encrypt 证书应用于您的 Ingress 来保护您的代码服务器安装,Cert-Manager 将自动创建该证书。 完成此步骤后,您的代码服务器安装将可通过 HTTPS 访问。

打开code-server.yaml进行编辑:

nano code-server.yaml

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

代码服务器.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: code-server
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: code-server
  namespace: code-server
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - code-server.your_domain
    secretName: codeserver-prod
  rules:
    - host: code-server.your_domain
    http:
      paths:
      - backend:
          service:
            name: code-server
            port:
              number: 80
...

首先,您指定此 Ingress 将使用 cluster-issuer letsencrypt-prod 来提供您作为先决条件的一部分创建的证书。 然后,您指定将在 tls 部分下保护的域,以及持有它们的 Secret 的名称。

保存并关闭文件。

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

kubectl apply -f code-server.yaml

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

kubectl describe certificate codeserver-prod -n code-server

完成后,输出的结尾将类似于以下内容:

OutputEvents:
  Type    Reason     Age   From          Message
  ----    ------     ----  ----          -------
  Normal  Issuing    44m   cert-manager  Issuing certificate as Secret does not exist
  Normal  Generated  44m   cert-manager  Stored new private key in temporary Secret resource "codeserver-prod-m7r8v"
  Normal  Requested  44m   cert-manager  Created new CertificateRequest resource "codeserver-prod-sc7xm"
  Normal  Issuing    44m   cert-manager  The certificate has been successfully issued

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

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

第三步——探索代码服务器接口

在本节中,您将探索代码服务器接口的一些特性。 由于 code-server 是运行在云端的 Visual Studio Code,它与独立桌面版具有相同的界面。

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

这个栏是可定制的; 您可以重新排列这些视图或将它们从栏中删除。 默认情况下,第一个视图会打开 Explorer 面板,该面板提供项目结构的树状导航。 您可以在此处管理您的文件夹和文件——根据需要创建、删除、移动和重命名它们。 下一个视图提供对搜索和替换功能的访问。

在此之后,按照默认顺序,是您对源代码控制系统的视图,例如 Git。 Visual Studio Code 还支持其他源代码控制提供程序,您可以在此 文档 中找到使用编辑器的源代码控制工作流的更多说明。 由于当前的空项目(默认打开)未初始化为 Git 存储库,因此 Visual Studio Code 为您提供了这样的初始化。

活动栏上的调试器选项提供了面板中调试的所有常用操作。 Visual Studio Code 内置了对 Node.js 运行时调试器和任何转换为 Javascript 的语言的支持。 对于其他语言,您可以为所需的调试器安装 extensions。 您可以将调试配置保存在launch.json文件中。

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

GUI 的中心部分是您的编辑器,您可以通过选项卡将其分开以进行代码编辑。 您可以将编辑视图更改为网格系统或并排文件。

通过 File 菜单创建新文件后,将在新选项卡中打开一个空文件。 保存后,文件名将在资源管理器侧面板中可见。 可以通过右键单击资源管理器侧边栏并选择 New Folder 来创建文件夹。 您可以通过单击文件夹名称来展开文件夹,也可以将文件和文件夹拖放到层次结构的上部以将它们移动到新位置。

您可以通过按 CTRL+SHIFT+` 或在汉堡菜单中按 Terminal 并选择 New Terminal 来访问终端。 终端将在下方面板中打开,其工作目录将设置为项目的工作区,其中包含资源管理器侧面板中显示的文件和文件夹。

如果您希望销毁集群上的部署,请运行以下命令:

kubectl delete -f code-server.yaml

您已经浏览了代码服务器接口的高级概述并查看了一些最常用的功能。

结论

您现在已经在 DigitalOcean Kubernetes 集群上安装了代码服务器,这是一个多功能的云 IDE。 您可以单独处理源代码和文档,也可以与您的团队协作。 在集群上运行云 IDE 可为测试、下载以及更彻底或更严格的计算提供更多功能。 有关更多信息,请参阅 Visual Studio 代码文档 中有关附加功能的信息以及有关代码服务器其他组件的详细说明。