配置方式
除了将配置放入 IDE 插件的 DevConfig
(右键单击工作负载),Nocalhost 还支持将其放入源代码目录、 ConfigMap 或 Annotation 中。 例如可以将 Nocalhost 配置流程化地配置在 CD 、或者配置在 helm chart、rawManifest 中,通过上述的几种配置方式,来避免重复配置。
PRE-REQUIRE
请确保你已经知晓如何正确进行 Nocalhost 配置, 如果还不知道如何配置,可以先阅读 Nocalhost Overview。
#
零配置零配置意味着进入 DevMode
时不需要任何 Nocalhost 配置。 唯一需要的是选择或填写一个开发镜像。
#
零配置的行为期望为什么要关心对行为的期望?
在零配置中,你通常不需要关注 Nocalhost 做了什么。 然而,如果以下行为不能满足你的预期,这时候你需要配置Nocalhost来进行定制。
- 在容器中使用
/home/nocalhost-dev
作为文件同步的目标目录。 - 使用以下顺序顺延来尝试进入开发容器,zsh、bash、sh。
- 不启用持久化,你在开发容器内产生的本地数据将在容器关闭或重启后丢失。
- 无法使用一键运行和调试
- 同步所选同步目录的所有内容到容器内
#
将配置放置在源码目录中Nocalhost 支持将配置放置在源码目录中,由有经验的开发者将配置固化在源码目录中,便于团队内的其他开发人员共享这些配置。
#
如何将配置固化到源码中你可以先在具体工作负载右键 DevConfig
配置好确保可用后, 将其直接复制,如:
在相应的源码目录下,创建 .nocalhost
目录,再在这个目录下创建 config.yaml
, 将复制内容保存进去即可。
#
配置生效了吗?再次右键点击此工作负载,然后点击 DevConfig
。 如果配置已从本地目录读取,会在最上方看到类似提示,它会提示你这个配置是一个本地文件的副本:
#
Q&A::::tip 当你忘记了工作负载关联到了哪个本地目录
右键具体服务点击 Open Project
可以打开关联过的目录,或点击 Associate Local DIR
重新关联某个新目录。
:::
多个服务都放置在同一个源码中怎么办?
可以同时配置多个服务。 只需要将某个服务的配置内容增加一个层级,并将其变成数组即可:
:::
#
将配置放置在 Configmap 中Nocalhost 支持将配置放置在 Configmap 中,这样做利于与环境做定制化关联。 例如,在测试环境的部署脚本或 CD 中,定制化的写入某些配置等。
#
如何配置到 Configmap 中我们来看一下,这是一段十分通用的 Nocalhost 配置 helm 模板, 当然,你不一定要使用 helm,这里只是为了便于讲解。
什么是 {{ .Release.Name }}
我们可以看到这个 configmap 中,有两个内容是通过占位符的方式引入的。 第一个是第四行的 {{ .Release.Name }}
,这是应用的名字, 如果你使用 Helm 或者 Nocalhost 进行应用安装,这里需要填入对应的应用名字,否则则固定写死 default.application
。
什么是 {{ .Files.Get .Values.nocalhost.config.path | nindent 4 }}
这部分实际上就是 Nocalhost config 该填入的位置,注意前面要四个缩进。
了解了上面的占位符所对应的内容后,实际的 configmap 应为如下格式:
#
Configmap 配置的注意事项:::dangue 注意
命名规则,它的命名规则必须是
dev.nocalhost.config.${appName}
,也就是name: "dev.nocalhost.config.{{ .Release.Name }}"
标签,它需要有一个标签键值对,固定写死为
dep-management: nocalhost
config 以文本块的方式放置在
data.config
下,注意配置整体缩进。
:::
#
配置生效了吗?当配置好上述 Configmap 后,我们可以再次右键这个服务,选择 DevConfig
, 如果看到以下提示,提示配置是 Configmap 的一个副本,则代表配置已经生效:
#
将配置放置在 Annotations 中Nocalhost 同样支持将配置放置在 Annotations 中,与 Configmap 配置的出发点基本一致。
#
如何配置到 Annotations 中同样,我们以一段 helm 模板来进行讲解,它会利于讲解哪些值是应该被定制化的,以及它的格式要求如何等。
Annotations 的配置非常简单, 它只需要声明一个 annotation, key 固定为 dev.nocalhost
,值为一个文本块,且需要固定 6 个缩进。 如下所示:
由于一个工作量不会有多个配置,因此没有必要将其声明为数组 (尽管数组也被支持)。
且配置所绑定的工作负载已经固定(不管是 Deployment、StatefulSet、DaemonSet 还是什么其他的),所以不需要申明其名字与类型。 如下所示:
#
Annotations 配置的注意事项注意
Key 必须是
dev.nocalhost
,值则为Nocalhost Config
的文本块。注意整体缩进。
#
配置生效了吗?当配置好上述 Annotations 后,我们可以再次右键这个服务,选择 DevConfig
, 如果看到以下提示,则代表配置已经生效。
#
使用本地、Configmap、Annotations 配置的特性#
配置的粒度与优先级Nocalhost 配置支持 “混搭”,例如拥有十个服务,可以其中三个用本地配置,三个用 Configmap 配置,三个使用 Annotations 配置,剩下一个零配置。
如果对同一个服务同时配置了多种配置方式,优先级如下:
Local > Annotations > Configmap > in DevConfig
#
配置的读取时机在使用 Nocalhost 配置之前,Nocalhost 都会检查各种配置方式,并尝试进行读取, 也就是可以认为配置的 读取 是 “实时生效” 的。