关于nocalhost:Nocalhost-为-KubeSphere-提供更强大的云原生开发环境

26次阅读

共计 5760 个字符,预计需要花费 15 分钟才能阅读完成。

作者简介
张海立(驭势科技云平台研发总监):开源爱好者,云原生社区上海站 PMC 成员,KubeSphere Ambassador;日常云原生畛域工作波及 Kubernetes、DevOps、可察看性、服务网格等。
玉易才:Nocalhost Maintainer,CKA、CKAD,Work From Home

KubeSphere 简介

KubeSphere 是在 Kubernetes 之上构建的以利用为核心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。​

KubeSphere 提供了运维敌对的向导式操作界面,即使是 Kubernetes 教训并不丰盛的用户,也能绝对轻松地上手开始治理和应用。它提供了基于 Helm 的利用市场,能够在图形化界面下十分轻松地装置各种 Kubernetes 利用。​

Nocalhost 简介

Nocalhost 是一个容许开发者间接在 Kubernetes 集群内开发利用的工具。

Nocalhost 的外围性能是:提供 Nocalhost IDE 插件(包含 VSCode 和 Jetbrains 插件),将远端的工作负载更改为开发模式。在开发模式下,容器的镜像将被替换为蕴含开发工具(例如 JDK、Go、Python 环境等)的开发镜像。当开发者在本地编写代码时,任何批改都会实时被同步到远端开发容器中,应用程序会立刻更新(取决于利用的热加载机制或从新运行利用),开发容器将继承原始工作负载所有的申明式配置(configmap、secret、volume、env 等)。

Nocalhost 还提供:

  • VSCode 和 Jetbrains IDE 一键 Debug 和 HotReload
  • 在 IDE 内间接提供开发容器的终端,取得和本地开发统一的体验
  • 提供基于 Namespace 隔离的开发空间和 Mesh 开发空间

在应用 Nocalhost 开发 Kubernetes 的利用过程中,免去了镜像构建,更新镜像版本,期待集群调度 Pod 的过程,把编码 / 测试 / 调试反馈循环 (code/test/debug cycle) 从分钟级别升高到了秒级别,大幅晋升开发效率。

此外,Nocalhost 还提供了 Server 端帮忙企业治理 Kubernetes 利用、开发者和开发空间,不便企业对立治理各类开发和测试环境。

本文将介绍如何在 KubeSphere 中疾速部署 Nocalhost Server 及根本应用,提供一个帮忙研发团队对立治理 Nocalhost 利用部署的治理平台;以及 Nocalhost Server 根本应用。​

前提条件

装置 KubeSphere

装置 KubeSphere 有两种办法。一是在 Linux 上间接装置,能够参考文档:在 Linux 装置 KubeSphere;二是在已有 Kubernetes 中装置,能够参考文档:在 Kubernetes 装置 KubeSphere。​

在 KubeSphere 中启用利用商店

在 KubeSphere 中启用利用商店能够参考文档:KubeSphere 利用商店。

装置 Nocalhost Server

在 KubeSphere 3.2 中从利用商店装置

Nocalhost Server 曾经集成在了 KubeSphere 3.2 的利用商店中了,因而能够间接拜访利用商店并按 惯例形式 进行利用部署。

在 KubeSphere 3.x 中通过利用仓库装置

在 KubeSphere 3.x 中,您能够 通过利用仓库来部署利用,上面分步介绍具体的操作过程。

步骤 1:增加利用商店

首先,应用具备企业空间管理权限的账号登陆 KubeSphere 并进入您选定的一个企业空间,在您的企业空间中,进入「利用治理」下的「利用仓库」页面,并点击「增加仓库」。

在弹出的对话框中,可将利用仓库名称设置为 nocalhost,将利用仓库的 URL 设置为 https://nocalhost-helm.pkg.coding.net/nocalhost/nocalhost,点击「验证」对 URL 进行验证,验证通过后再点击「确定」。

⚠️ 留神:URL 必须贴全链接,不能缺失 https:// 这部分,否则会验证失败

利用仓库导入胜利后会显示在如下图所示的列表中。

无关增加公有仓库时的更多参数信息,请参见 导入 Helm 仓库。

步骤 2:从利用模版部署利用

进入您选定的用于部署 Nocalhost Server 的我的项目,如果还没有可用我的项目,能够间接关上企业空间页面中的「我的项目」栏目,「创立」一个新的我的项目。

