PageSourceSearch

https://edgemesh.netlify.app/assets/js/v-6748d0aa.89eef07f.js

js edgemesh.netlify.app collected 2026-10-03 10:41:07 UTC 34,398 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkedgemesh=self.webpackChunkedgemesh||[]).push([[351],{5319:(s,n,a)=>{a.r(n),a.d(n,{data:()=>e});const e={key:"v-6748d0aa",path:"/zh/guide/edge-kube-api.html",title:"边缘 Kube-API 端点",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"背景",slug:"背景",children:[]},{level:2,title:"快速上手",slug:"快速上手",children:[]},{level:2,title:"安全",slug:"安全",children:[{level:3,title:"配置",slug:"配置",children:[]},{level:3,title:"对接",slug:"对接",children:[]}]}],filePathRelative:"zh/guide/edge-kube-api.md",git:{updatedTime:1689673929e3,contributors:[]}}},8031:(s,n,a)=>{a.r(n),a.d(n,{default:()=>K});var e=a(6252);const t=(0,e.uE)('<h1 id="边缘-kube-api-端点" tabindex="-1"><a class="header-anchor" href="#边缘-kube-api-端点" aria-hidden="true">#</a> 边缘 Kube-API 端点</h1><h2 id="背景" tabindex="-1"><a class="header-anchor" href="#背景" aria-hidden="true">#</a> 背景</h2><p>Kubernetes 通过 CRD 和 Controller 机制极大程度的提升了自身的可扩展性,使得众多应用能轻松的集成至 Kubernetes 生态。众所周知,大部分 Kubernetes 应用会通过访问 kube-apiserver 获取基本的元数据,比如 Service、Pod、Job 和 Deployment 等等,以及获取基于自身业务扩展的 CRD 的元数据。</p><p>然而,在边缘计算场景下由于网络不互通,导致边缘节点通常无法直接连接到处于云上的 kube-apiserver 服务,使得部署在边缘的 Kubernetes 应用无法获取它所需要的元数据。比如,被调度到边缘节点的 Kube-Proxy 和 Flannel 通常是无法正常工作的。</p><p><strong>好在,KubeEdge &gt;= v1.7.0 提供了边缘 Kube-API 端点的能力,它能够在边缘提供与云上 kube-apiserver 相似的服务,使得对 kube-apiserver 有需求的边缘应用也能无感知的运行在边缘上。</strong> 本章将指导大家如何配置 KubeEdge 以启用边缘 Kube-API 端点,以及 EdgeMesh 如何与其对接。</p><h2 id="快速上手" tabindex="-1"><a class="header-anchor" href="#快速上手" aria-hidden="true">#</a> 快速上手</h2><ul><li><strong>步骤1</strong>: 在云端,开启 dynamicController 模块,配置完成后,需要重启 cloudcore</li></ul><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim /etc/kubeedge/config/cloudcore.yaml\n<span class="token key atrule">modules</span><span class="token punctuation">:</span>\n  <span class="token punctuation">...</span>\n  <span class="token key atrule">dynamicController</span><span class="token punctuation">:</span>\n    <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>\n<span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><p>如果使用 keadm 安裝了 cloudcore,配置文件可能不存在,可以使用命令启用它</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>keadm init --advertise-address=&quot;THE-EXPOSED-IP&quot; --profile version=v1.12.1 --kube-config=/root/.kube/config --set cloudCore.modules.dynamicController.enable=true\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br></div></div><p>如果云端是helm安装,修改cloudcore configmap,需要重启cloudcore pod</p><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ kubectl edit cm cloudcore <span class="token punctuation">-</span>n kubeedge\n<span class="token key atrule">modules</span><span class="token punctuation">:</span>\n  <span class="token punctuation">...</span>\n  <span class="token key atrule">dynamicController</span><span class="token punctuation">:</span>\n    <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>\n<span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><ul><li><strong>步骤2</strong>
1: 在边缘节点,打开 metaServer 模块(如果你的 KubeEdge &lt; 1.8.0,还需关闭旧版 edgeMesh 模块),配置完成后,需要重启 edgecore</li></ul><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim /etc/kubeedge/config/edgecore.yaml\n<span class="token key atrule">modules</span><span class="token punctuation">:</span>\n  <span class="token punctuation">...</span>\n  <span class="token key atrule">edgeMesh</span><span class="token punctuation">:</span>\n    <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">false</span>\n  <span class="token punctuation">...</span>\n  <span class="token key atrule">metaManager</span><span class="token punctuation">:</span>\n    <span class="token key atrule">metaServer</span><span class="token punctuation">:</span>\n      <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>\n<span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><ul><li><strong>步骤3</strong>: 在边缘节点,配置 clusterDNS 和 clusterDomain,配置完成后,需要重启 edgecore</li></ul><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim /etc/kubeedge/config/edgecore.yaml\n<span class="token key atrule">modules</span><span class="token punctuation">:</span>\n  <span class="token punctuation">...</span>\n  <span class="token key atrule">edged</span><span class="token punctuation">:</span>\n    <span class="token key atrule">clusterDNS</span><span class="token punctuation">:</span> 169.254.96.16\n    <span class="token key atrule">clusterDomain</span><span class="token punctuation">:</span> cluster.local\n<span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>如果 KubeEdge &gt;= v1.12.0,请这样配置:</p><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim /etc/kubeedge/config/edgecore.yaml\n<span class="token key atrule">modules</span><span class="token punctuation">:</span>\n  <span class="token punctuation">...</span>\n  <span class="token key atrule">edged</span><span class="token punctuation">:</span>\n    <span class="token punctuation">...</span>\n    <span class="token key atrule">tailoredKubeletConfig</span><span class="token punctuation">:</span>\n      <span class="token punctuation">...</span>\n      <span class="token key atrule">clusterDNS</span><span class="token punctuation">:</span>\n      <span class="token punctuation">-</span>
1 169.254.96.16\n      <span class="token key atrule">clusterDomain</span><span class="token punctuation">:</span> cluster.local\n<span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div>',18),p={class:"custom-container tip"},l=(0,e._)("p",{class:"custom-container-title"},"提示",-1),o=(0,e._)("li",null,"步骤3的配置是为了边缘应用能够访问到 EdgeMesh 的 DNS 服务,与边缘 Kube-API 端点本身无关,但为了配置的流畅性,还是放在这里说明。",-1),u=(0,e.Uk)("clusterDNS 设置的值 '169.254.96.16' 来自于 "),c={href:"https://edgemesh.netlify.app/zh/reference/config-items.html#edgemesh-agent-cfg",target:"_blank",rel:"noopener noreferrer"},r=(0,e.Uk)("commonConfig"),i=(0,e.Uk)(" 中 bridgeDeviceIP 的默认值,正常情况下无需修改,非得修改请保持两者一致。"),k=(0,e.uE)('<ul><li><strong>步骤4</strong>: 最后,在边缘节点,测试边缘 Kube-API 端点功能是否正常</li></ul><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">curl</span> <span class="token number">127.0</span>.0.1:10550/api/v1/services\n<span class="token punctuation">{</span><span class="token string">&quot;apiVersion&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;v1&quot;</span>,<span class="token string">&quot;items&quot;</span>:<span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token string">&quot;apiVersion&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;v1&quot;</span>,<span class="token string">&quot;kind&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;Service&quot;</span>,<span class="token string">&quot;metadata&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;creationTimestamp&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;2021-04-14T06:30:05Z&quot;</span>,<span class="token string">&quot;labels&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;component&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;apiserver&quot;</span>,<span class="token string">&quot;provider&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;kubernetes&quot;</span><span class="token punctuation">}</span>,<span class="token string">&quot;name&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;kubernetes&quot;</span>,<span class="token string">&quot;namespace&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;default&quot;</span>,<span class="token string">&quot;resourceVersion&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;147&quot;</span>,<span class="token string">&quot;selfLink&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;default/services/kubernetes&quot;</span>,<span class="token string">&quot;uid&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;55eeebea-08cf-4d1a-8b04-e85f8ae112a9&quot;</span><span class="token punctuation">}</span>,<span class="token string">&quot;spec&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;clusterIP&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;10.96.0.1&quot;</span>,<span class="token string">&quot;ports&quot;</span>:<span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token string">&quot;name&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;https&quot;</span>,<span class="token string">&quot;port&quot;</span>:443,<span class="token string">&quot;protocol&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;TCP&quot;</span>,<span class="token string">&quot;targetPort&quot;</span>:6443<span class="token punctuation">}</span><span class="token punctuation">]</span>,<span class="token string">&quot;sessionAffinity&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;None&quot;</span>,<span class="token string">&quot;type&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;ClusterIP&quot;</span><span class="token punctuation">}</span>,<span class="token string">&quot;status&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;loadBalancer&quot;</span>:<span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">}</span>,<span class="token punctuation">{</span><span class="token string">&quot;apiVersion&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;v1&quot;</span>,<span class="token string">&quot;kind&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;Service&quot;</span>,<span class="token string">&quot;metadata&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;annotations&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;prometheus.io/port&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;9153&quot;</span>,<span class="token string">&quot;prometheus.io/scrape&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;true&quot;</span><span class="token punctuation">}</span>,<span class="token string">&quot;creationTimestamp&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;2021-04-14T06:30:07Z&quot;</span>,<span class="token string">&quot;labels&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;k8s-app&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;kube-dns&quot;</span>,<span class="token string">&quot;kubernetes.io/cluster-service&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;true&quot;</span>,<span class="token string">&quot;kubernetes.io/name&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;KubeDNS&quot;</span><span class="token punctuation">}</span>,<span class="token string">&quot;name&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;kube-dns&quot;</span>,<span class="token string">&quot;namespace&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;kube-system&quot;</span>,<span class="token string">&quot;resourceVersion&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;203&quot;</span>,<span class="token string">&quot;selfLink&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;kube-system/services/kube-dns&quot;</span>,<span class="token string">&quot;uid&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;c221ac20-cbfa-406b-812a-c44b9d82d6dc&quot;</span><span class="token punctuation">}</span>,<span class="token string">&quot;spec&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;clusterIP&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;10.96.0.10&quot;</span>,<span class="token string">&quot;ports&quot;</span>:<span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token string">&quot;name&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;dns&quot;</span>,<span class="token string">&quot;port&quot;</span>:53,<span class="token string">&quot;protocol&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;UDP&quot;</span>,<span class="token string">&quot;targetPort&quot;</span>:53<span class="token punctuation">}</span>,<span class="token punctuation">{</span><span class="token string">&quot;name&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;dns-tcp&quot;</span>,<span class="token string">&quot;port&quot;</span>:53,<span class="token string">&quot;protocol&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;TCP&quot;</span>,<span class="token string">&quot;targetPort&quot;</span>:53<span class="token punctuation">}</span>,<span class="token punctuation">{</span><span class="token string">&quot;name&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;metrics&quot;</span>,<span class="token string">&quot;port&quot;</span>:9153,<span class="token string">&quot;protocol&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;TCP&quot;</span>,<span class="token string">&quot;targetPort&quot;</span>:9153<span class="token punctuation">}</span><span class="token punctuation">]</span>,<span class="token string">&quot;selector&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;k8s-app&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;kube-dns&quot;</span><span class="token punctuation">}</span>,<span class="token string">&quot;sessionAffinity&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;None&quot;</span>,<span class="token string">&quot;type&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;ClusterIP&quot;</span><span class="token punctuation">}</span>,<span class="token string">&quot;status&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;loadBalancer&quot;</span>:<span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">}</span><span class="token punctuation">]</span>,<span class="token string">&quot;kind&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;ServiceList&quot;</span>,<span class="token string">&quot;metadata&quot;</span>:<span class="token punctuation">{</span><span class="token string">&quot;resourceVersion&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;377360&quot;</span>,<span class="token string">&quot;selfLink&quot;</span><span class="token builtin class-name">:</span><span class="token string">&quot;/api/v1/services&quot;</span><span class="token punctuation">}</span><span class="token punctuation">}</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><div class="custom-container warning"><p class="custom-container-title">注意</p><p>如果返回值是空列表,或者响应时长很久(接近 10s)才拿到返回值,说明你的配置可能有误,请仔细检查。</p></div><p><strong>完成上述步骤之后,KubeEdge 的边缘 Kube-API 端点功能就已经开启了,接着继续部署 EdgeMesh 即可。</strong></p><h2 id="安全" tabindex="-1"><a class="header-anchor" href="#安全" aria-hidden="true">
1#</a> 安全</h2>',5),b=(0,e.Uk)("KubeEdge >= v1.12.0 对边缘 Kube-API 端点功能进行了 "),m={href:"https://github.com/kubeedge/kubeedge/issues/4108",target:"_blank",rel:"noopener noreferrer"},g=(0,e.Uk)("安全加固"),d=(0,e.Uk)(",使其支持 HTTPS 的安全访问。如果你想加固边缘 Kube-API 端点服务的安全性,本节将指导大家如何配置 KubeEdge 以启用安全的边缘 Kube-API 端点功能,以及 EdgeMesh 如何与其对接。"),q=(0,e.uE)('<h3 id="配置" tabindex="-1"><a class="header-anchor" href="#配置" aria-hidden="true">#</a> 配置</h3><ul><li><strong>步骤1</strong>: 开启 KubeEdge 的 requireAuthorization 特性门控</li></ul><p>cloudcore.yaml 和 edgecore.yaml 都进行下述配置,配置完成后,需要重启 cloudcore 和 edgecore</p><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim /etc/kubeedge/config/cloudcore.yaml\n<span class="token key atrule">kind</span><span class="token punctuation">:</span> CloudCore\n<span class="token key atrule">featureGates</span><span class="token punctuation">:</span>\n  <span class="token key atrule">requireAuthorization</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>\n<span class="token key atrule">modules</span><span class="token punctuation">:</span>\n  <span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim /etc/kubeedge/config/edgecore.yaml\n<span class="token key atrule">kind</span><span class="token punctuation">:</span> EdgeCore\n<span class="token key atrule">featureGates</span><span class="token punctuation">:</span>\n  <span class="token key atrule">requireAuthorization</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>\n<span class="token key atrule">modules</span><span class="token punctuation">:</span>\n  <span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><ul><li><strong>步骤2</strong>: 生成自签名证书</li></ul><p>我们借用 KubeEdge 的 <code>certgen.sh</code> 脚本来生成临时测试证书。<strong>请注意,请不要在生产环境这样做,生产环境请使用生产级别用的证书。</strong></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token comment"># 1. 确认 /etc/kubernetes/pki/ 目录存在</span>\n$ <span class="token function">ls</span> /etc/kubernetes/pki/\n\n<span class="token comment"># 2. 创建目录</span>\n$ <span class="token function">mkdir</span> -p /tmp/metaserver-certs\n$ <span class="token builtin class-name">cd</span> /tmp/metaserver-certs\n\n<span class="token comment"># 3. 下载 certgen.sh</span>\n$ <span class="token function">wget</span> https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/tools/certgen.sh\n$ <span class="token function">chmod</span> u+x certgen.sh\n\n<span class="token comment"># 4. 生成证书文件</span>\n$ <span class="token assign-left variable">CA_PATH</span><span class="token operator">=</span>./ <span class="token assign-left variable">CERT_PATH</span><span class="token operator">=</span>./ ./certgen.sh stream\n\n<span class="token comment"># 5. 修改证书名字</span>\n$ <span class="token function">mv</span> streamCA.crt rootCA.crt<span class="token punctuation">;</span> <span class="token function">mv</span> stream.crt server.crt<span class="token punctuation">;</span> <span class="token function">mv</span>
1 stream.key server.key\n\n<span class="token comment"># 6. 创建证书 secret</span>\n$ kubectl -n kubeedge create secret generic metaserver-certs --from-file<span class="token operator">=</span>./rootCA.crt --from-file<span class="token operator">=</span>./server.crt --from-file<span class="token operator">=</span>./server.key\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br></div></div><ul><li><strong>步骤3</strong>: 在边缘节点,配置 metaServer 的证书路径,配置完成后,需要重启 edgecore</li></ul><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim /etc/kubeedge/config/edgecore.yaml\n<span class="token key atrule">modules</span><span class="token punctuation">:</span>\n  <span class="token punctuation">...</span>\n  <span class="token key atrule">metaManager</span><span class="token punctuation">:</span>\n    <span class="token key atrule">metaServer</span><span class="token punctuation">:</span>\n      <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span>\n      <span class="token key atrule">server</span><span class="token punctuation">:</span> https<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span><span class="token number">10550</span>\n      <span class="token key atrule">tlsCaFile</span><span class="token punctuation">:</span> /tmp/metaserver<span class="token punctuation">-</span>certs/rootCA.crt\n      <span class="token key atrule">tlsCertFile</span><span class="token punctuation">:</span> /tmp/metaserver<span class="token punctuation">-</span>certs/server.crt\n      <span class="token key atrule">tlsPrivateKeyFile</span><span class="token punctuation">:</span> /tmp/metaserver<span class="token punctuation">-</span>certs/server.key\n<span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div>',10),v=(0,e.Uk)("完成上述配置并重启后,你就可以拥有一个基于 HTTPS 的、安全的边缘 Kube-API 端点服务,后续你可以参考 "),h={href:"https://github.com/kubeedge/kubeedge/issues/4108",target:"_blank",rel:"noopener noreferrer"},y=(0,e.Uk)("issue#4801"),f=(0,e.Uk)(" 里的教程,使用 "),P=(0,e._)("code",null,"curl",-1),A=(0,e.Uk)(" 测试它能否正常工作。"),C=(0,e.uE)('<h3 id="对接" tabindex="-1"><a class="header-anchor" href="#对接" aria-hidden="true">#</a> 对接</h3><p>EdgeMesh 有以下两种方式连接基于 HTTPS 的边缘 Kube-API 端点,你可以根据实际情况二选一使用。</p><h4 id="方式一-单向认证" tabindex="-1"><a class="header-anchor" href="#方式一-单向认证" aria-hidden="true">#</a> 方式一:单向认证</h4><p>EdgeMesh 可以通过单向认证的方式,访问基于 HTTPS 的边缘 Kube-API 端点,单向认证即不需要验证客户端证书。</p><ul><li>Helm 配置</li></ul><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>helm <span class="token function">install</span> edgemesh --namespace kubeedge <span class="token punctuation">\\</span>\n--set agent.kubeAPIConfig.metaServer.security.requireAuthorization<span class="token operator">=</span>true <span class="token punctuation">\\</span>\n--set agent.kubeAPIConfig.metaServer.security.insecureSkipTLSVerify<span class="token operator">=</span>true <span class="token punctuation">\\</span>\n<span class="token punctuation">..</span>.\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><ul><li>手动配置</li></ul><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim build/agent/resources/04<span class="token punctuation">-</span>configmap.yaml\n<span class="token punctuation">...</span>\n<span class="token key atrule">data</span><span class="token punctuation">:</span>\n  <span class="token key atrule">edgemesh-agent.yaml</span><span class="token punctuation">:</span> <span class="token punctuation">|</span><span class="token scalar string">
1\n    kubeAPIConfig:\n      metaServer:\n        security:\n          requireAuthorization: true\n          insecureSkipTLSVerify: true\n    ...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><h4 id="方式二-双向认证" tabindex="-1"><a class="header-anchor" href="#方式二-双向认证" aria-hidden="true">#</a> 方式二:双向认证</h4><p>EdgeMesh 也可以通过双向认证的方式,访问基于 HTTPS 的边缘 Kube-API 端点,双向认证需要同时验证服务端证书和客户端证书。</p><ul><li>Helm 配置</li></ul><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>helm <span class="token function">install</span> edgemesh --namespace kubeedge <span class="token punctuation">\\</span>\n--set agent.kubeAPIConfig.metaServer.security.requireAuthorization<span class="token operator">=</span>true <span class="token punctuation">\\</span>\n--set agent.metaServerSecret<span class="token operator">=</span>metaserver-certs <span class="token punctuation">\\</span>\n<span class="token punctuation">..</span>.\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><ul><li>手动配置</li></ul><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim build/agent/resources/04<span class="token punctuation">-</span>configmap.yaml\n<span class="token punctuation">...</span>\n<span class="token key atrule">data</span><span class="token punctuation">:</span>\n  <span class="token key atrule">edgemesh-agent.yaml</span><span class="token punctuation">:</span> <span class="token punctuation">|</span><span class="token scalar string">\n    kubeAPIConfig:\n      metaServer:\n        security:\n          requireAuthorization: true\n    ...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><div class="language-yaml ext-yml line-numbers-mode"><pre class="language-yaml"><code>$ vim build/agent/resources/05<span class="token punctuation">-</span>daemonset.yaml\n<span class="token punctuation">...</span>\n        <span class="token key atrule">volumeMounts</span><span class="token punctuation">:</span>\n        <span class="token punctuation">...</span>\n        <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> metaserver<span class="token punctuation">-</span>certs\n          <span class="token key atrule">mountPath</span><span class="token punctuation">:</span> /etc/edgemesh/metaserver\n        <span class="token key atrule">volumes</span><span class="token punctuation">:</span>\n        <span class="token punctuation">...</span>\n        <span class="token punctuation">-</span> <span class="token key atrule">secret</span><span class="token punctuation">:</span>\n          <span class="token key atrule">secretName</span><span class="token punctuation">:</span> metaserver<span class="token punctuation">-</span>certs\n          <span class="token key atrule">defaultMode</span><span class="token punctuation">:</span> <span class="token number">420</span>\n        <span class="token key atrule">name</span><span class="token punctuation">:</span> metaserver<span class="token punctuation">-</span>
1certs\n        <span class="token punctuation">...</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div>',15),K={render:function(s,n){const a=(0,e.up)("OutboundLink");return(0,e.wg)(),(0,e.iD)(e.HY,null,[t,(0,e._)("div",p,[l,(0,e._)("ul",null,[o,(0,e._)("li",null,[u,(0,e._)("a",c,[r,(0,e.Wm)(a)]),i])])]),k,(0,e._)("p",null,[b,(0,e._)("a",m,[g,(0,e.Wm)(a)]),d]),q,(0,e._)("p",null,[(0,e._)("strong",null,[v,(0,e._)("a",h,[y,(0,e.Wm)(a)]),f,P,A])]),C],64)}}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.