1"use strict";(self.webpackChunkedgemesh=self.webpackChunkedgemesh||[]).push([[352],{7061:(n,s,a)=>{a.r(s),a.d(s,{data:()=>e});const e={key:"v-10de690a",path:"/guide/edge-kube-api.html",title:"Edge Kube-API Endpoint",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Background",slug:"background",children:[]},{level:2,title:"Quick Start",slug:"quick-start",children:[]},{level:2,title:"Security",slug:"security",children:[{level:3,title:"Configure",slug:"configure",children:[]},{level:3,title:"Usage",slug:"usage",children:[]}]}],filePathRelative:"guide/edge-kube-api.md",git:{updatedTime:1689673929e3,contributors:[]}}},968:(n,s,a)=>{a.r(s),a.d(s,{default:()=>w});var e=a(6252);const t=(0,e.uE)('<h1 id="edge-kube-api-endpoint" tabindex="-1"><a class="header-anchor" href="#edge-kube-api-endpoint" aria-hidden="true">#</a> Edge Kube-API Endpoint</h1><h2 id="background" tabindex="-1"><a class="header-anchor" href="#background" aria-hidden="true">#</a> Background</h2><p>Kubernetes has greatly improved its scalability through the CRD and Controller mechanisms, enabling many applications to be easily integrated into the Kubernetes ecosystem. As we all know, most Kubernetes applications access kube-apiserver to obtain basic metadata, such as Service, Pod, Job, Deployment, etc., as well as CRD metadata based on their own business expansion.</p><p>However, in edge computing scenarios, due to the lack of network connectivity, edge nodes usually cannot directly connect to the kube-apiserver service on the cloud, so that Kubernetes applications deployed on the edge cannot obtain the metadata it needs. For example, Kube-Proxy and Flannel that are scheduled to edge nodes usually do not work properly.</p><p><strong>Fortunately, KubeEdge >= v1.7.0 provides the ability of Edge Kube-API Endpoint, which can provide services similar to kube-apiserver on the cloud, so that edge applications that require kube-apiserver can also be unaware run on the edge.</strong> This chapter will guide you on how to configure KubeEdge to enable the Edge Kube-API Endpoint, and how EdgeMesh uses it.</p><h2 id="quick-start" tabindex="-1"><a class="header-anchor" href="#quick-start" aria-hidden="true">#</a> Quick Start</h2><ul><li><strong>Step 1</strong>: On the cloud, enable the dynamicController module. After the configuration is complete, you need to restart 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>In case you have installed cloudcore using keadm, the configuration file will not be present. Instead, you can enable it using</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>keadm init --advertise-address="THE-EXPOSED-IP" --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>In case you have installed cloudcore using helm,update cloudcore configmap.After the configuration is complete, you need to restart 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>Step 2</strong>: At the edge node, open the metaServer module (if your KubeEdge < 1.8.0, you need to close the old edgeMesh module). After the configuration is complete, you need to restart 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">
1false</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>Step 3</strong>: At the edge node, configure clusterDNS and clusterDomain. After the configuration is complete, you need to restart 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>If KubeEdge >= v1.12.0, configure it like this:</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"},o=(0,e._)("p",{class:"custom-container-title"},"TIP",-1),l=(0,e._)("li",null,"The configuration in step 3 is for the edge application to be able to access the DNS service of EdgeMesh, and has nothing to do with the Edge Kube-API Endpoint itself, but for the fluency of configuration, it is still explained here.",-1),u=(0,e.Uk)("The value '169.254.96.16' set by clusterDNS comes from the default value of bridgeDeviceIP in "),c={href:"https://edgemesh.netlify.app/reference/config-items.html#edgemesh-agent-cfg",target:"_blank",rel:"noopener noreferrer"},i=(0,e.Uk)("commonConfig"),r=(0,e.Uk)(". There is no need to modify it below. If you have to modify it, please keep the two consistent."),k=(0,e.uE)('<ul><li><strong>Step 4</strong>: Finally, at the edge node, test whether the Edge Kube-API Endpoint functions properly</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">"apiVersion"</span><span class="token builtin class-name">:</span><span class="token string">"v1"</span>,<span class="token string">"items"</span>:<span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token string">"apiVersion"</span><span class="token builtin class-name">:</span><span class="token string">"v1"</span>,<span class="token string">"kind"</span><span class="token builtin class-name">:</span><span class="token string">"Service"</span>,<span class="token string">"metadata"</span>:<span class="token punctuation">{</span><span class="token string">"creationTimestamp"</span><span class="token builtin class-name">:</span><span class="token string">"2021-04-14T06:30:05Z"</span>,<span class="token string">"labels"</span>:<span class="token punctuation">{</span><span class="token string">"component"</span><span class="token builtin class-name">:</span><span class="token string">"apiserver"</span>,<span class="token string">"provider"</span><span class="token builtin class-name">:</span><span class="token string">"kubernetes"</span><span class="token punctuation">}</span>,<span class="token string">"name"</span><span class="token builtin class-name">:</span><span class="token string">"kubernetes"</span>,<span class="token string">"namespace"</span><span class="token builtin class-name">:</span><span class="token string">"default"</span>,<span class="token string">"resourceVersion"</span><span class="token builtin class-name">:</span><span class="token string">"147"</span>,<span class="token string">"selfLink"</span><span class="token builtin class-name">:</span><span class="token string">"default/services/kubernetes"</span>,<span class="token string">"uid"</span><span class="token builtin class-name">:</span><span class="token string">"55eeebea-08cf-4d1a-8b04-e85f8ae112a9"</span><span class="token punctuation">}</span>,<span class="token string">"spec"</span>:<span class="token punctuation">{</span><span class="token string">"clusterIP"</span><span class="token builtin class-name">:</span><span class="token string">"10.96.0.1"</span>,<span class="token string">"ports"</span>:<span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token string">"name"</span><span class="token builtin class-name">:</span><span class="token string">"https"</span>,<span class="token string">"port"</span>:443,<span class="token string">"protocol"</span><span class="token builtin class-name">:</span><span class="token string">"TCP"</span>,<span class="token string">"targetPort"</span>:6443<span class="token punctuation">}</span><span class="token punctuation">]</span>,<span class="token string">"sessionAffinity"</span><span class="token builtin class-name">:</span><span class="token string">"None"</span>,<span class="token string">"type"</span><span class="token builtin class-name">:</span><span class="token string">"ClusterIP"</span><span class="token punctuation">}</span>,<span class="token string">"status"</span>:<span class="token punctuation">{</span><span class="token string">"loadBalancer"</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">"apiVersion"</span><span class="token builtin class-name">:</span><span class="token string">"v1"</span>,<span class="token string">"kind"</span><span class="token builtin class-name">:</span><span class="token string">"Service"</span>,<span class="token string">"metadata"</span>:<span class="token punctuation">{</span><span class="token string">"annotations"</span>:<span class="token punctuation">{</span><span class="token string">"prometheus.io/port"</span><span class="token builtin class-name">:</span><span class="token string">"9153"</span>,<span class="token string">"prometheus.io/scrape"</span><span class="token builtin class-name">:</span><span class="token string">"true"</span><span class="token punctuation">}</span>,<span class="token string">"creationTimestamp"</span><span class="token builtin class-name">:</span><span class="token string">"2021-04-14T06:30:07Z"</span>,<span class="token string">"labels"</span>:<span class="token punctuation">{</span><span class="token string">"k8s-app"</span><span class="token builtin class-name">:</span><span class="token string">"kube-dns"</span>,<span class="token string">"kubernetes.io/cluster-service"</span><span class="token builtin class-name">:</span><span class="token string">"true"</span>,<span class="token string">"kubernetes.io/name"</span><span class="token builtin class-name">:</span><span class="token string">"KubeDNS"</span><span class="token punctuation">}</span>,<span class="token string">"name"</span><span class="token builtin class-name">:</span><span class="token string">"kube-dns"</span>,<span class="token string">"namespace"</span><span class="token builtin class-name">:</span><span class="token string">"kube-system"</span>,<span class="token string">"resourceVersion"</span><span class="token builtin class-name">:</span><span class="token string">"203"</span>,<span class="token string">"selfLink"</span><span class="token builtin class-name">:</span><span class="token string">"kube-system/services/kube-dns"</span>,<span class="token string">"uid"</span><span class="token builtin class-name">:</span><span class="token string">"c221ac20-cbfa-406b-812a-c44b9d82d6dc"</span><span class="token punctuation">}</span>,<span class="token string">"spec"</span>:<span class="token punctuation">{</span><span class="token string">"clusterIP"</span><span class="token builtin class-name">:</span><span class="token string">"10.96.0.10"</span>,<span class="token string">"ports"</span>:<span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token string">"name"</span><span class="token builtin class-name">:</span><span class="token string">"dns"</span>,<span class="token string">"port"</span>:53,<span class="token string">"protocol"</span><span class="token builtin class-name">:</span><span class="token string">"UDP"</span>,<span class="token string">"targetPort"</span>:53<span class="token punctuation">}</span>,<span class="token punctuation">{</span><span class="token string">"name"</span><span class="token builtin class-name">:</span><span class="token string">"dns-tcp"</span>,<span class="token string">"port"</span>:53,<span class="token string">"protocol"</span><span class="token builtin class-name">:</span><span class="token string">"TCP"</span>,<span class="token string">"targetPort"</span>:53<span class="token punctuation">}</span>,<span class="token punctuation">{</span><span class="token string">"name"</span><span class="token builtin class-name">:</span><span class="token string">"metrics"</span>,<span class="token string">"port"</span>:9153,<span class="token string">"protocol"</span><span class="token builtin class-name">:</span><span class="token string">"TCP"</span>,<span class="token string">"targetPort"</span>:9153<span class="token punctuation">}</span><span class="token punctuation">]</span>,<span class="token string">"selector"</span>:<span class="token punctuation">{</span><span class="token string">"k8s-app"</span><span class="token builtin class-name">:</span><span class="token string">"kube-dns"</span><span class="token punctuation">}</span>,<span class="token string">"sessionAffinity"</span><span class="token builtin class-name">:</span><span class="token string">"None"</span>,<span class="token string">"type"</span><span class="token builtin class-name">:</span><span class="token string">"ClusterIP"</span><span class="token punctuation">}</span>,<span class="token string">"status"</span>:<span class="token punctuation">{</span><span class="token string">"loadBalancer"</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">"kind"</span><span class="token builtin class-name">:</span><span class="token string">"ServiceList"</span>,<span class="token string">"metadata"</span>:<span class="token punctuation">{</span><span class="token string">"resourceVersion"</span><span class="token builtin class-name">:</span><span class="token string">"377360"</span>,<span class="token string">"selfLink"</span><span class="token builtin class-name">:</span><span class="token string">"/api/v1/services"</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">WARNING</p><p>If the return value is an empty list, or the response takes a long time (close to 10s) to get the return value, your configuration may be wrong, please check carefully.</p></div><p><strong>After completing the above steps, the Edge Kube-API Endpoint function of KubeEdge has been enabled, and then continue to deploy EdgeMesh.</strong></p><h2 id="security" tabindex="-1"><a class="header-anchor" href="#security" aria-hidden="true">
1#</a> Security</h2>',5),b=(0,e.Uk)("KubeEdge >= v1.12.0 "),m={href:"https://github.com/kubeedge/kubeedge/issues/4108",target:"_blank",rel:"noopener noreferrer"},d=(0,e.Uk)("hardens the security"),g=(0,e.Uk)(" of the Edge Kube-API Endpoint to support HTTPS secure access. If you want to harden the security of the Edge Kube-API Endpoint service, this section will guide you how to configure KubeEdge to enable the secure Edge Kube-API Endpoint feature and how EdgeMesh uses it."),h=(0,e.uE)('<h3 id="configure" tabindex="-1"><a class="header-anchor" href="#configure" aria-hidden="true">#</a> Configure</h3><ul><li><strong>Step 1</strong>: Enable KubeEdge's requireAuthorization feature gate</li></ul><p>Both cloudcore.yaml and edgecore.yaml are configured as follows. After the configuration is complete, you need to restart cloudcore and 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>Step 2</strong>: Generate self-signed certificate</li></ul><p>We borrow KubeEdge's <code>certgen.sh</code> script to generate self-signed certificates. <strong>Note, please do not do this in production environment, please use production-level certificate for production environment.</strong></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token comment"># 1. Confirm that the /etc/kubernetes/pki/ directory exists</span>\n$ <span class="token function">ls</span> /etc/kubernetes/pki/\n\n<span class="token comment"># 2. Create a directory</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. Download 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. Generate certificate file</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. rename the certificate file</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. Create certificate 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>Step 3</strong>: At the edge node, configure the certificate path of the metaServer. After the configuration is complete, you need to restart 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),q=(0,e.Uk)("After completing the above configuration and restarting, you can have an HTTPS-based, secure Edge Kube-API Endpoint service, you can refer to "),y={href:"https://github.com/kubeedge/kubeedge/issues/4108",target:"_blank",rel:"noopener noreferrer"},v=(0,e.Uk)("issue#4801"),f=(0,e.Uk)(", and use "),E=(0,e._)("code",null,"curl",-1),A=(0,e.Uk)(" to test if it works."),P=(0,e.uE)('<h3 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h3><p>EdgeMesh has the following two ways to connect to the HTTPS-based Edge Kube-API Endpoint, you can choose one of them according to the actual situation.</p><h4 id="method-1-one-way-authentication" tabindex="-1"><a class="header-anchor" href="#method-1-one-way-authentication" aria-hidden="true">#</a> Method 1: One-Way Authentication</h4><p>EdgeMesh can access HTTPS-based Edge Kube-API Endpoint through One-Way authentication. One-Way authentication does not require client certificate verification.</p><ul><li>Helm Configure</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>Manual Configuration</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="method-2-two-way-authentication" tabindex="-1"><a class="header-anchor" href="#method-2-two-way-authentication" aria-hidden="true">#</a> Method 2: Two-Way Authentication</h4><p>EdgeMesh can also access HTTPS-based Edge Kube-API Endpoint through Two-Way authentication. The Two-Way authentication needs to verify both the server certificate and the client certificate.</p><ul><li>Helm Configure</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>Manual Configuration</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),w={render:function(n,s){const a=(0,e.up)("OutboundLink");return(0,e.wg)(),(0,e.iD)(e.HY,null,[t,(0,e._)("div",p,[o,(0,e._)("ul",null,[l,(0,e._)("li",null,[u,(0,e._)("a",c,[i,(0,e.Wm)(a)]),r])])]),k,(0,e._)("p",null,[b,(0,e._)("a",m,[d,(0,e.Wm)(a)]),g]),h,(0,e._)("p",null,[(0,e._)("strong",null,[q,(0,e._)("a",y,[v,(0,e.Wm)(a)]),f,E,A])]),P],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.