假如咱们曾经创立了一个名为 nocalhost-server 的我的项目,进入我的项目界面,进入「利用负载」下的「利用」页面,再点击「创立」新利用。

在弹出的对话框中抉择「从利用模板」创立。

  • 从利用商店:抉择内置的利用和以 Helm Chart 模式独自上传的利用。
  • 从利用模板:从公有利用仓库和企业空间利用池抉择利用。

从下拉列表中抉择之前增加的公有利用仓库 nocalhost,能够看到仓库中的 Nocalhost Server Helm Chart 如下显示。

您能够查看「利用信息」和「Chart 文件」,在版本下拉列表中抉择版本,而后点击「部署」。

设置利用「名称」,确认利用「版本」和部署「地位」,点击「下一步」。

在「利用设置」标签页,您能够手动编辑清单文件或间接点击「装置」。倡议把 service.type 设置为 ClusterIP,以确保装置不受 Kubernetes 网络环境影响。当然,您齐全能够联合本身研发环境来抉择应用 NodePortLoadBalancer 服务类型来裸露 Nocalhost Server(Server 自身对此并无限度)。

最初期待 Nocalhost Server 创立实现并开始运行,能够在「利用」中看到如下利用状态(可能须要刷新一下页面)。

步骤 3:裸露 Nocalhost Server 服务

进入「利用负载」下的「服务」页面,抉择 nocalhost-web 服务,在最右侧的拉下菜单中选择「编辑内部拜访」。

在弹出的对话框中抉择适合以后云端网络环境的外网「拜访形式」,而后点击「确定」即可应用服务配置。

本文假如咱们依然放弃 ClusterIP 的拜访形式,通过 kubectl port-forward 来进行后续的 Nocalhost Server 应用。

❯ kubectl -n nocalhost-server port-forward service/nocalhost-web 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80

⚠️ 留神:这里的 nocalhost-server 请替换为您理论应用的部署了 Nocalhost 利用的 Namespace

至此,已实现在 Kubesphere 中疾速部署 Nocalhost Server,如您是第一次应用 Nocalhost Server,可持续以下对于 Nocalhost Server Dashboard 配置、在 Nocalhost IDE 插件中进行开发体验的内容。

应用 Nocalhost Server

实现 Port Forward 后可应用 http://localhost:8080 来关上 Nocalhost Server Dashboard 页面;应用默认账号 admin@admin.com 及明码 123456 进行登陆。登录后请更改默认明码。

创立集群

Nocalhost Server 多用于治理整个团队的 Nocalhost 研发环境,因而咱们首先须要增加可进行治理的集群。

在 Nocalhost Server Dashboard 中抉择左侧菜单列表中的「集群」,进入页面后抉择「增加集群」。

在弹出的对话框中输出「集群名称」,并录入 kubectl 可用的、具备 cluster-admin 权限的 kubeconfig 文件后「确认」。

目前可导入的 kubeconfig 文件内容还不反对 exec 类型的用户凭证,如果您应用的是这里凭证,建议您另外生成一个具备足够权限的 ServiceAccount 并应用其对应的 kubeconfig。

这里有多种形式获取指标集群的 kubeconfig,例如您能够返回 KubeSphere 并进入集群页面,获取以后集群的 kubeconfig 文件。留神,如果应用 kubeconfig 文件的利用部署在以后集群外,您须要将 clusters:cluster:server 参数的值批改为 对外裸露的 Kubernetes API 服务器地址

增加胜利后,能够失去如下的集群信息页面。

创立开发空间(DevSpace)

接下来,咱们进入「开发空间」页面,抉择「创立开发空间」,并在弹出的对话框中抉择「创立隔离开发空间」。

「共享开发空间」,即 MeshSpace,不在本文章探讨范畴,更多可参考 Manage MeshSpace 这篇文章介绍。

在弹出的对话框中,能够填写「开发空间名称」(这里设置为 demo),抉择「集群」和其「所有者」,并按需进行「其它设置」。

创立实现后,能够在「开发空间」页面看到已创立的隔离开发空间,如下图所示。

创立 bookinfo 样例利用

下一步咱们开始为团队创立一些可部署的利用,先进入「利用」页面,抉择「增加利用」。

在弹出的对话框中填写「利用名称」,同时咱们持续填写其它信息:

  • 抉择 Git 作为「装置起源」
  • 输出 https://github.com/nocalhost/bookinfo.git 作为「Git 仓库地址」
  • 抉择 Manifest 作为「Manifest 类型」
  • 「利用配置文件」留空,即应用默认值 config.yaml
  • 「Git 仓库的相对路径」填入 manifest/templates

