菜单

Kubernetes 和 Helm 部署

相关源文件

本页面提供使用提供的 Helm Chart 在 Kubernetes 环境中部署 code-server 的文档。有关使用 Docker 进行部署的信息,请参阅 Docker 部署

Kubernetes 上的 code-server 简介

Kubernetes 提供了一个强大的容器化应用程序运行平台,而 Helm 通过“Chart”(定义所有必需资源的打包配置)简化了 Kubernetes 应用程序的管理。code-server Helm Chart 封装了在 Kubernetes 环境中有效部署和运行 code-server 所需的配置。

该 Chart 创建了各种 Kubernetes 资源,包括 Deployment、Service、PersistentVolumeClaim,以及可选的 Ingress 资源,并将它们配置为协同工作。

来源:ci/helm-chart/values.yaml4-15 ci/helm-chart/Chart.yaml1-23

先决条件

在通过 Helm Chart 部署 code-server 之前,请确保您已

  • 运行中的 Kubernetes 集群(1.6+ 版本)
  • 已安装 Helm(3+ 版本)
  • 已配置 kubectl 与您的集群通信
  • 拥有在集群中创建资源的足够权限

使用 Helm 安装 code-server

code-server Helm Chart 位于存储库的 ci/helm-chart 目录下。您可以直接从克隆的存储库进行安装。

基本安装步骤

  1. 克隆仓库

  2. 使用 Helm 安装

  3. 使用 values 文件自定义安装

来源:docs/helm.md10-36

Helm Chart 配置选项

Helm Chart 通过其 values 文件提供了广泛的配置选项。以下是关键的配置类别:

核心配置选项

参数描述默认
image.repositorycode-server 镜像的仓库codercom/code-server
image.tag要使用的镜像标签4.99.3
image.pullPolicy镜像的拉取策略始终
replicaCount要部署的副本数量1
service.typeKubernetes 服务的类型ClusterIP
service.port服务暴露的端口8080

安全配置

参数描述默认
securityContext.enabled启用安全上下文true
securityContext.fsGroup文件系统的组 ID1000
securityContext.runAsUser运行的用户 ID1000
serviceAccount.create创建服务账户true
existingSecret用于密码的现有 Secret 名称""

持久化配置

参数描述默认
persistence.enabled启用持久化存储true
persistence.size持久卷的大小10Gi
persistence.accessMode卷的访问模式ReadWriteOnce
persistence.annotationsPVC 的注解{}

来源:ci/helm-chart/values.yaml4-109

code-server Helm Chart 资源图

来源:ci/helm-chart/Chart.yaml1-23 ci/helm-chart/values.yaml1-209

高级配置选项

添加额外容器

该 Chart 允许您向 Pod 添加额外的容器,这对于 Docker-in-Docker 或数据库等服务非常有用。

请记住同时添加相应的环境变量

来源:ci/helm-chart/values.yaml142-161

通过 Init Container 安装扩展

您可以使用 init 容器预装 VS Code 扩展。

来源:ci/helm-chart/values.yaml162-180 docs/helm.md130-149

卷权限

该 Chart 包含一个卷权限 init 容器,以确保挂载卷的正确所有权。

来源:ci/helm-chart/values.yaml85-88

其他配置选项

该 Chart 支持许多其他自定义选项。

  • 通过 extraArgs 添加额外的命令行参数。
  • 通过 extraVars 添加环境变量。
  • 通过 extraSecretMounts 挂载 Secret。
  • 通过 extraConfigmapMounts 挂载 ConfigMap。
  • 通过 extraVolumeMounts 添加额外的卷挂载。

来源:ci/helm-chart/values.yaml60-80 ci/helm-chart/values.yaml182-209

配置流向 Kubernetes 对象的图

来源:ci/helm-chart/values.yaml1-209

自定义场景示例

通过 Ingress 外部访问

启用 Ingress 控制器的外部访问。

来源:ci/helm-chart/values.yaml45-57

资源限制

设置资源请求和限制

来源:ci/helm-chart/values.yaml98-108

节点放置

使用节点选择器、亲和性和容忍度来控制 Pod 放置。

来源:ci/helm-chart/values.yaml110-114

故障排除

在 Kubernetes 上部署 code-server 时常见问题

  1. Pod 启动失败:

    • 检查持久卷是否已正确配置。
    • 验证安全上下文是否与您的集群兼容。
  2. 无法访问 code-server:

    • 确保服务配置正确。
    • 如果使用 Ingress,请检查 Ingress 资源的状态。
    • 验证所有配置的密码或身份验证是否正确。
  3. 性能问题:

    • 确保在 values 文件中分配了足够的资源。
    • 考虑使用节点亲和性将 Pod 放置在更强大的节点上。

检查 Pod 日志

升级和卸载

升级

当新版本可用时,升级您的部署。

卸载

从您的集群中移除 code-server。

注意:默认情况下,这不会删除持久卷,因此您的数据将得以保留。

来源:docs/helm.md45-53

生产部署的最佳实践

  1. 使用持久化存储:生产部署务必启用持久化。
  2. 配置适当的身份验证:使用现有的 Secret 或设置安全的密码。
  3. 设置资源限制:通过设置适当的限制来防止资源耗尽。
  4. 使用带 HTTPS 的 Ingress:通过正确的 TLS 证书保护通信。
  5. 定期备份:为持久卷实施备份策略。

通过正确配置您的 Helm Chart values,您可以创建一个安全、有弹性的 code-server 部署,满足您的特定需求。