崩了!Nacos升級到3.0竟不能用了?
距離 Nacos 發(fā)布 3.0 版本已經(jīng)過去幾個月了,中間一直在忙其他事情,所以也沒來及升級體驗。
剛好最近要做新項目,所以準(zhǔn)備使用最新版升級一波,這不升級還不知道,一升嚇一跳,這變化也太大了吧?
1.升級概覽
Nacos 3.0 最大的升級是新增了“AI 中心”,將會支持以下功能:
- 存量 API 可以快速構(gòu)建 MCP Server: Nacos 配置存量 API 描述可以 0 代碼的構(gòu)建成 MCP Server,快速跟進(jìn) MCP 協(xié)議。
- 動態(tài)提示詞 Prompt(尚未發(fā)布)。
- 支持 A2A 協(xié)議等(尚未發(fā)布)。

2.安全升級
Nacos 2.0 中面臨的一個主要的風(fēng)險就是 Nacos 所有的 HTTP OpenAPI 均通過統(tǒng)一的端口進(jìn)行暴露,同時使用了統(tǒng)一的鑒權(quán)開關(guān),這使得使用者必須在便捷性和安全性中作出取舍,導(dǎo)致在許多部署的環(huán)境中可能存在安全風(fēng)險。
Nacos 3.0 為了解決這個問題,從 Nacos 的部署架構(gòu)上作出演進(jìn),獨(dú)立控制臺部署,拆分鑒權(quán)開關(guān),分類 API 并默認(rèn)開啟控制臺及管控類 API 的鑒權(quán):

同時配合配置加密插件,TLS 傳輸,來實現(xiàn) Nacos 3.0 的零信任安全架構(gòu):

3.不再支持JDK8
Nacos 3.0 不再支持 JDK8 環(huán)境 ,它將其依賴的 JDK 版本升級至 17,并將 Spring Boot 版本升級至 3.4.1。
4.升級遇到的問題
4.1 無法啟動
因為 Nacos 3.0 升級了安全策略,取消了 nacos.core.auth.server.identity.key、nacos.core.auth.server.identity.value 和 nacos.core.auth.plugin.nacos.token.secret.key 的默認(rèn)值,所以當(dāng)我們使用 Nacos 3.0 啟動時會報錯。
解決方案:進(jìn)入 config/application.properties 配置 nacos.core.auth.server.identity.key、nacos.core.auth.server.identity.value 和 nacos.core.auth.plugin.nacos.token.secret.key 的默認(rèn)值,其中 nacos.core.auth.plugin.nacos.token.secret.key 值需要 32 位 Base64 編碼值,如果設(shè)置不符合規(guī)則啟動也會報錯。
“
nacos.core.auth.plugin.nacos.token.secret.key 為 Nacos 中生成 JWT 的秘鑰,之前使用默認(rèn)值,會導(dǎo)致偽造 JWT Token 的問題,所以去掉了默認(rèn)值。
4.2 訪問不了控制臺
當(dāng)我們費(fèi)了九牛二虎之力啟動了 Nacos 之后,發(fā)現(xiàn)使用 localhost:8848 不能訪問控制臺了。
原來是控制臺和 Nacos 核心服務(wù)分開了,控制臺變成了獨(dú)立的端口號 8080,所以使用新的地址 localhost:8080 才能訪問。
這。。。
為了讓原來的服務(wù)不報錯,所以之前的 8848 確實要給 Nacos 核心服務(wù)用,所以控制臺就得配置新的端口號了,但你設(shè)置默認(rèn) 8080,是怕我調(diào)試本地程序太累嗎?(默認(rèn)本地程序的端口是 8080)
小結(jié)
版本升級有風(fēng)險,升級需謹(jǐn)慎。你究竟是要更多的功能、更快的性能,還是要穩(wěn)定性?這需要根據(jù)當(dāng)前業(yè)務(wù)場景來評估。
