可拜访 GitHub 查看残缺的 bookinfo 样例利用仓库,理解具体的配置文件细节。

创立用户并共享开发空间

最初,咱们创立一个样例用户来演示如果共享开发空间。进入到「用户」页面后,点击「增加用户」,在弹出的对话框中填入必须的用户信息后「实现」增加。

而后咱们回到开发空间,抉择咱们之前创立的 demo 空间,点击画笔图标进入「编辑开发空间」的「共享用户」标签页,开始「增加共享」。

抉择须要增加的用户,并留神抉择默认的 Cooperator 协作者权限,另一个 Viewer 观察者权限的用户只能浏览开发空间。

至此,咱们在 Nocalhost Server Dashboard 中的配置就告一段落,上面将进入 IDE 利用 Nocalhost 插件执行利用的部署及开发体验。​

部署 bookinfo 利用部署

这里咱们将应用 VS Code 执行利用的部署,首先须要 在 VS Code 中装置 Nocalhost 插件。您也能够应用 JetBrains 及其 Nocalhost 插件。

在 VS Code 中关上 Nocalhost 插件面板,点击 + 号创立集群连贯,填入 Nocalhost Server 地址,并应用后面创立的普通用户 test 的用户名及明码进行登录。

创立胜利能够看到之前在 Nocalhost Server Dashboard 中创立的开发空间 demo(nh1btih)

点击 demo 空间右侧的火箭图标,会在 VS Code 编辑器顶部加载利用列表,如下图所示能够看到之前增加的 bookinfo 利用。

抉择该利用即会启动在 demo 空间中的 Nocalhost 利用部署过程(抉择利用源的默认分支进行装置即可),装置实现后,会呈现如下日志和弹窗提醒:

同时在 Nocalhost 插件面板中也能够开展 Workload 看到具体的部署内容。

开发体验

  • 点击绿色图标即可进入开发模式,抉择从 git 仓库克隆源码。(第一次进入开发模式,Nocalhost 会提醒你抉择源码目录,能够间接抉择本地的源码目录,也能够抉择从 git 仓库克隆到本地,后续 Nocalhost 会记住源码目录,再次进入开发模式时,会间接关上这个源码目录)
  • 进入开发模式后 Nocalhost 会主动将工作负载的镜像替换为开发镜像,并且将源码同步到近程容器中。
  • 进入开发模式后会主动关上一个近程容器的终端,开发者能够在这个终端外面执行命令,运行开发程序。
  • 右键工作负载 authors,点击 Remote run,即可在远端容器外面运行在开发配置外面预设好的利用运行命令。
  • 更改代码并保留后,Nocalhost 主动将更改后的代码文件同步到近程容器中。(若在开发配置外面配置了该 hotReload: true 参数, nocalhost 将会主动在近程容器中再次运行预设好的利用运行命令,更改代码后无须要再次点击 Remote run 或者手动运行利用运行命令)

近程调试

  • 右键工作负载 authors,点击 Remote debug,即可进入近程 debug 模式。
  • 打上断点,在浏览器拜访 http://127.0.0.1:39080/produc…,即可进行近程 debug

援用链接

[1] KubeSphere: https://kubesphere.com.cn/
[2] Nocalhost: https://nocalhost.dev/
[3] Nocalhost Server: https://nocalhost.dev/docs/se…
[4] 在 Linux 装置 KubeSphere: https://kubesphere.com.cn/doc…
[5] 在 Kubernetes 装置 KubeSphere: https://kubesphere.com.cn/doc…
[6] KubeSphere 利用商店: https://kubesphere.com.cn/doc…
[7] 惯例形式: https://kubesphere.com.cn/doc…
[8] 通过利用仓库来部署利用: https://kubesphere.com.cn/doc…
[9] 导入 Helm 仓库: https://kubesphere.com.cn/doc…
[10] Manage MeshSpace: https://nocalhost.dev/docs/se…
[11] bookinfo: https://github.com/nocalhost/…
[12] 在 VS Code 中装置 Nocalhost 插件: https://nocalhost.dev/docs/in…
[13] JetBrains 及其 Nocalhost 插件: https://nocalhost.dev/docs/in…

点击此处链接一键开启云原生开发环境

正文完
 0