From 1f1d6873172d71fadaa5a0005e1d6f3f528096fc Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sun, 26 Apr 2026 03:36:33 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=B7=BB=E5=8A=A0Azure=20DNS=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E6=94=AF=E6=8C=81=E5=8F=8A=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加Azure DNS插件实现,包括DNS记录管理和授权配置 新增Azure使用文档和配置截图 更新依赖添加@azure/arm-dns和@azure/identity包 --- docs/.vitepress/config.ts | 1 + docs/guide/use/azure/dns.md | 28 ++ docs/guide/use/azure/images/access-1.png | Bin 0 -> 109389 bytes docs/guide/use/azure/images/access-2.png | Bin 0 -> 71723 bytes docs/guide/use/azure/images/access-3.png | Bin 0 -> 110288 bytes docs/guide/use/azure/images/dns-1.png | Bin 0 -> 56181 bytes docs/guide/use/azure/images/dns-2.png | Bin 0 -> 63948 bytes docs/guide/use/azure/images/dns-3.png | Bin 0 -> 148196 bytes docs/guide/use/azure/images/dns-4.png | Bin 0 -> 95675 bytes docs/guide/use/azure/images/dns-5.png | Bin 0 -> 114847 bytes packages/ui/certd-server/package.json | 2 + .../src/plugins/plugin-azure/access.ts | 268 +++++++++++++++++ .../plugin-azure/azure-dns-provider.ts | 63 ++++ .../src/plugins/plugin-azure/index.ts | 2 + pnpm-lock.yaml | 274 +++++++++++++++++- 15 files changed, 635 insertions(+), 3 deletions(-) create mode 100644 docs/guide/use/azure/dns.md create mode 100644 docs/guide/use/azure/images/access-1.png create mode 100644 docs/guide/use/azure/images/access-2.png create mode 100644 docs/guide/use/azure/images/access-3.png create mode 100644 docs/guide/use/azure/images/dns-1.png create mode 100644 docs/guide/use/azure/images/dns-2.png create mode 100644 docs/guide/use/azure/images/dns-3.png create mode 100644 docs/guide/use/azure/images/dns-4.png create mode 100644 docs/guide/use/azure/images/dns-5.png create mode 100644 packages/ui/certd-server/src/plugins/plugin-azure/access.ts create mode 100644 packages/ui/certd-server/src/plugins/plugin-azure/azure-dns-provider.ts create mode 100644 packages/ui/certd-server/src/plugins/plugin-azure/index.ts diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index cc96ab9c1..66bfb9145 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -114,6 +114,7 @@ export default defineConfig({ {text: "连接windows主机", link: "/guide/use/host/windows.md"}, {text: "Google EAB获取", link: "/guide/use/google/"}, {text: "阿里云相关", link: "/guide/use/aliyun/"}, + {text: "Azure相关", link: "/guide/use/azure/dns.md"}, {text: "数据备份", link: "/guide/use/backup/"}, {text: "Certd本身的证书更新", link: "/guide/use/https/index.md"}, {text: "js脚本插件使用", link: "/guide/use/custom-script/index.md"}, diff --git a/docs/guide/use/azure/dns.md b/docs/guide/use/azure/dns.md new file mode 100644 index 000000000..0481fdcfb --- /dev/null +++ b/docs/guide/use/azure/dns.md @@ -0,0 +1,28 @@ +# Azure 配置 + +## Access授权配置 + +1. 登录 Azure 并创建一个资源组 【可选,如果已经有了可以不用创建】 +2. 创建一个应用程序 +Microsoft Entra ID - 》 应用注册 - 》 新注册 +![](./images/access-1.png) +![](./images/access-2.png) + +3. 配置授权 +![](./images/access-3.png) + +4. 点击测试 + +## Azure DNS 配置 + +1. 创建一个 DNS 区域(就是一个域名) +![](./images/dns-1.png) +![](./images/dns-2.png) + +2. 为这个域名和上面创建的授权应用分配角色 +![](./images/dns-3.png) +![](./images/dns-4.png) +![](./images/dns-5.png) + +3. 然后就可以给dns区域去申请证书了 + diff --git a/docs/guide/use/azure/images/access-1.png b/docs/guide/use/azure/images/access-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c27d5c09f2d3751fb4eff139319acd618edd93fc GIT binary patch literal 109389 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

-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

`>n6a*yS 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