{"id":10006011,"date":"2022-07-25T16:48:58","date_gmt":"2022-07-25T08:48:58","guid":{"rendered":"https:\/\/ityet.com\/?p=10006011"},"modified":"2022-07-25T16:48:58","modified_gmt":"2022-07-25T08:48:58","slug":"helm-chart-%e5%a4%9a%e7%8e%af%e5%a2%83%e3%80%81%e5%a4%9a%e9%9b%86%e7%be%a4%e4%ba%a4%e4%bb%98%e5%ae%9e%e8%b7%b5%ef%bc%8c%e9%80%8f%e8%a7%86%e8%b5%84%e6%ba%90%e6%8b%93%e6%89%91%e5%92%8c%e5%b7%ae%e5%bc%82","status":"publish","type":"post","link":"https:\/\/itmax.cn\/?p=10006011","title":{"rendered":"Helm Chart \u591a\u73af\u5883\u3001\u591a\u96c6\u7fa4\u4ea4\u4ed8\u5b9e\u8df5\uff0c\u900f\u89c6\u8d44\u6e90\u62d3\u6251\u548c\u5dee\u5f02"},"content":{"rendered":"<p>\u7b80\u4ecb\uff1a\u00a0\u5728\u672c\u6587\u4e2d\uff0c\u6211\u4eec\u5c06\u4ecb\u7ecd\u5982\u4f55\u901a\u8fc7 KubeVela\u89e3\u51b3\u591a\u96c6\u7fa4\u73af\u5883\u4e0b Helm Chart \u7684\u90e8\u7f72\u95ee\u9898\u3002\u5982\u679c\u4f60\u624b\u91cc\u6ca1\u6709\u591a\u96c6\u7fa4\u4e5f\u4e0d\u8981\u7d27\uff0c\u6211\u4eec\u5c06\u4ecb\u7ecd\u4e00\u79cd\u4ec5\u4f9d\u8d56\u4e8e Docker \u6216\u8005 Linux \u7cfb\u7edf\u7684\u8f7b\u91cf\u7ea7\u90e8\u7f72\u65b9\u5f0f\uff0c\u53ef\u4ee5\u8ba9\u4f60\u8f7b\u677e\u7684\u4f53\u9a8c\u591a\u96c6\u7fa4\u529f\u80fd\u3002\u5f53\u7136\uff0cKubeVela \u4e5f\u5b8c\u5168\u5177\u5907\u5355\u96c6\u7fa4\u7684 Helm Chart \u4ea4\u4ed8\u80fd\u529b\u3002Helm Charts[1]\u00a0\u5982\u4eca\u5df2\u662f\u4e00\u79cd\u975e\u5e38\u6d41\u884c\u7684\u8f6f\u4ef6\u6253\u5305\u65b9\u5f0f\uff0c\u5728\u5176\u5e94\u7528\u5e02\u573a\u4e2d\u4f60\u53ef\u4ee5\u627e\u5230\u63a5\u8fd1\u4e00\u4e07\u6b3e\u9002\u7528\u4e8e\u4e91\u539f\u751f\u73af\u5883\u7684\u8f6f\u4ef6\u3002\u7136\u540e\u5728\u5982\u4eca\u7684\u6df7\u5408\u4e91\u591a\u96c6\u7fa4\u73af\u5883\u4e2d\uff0c\u4e1a\u52a1\u8d8a\u6765\u8d8a\u4f9d\u8d56\u90e8\u7f72\u5230\u4e0d\u540c\u7684\u96c6\u7fa4\u3001\u4e0d\u540c\u7684\u73af\u5883\u3001\u540c\u65f6\u6307\u5b9a\u4e0d\u540c\u7684\u914d\u7f6e\u3002\u518d\u8fd9\u6837\u7684\u73af\u5883\u4e0b\uff0c\u5355\u7eaf\u4f9d\u8d56 Helm \u5de5\u5177\u53ef\u80fd\u65e0\u6cd5\u505a\u5230\u7075\u6d3b\u7684\u90e8\u7f72\u548c\u4ea4\u4ed8\u3002\u00a0\u5728\u672c\u6587\u4e2d\uff0c\u6211\u4eec\u5c06\u4ecb\u7ecd\u5982\u4f55\u901a\u8fc7\u00a0KubeVela[2]\u00a0\u89e3\u51b3\u591a\u96c6\u7fa4\u73af\u5883\u4e0b Helm Chart \u7684\u90e8\u7f72\u95ee\u9898\u3002\u5982\u679c\u4f60\u624b\u91cc\u6ca1\u6709\u591a\u96c6\u7fa4\u4e5f\u4e0d\u8981\u7d27\uff0c\u6211\u4eec\u5c06\u4ecb\u7ecd\u4e00\u79cd\u4ec5\u4f9d\u8d56\u4e8e Docker \u6216\u8005 Linux \u7cfb\u7edf\u7684\u8f7b\u91cf\u7ea7\u90e8\u7f72\u65b9\u5f0f\uff0c\u53ef\u4ee5\u8ba9\u4f60\u8f7b\u677e\u7684\u4f53\u9a8c\u591a\u96c6\u7fa4\u529f\u80fd\u3002\u5f53\u7136\uff0cKubeVela \u4e5f\u5b8c\u5168\u5177\u5907\u5355\u96c6\u7fa4\u7684 Helm Chart \u4ea4\u4ed8[3]\u80fd\u529b\u3002\u00a0\u524d\u63d0\u6761\u4ef6\u00a0\u5b89\u88c5 Docker v20.10.5+ (runc &gt;= v1.0.0-rc93) \u6216\u8005\u4f60\u7684\u64cd\u4f5c\u7cfb\u7edf\u662f Linux\u3002VelaD[4]\uff0c\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684\u90e8\u7f72 KubeVela \u548c Kubernetes \u7684\u5de5\u5177\u3002\u00a0\u00a0\u51c6\u5907\u96c6\u7fa4\u00a0\u672c\u8282\u662f\u505a KubeVela \u4ee5\u53ca\u591a\u96c6\u7fa4\u73af\u5883\u7684\u51c6\u5907\uff0c\u6211\u4eec\u5c06\u57fa\u4e8e Docker \u6216\u8005 Linux \u73af\u5883\u4ece\u5934\u5f00\u59cb\u3002\u5982\u679c\u4f60\u5df2\u7ecf\u5177\u5907\u4e86 KubeVela \u7684\u73af\u5883\u5e76\u4e14\u5b8c\u6210\u4e86\u96c6\u7fa4\u7ba1\u7406[5]\u00a0\uff0c\u5219\u53ef\u4ee5\u8df3\u8fc7\u672c\u8282\u3002\u5b89\u88c5 KubeVela \u63a7\u5236\u5e73\u9762\u00a0velad install\u00a0\u5c06\u65b0\u521b\u5efa\u7684\u96c6\u7fa4\u5bfc\u5165\u5230\u73af\u5883\u53d8\u91cf\u00a0export KUBECONFIG=$(velad kubeconfig &#8211;name default &#8211;host)\u00a0\u5230\u8fd9\u91cc\uff0c\u606d\u559c\u4f60\uff01\u6211\u4eec\u5df2\u7ecf\u5b8c\u6210\u4e86 KubeVela \u63a7\u5236\u5e73\u9762\u7684\u5b89\u88c5\u3002\u4f60\u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u8fd9\u4e2a\u65b9\u5f0f\u52a0\u5165\u4f60\u7684 Kubernetes \u96c6\u7fa4\uff1a\u00a0vela cluster join &lt;path-to-kubeconfig-of-cluster&gt; &#8211;name foo\u00a0\u5982\u679c\u4f60\u6ca1\u6709\u73b0\u6210\u7684 Kubernetes \u96c6\u7fa4\uff0cVelaD \u4e5f\u53ef\u4ee5\u5f88\u65b9\u4fbf\u7684\u4e3a\u4f60\u521b\u5efa\u4e00\u4e2a\uff1a\u00a0\u7528 velad \u521b\u5efa\u4e00\u4e2a\u540d\u4e3a foo \u7684\u96c6\u7fa4\uff0c\u5e76\u52a0\u5165\u5230\u63a7\u5236\u5e73\u9762\u00a0velad install &#8211;name foo &#8211;cluster-only<br \/>vela cluster join $(velad kubeconfig &#8211;name foo &#8211;internal) &#8211;name foo\u00a0\u4f5c\u4e3a\u4e00\u4e2a\u5145\u5206\u53ef\u6269\u5c55\u7684\u63a7\u5236\u5e73\u9762\uff0cKubeVela \u7684\u5927\u591a\u6570\u80fd\u529b\u90fd\u662f\u4f5c\u4e3a\u63d2\u4ef6\u63d0\u4f9b\u7684\u3002\u63a5\u4e0b\u6765\u7684\u51e0\u6b65\u6211\u4eec\u4ecb\u7ecd\u5b89\u88c5 Helm \u591a\u96c6\u7fa4\u90e8\u7f72\u7684\u5fc5\u8981\u63d2\u4ef6\u3002\u00a0\u542f\u7528 velaux \u63d2\u4ef6\uff0c\u83b7\u5f97 UI \u63a7\u5236\u53f0\u00a0vela addon enable velaux\u00a0\u542f\u7528 fluxcd \u63d2\u4ef6\u83b7\u5f97 helm chart \u4ea4\u4ed8\u80fd\u529b\u00a0vela addon enable fluxcd\u00a0\u5982\u679c\u4f60\u5728\u52a0\u5165\u65b0\u96c6\u7fa4\u4e4b\u524d\u5df2\u542f\u7528\u8fc7 fluxcd \u63d2\u4ef6\uff0c\u5219\u5e94\u8be5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u6765\u4e3a\u65b0\u52a0\u5165\u7684\u96c6\u7fa4\u542f\u7528\uff08\u90e8\u7f72\uff09\u63d2\u4ef6\uff1a\u00a0vela addon enable fluxcd &#8211;clusters foo\u00a0\u81f3\u6b64\uff0c\u6211\u4eec\u5b8c\u6210\u4e86\u6240\u6709\u7684\u51c6\u5907\u5de5\u4f5c\uff0c\u53ef\u4ee5\u67e5\u770b\u52a0\u5165\u7684\u96c6\u7fa4\u4e86\uff1a\u00a0$ vela cluster ls<br \/>CLUSTER ALIAS   TYPE            ENDPOINT                ACCEPTED    LABELS<br \/>local           Internal        &#8211;                       true<br \/>foo             X509Certificate <a href=\"https:\/\/link.segmentfault.com\/?enc=Z2eznjzaxlchk8xeTsXqfQ%3D%3D.QidHXfqOcIgvQMKxDtIguJm4XFzyBYXvpEDH1D%2BhBZ0%3D\" rel=\"nofollow\">https:\/\/172.20.0.6:6443<\/a> true\u00a0local \u662f KubeVela \u63a7\u5236\u5e73\u9762\u7684\u96c6\u7fa4\uff0cfoo \u5219\u662f\u6211\u4eec\u521a\u521a\u6dfb\u52a0\u7684\u96c6\u7fa4\u3002\u00a0\u591a\u96c6\u7fa4\u90e8\u7f72\u00a0\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 topology \u7b56\u7565\u6765\u6307\u5b9a Helm Chart \u4ea4\u4ed8\u7684\u73af\u5883\uff0c\u6307\u4ee4\u5982\u4e0b\uff1a\u00a0cat &lt;&lt;EOF | vela up -f &#8211;<br \/>apiVersion: core.oam.dev\/v1beta1<br \/>kind: Application<br \/>metadata:<br \/>  name: helm-hello<br \/>spec:<br \/>  components:<\/p>\n<pre><code>- name: hello\n  type: helm\n  properties:\n    repoType: &quot;helm&quot;\n    url: &quot;https:\/\/jhidalgo3.github.io\/helm-charts\/&quot;\n    chart: &quot;hello-kubernetes-chart&quot;\n    version: &quot;3.0.0&quot;<\/code><\/pre>\n<p>policies:<\/p>\n<pre><code>- name: foo-cluster-only\n  type: topology\n  properties:\n    clusters: [&quot;foo&quot;]<\/code><\/pre>\n<p>EOF\u00a0clusters \u5b57\u6bb5\u7684 topology \u7b56\u7565\u662f\u4e00\u4e2a\u5207\u7247\uff08slice\uff09\uff0c\u6b64\u5904\u53ef\u4ee5\u6307\u5b9a\u591a\u4e2a\u96c6\u7fa4\u7684\u540d\u79f0\u3002\u4f60\u8fd8\u53ef\u4ee5\u4f7f\u7528\u6807\u7b7e\u9009\u62e9\u5668\u6216\u6307\u5b9a\u547d\u540d\u7a7a\u95f4\uff0c\u8be6\u60c5\u89c1\u53c2\u8003\u6587\u6863[6]\u00a0\u3002\u00a0\u90e8\u7f72\u540e\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u68c0\u67e5\u5df2\u90e8\u7f72\u7684\u5e94\u7528\u7a0b\u5e8f\uff1a\u00a0vela status helm-hello\u00a0\u90e8\u7f72\u6210\u529f\u7684\u9884\u671f\u8f93\u51fa\u5e94\u8be5\u5982\u4e0b\uff1a\u00a0About:<\/p>\n<p>Name:         helm-hello<br \/>  Namespace:    default<br \/>  Created at:   2022-06-09 19:14:57 +0800 CST<br \/>  Status:       running<\/p>\n<p>Workflow:<\/p>\n<p>mode: DAG<br \/>  finished: true<br \/>  Suspend: false<br \/>  Terminated: false<br \/>  Steps<\/p>\n<ul>\n<li>id:vtahj5zrz4<br \/>name:deploy-foo-cluster-only<br \/>type:deploy<br \/>phase:succeeded<br \/>message:<\/li>\n<\/ul>\n<p>Services:<\/p>\n<ul>\n<li>Name: hello<br \/>Cluster: foo  Namespace: default<br \/>Type: helm<br \/>Healthy Fetch repository successfully, Create helm release successfully<br \/>No trait applied\u00a0\u4f60\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u68c0\u67e5\u5df2\u90e8\u7f72\u7684\u8d44\u6e90\uff1a\u00a0$ vela status helm-hello &#8211;tree<\/li>\n<\/ul>\n<p>CLUSTER       NAMESPACE     RESOURCE             STATUS<br \/>foo       \u2500\u2500\u2500 default   \u2500\u252c\u2500 HelmRelease\/hello    updated<\/p>\n<pre><code>                     \u2514\u2500 HelmRepository\/hello updated\u00a0\u4f60\u4e5f\u53ef\u4ee5\u901a\u8fc7 VelaUX \u68c0\u67e5\u5df2\u90e8\u7f72\u7684\u8d44\u6e90\u3002\u00a0\u4f7f\u7528 UI \u63a7\u5236\u53f0\u67e5\u770b\u90e8\u7f72\u72b6\u6001\u00a0\u901a\u8fc7\u4f7f\u7528 velaux UI \u63a7\u5236\u53f0\uff0c\u5219\u53ef\u4ee5\u5f88\u65b9\u4fbf\u7684\u67e5\u770b\u591a\u96c6\u7fa4\u4fe1\u606f\uff0c\u5e76\u83b7\u5f97\u7edf\u4e00\u7684\u4f53\u9a8c\u3002\u4f60\u53ef\u4ee5\u53c2\u8003\u6587\u6863[7]\u4e86\u89e3 VelaUX \u7684\u8bbf\u95ee\u548c\u4f7f\u7528\u7ec6\u8282\u3002\u901a\u8fc7 UI \u754c\u9762\uff0c\u6211\u4eec\u53ef\u4ee5\uff1a\u00a0\u68c0\u67e5\u6765\u81ea\u4e0d\u540c\u96c6\u7fa4\u7684\u5b9e\u4f8b\u72b6\u6001\u548c\u4e8b\u4ef6\uff1a\u00a0<\/code><\/pre>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219781\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/>\u00a0\u68c0\u67e5\u6765\u81ea\u4e0d\u540c\u96c6\u7fa4\u7684\u5b9e\u4f8b\u65e5\u5fd7\uff1a\u00a0<br \/><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219782\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/>\u00a0\u68c0\u67e5\u8d44\u6e90\u62d3\u6251\u5173\u7cfb\u548c\u72b6\u6001\uff1a\u00a0<br \/><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219783\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/>\u00a0\u4f7f\u7528 Override \u914d\u7f6e\u8fdb\u884c\u90e8\u7f72\u00a0\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u4f1a\u4e3a\u4e0d\u540c\u96c6\u7fa4\u7684 Helm Chart \u8bbe\u7f6e\u4e0d\u540c\u7684 Value \uff0c\u8fd9\u6837\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0Override \u7b56\u7565[8]\u3002\u00a0\u4e0b\u9762\u662f\u4e00\u4e2a\u590d\u6742\u7684\u793a\u4f8b\uff0c\u6211\u4eec\u5c06\u628a\u4e00\u4e2a Helm Chart \u90e8\u7f72\u5230\u4e24\u4e2a\u96c6\u7fa4\u4e2d\uff0c\u5e76\u4e3a\u6bcf\u4e2a\u96c6\u7fa4\u6307\u5b9a\u4e0d\u540c\u7684 Value \u3002\u8ba9\u6211\u4eec\u90e8\u7f72\u5b83\uff1a\u00a0cat &lt;&lt;EOF | vela up -f &#8211;<br \/>apiVersion: core.oam.dev\/v1beta1<br \/>kind: Application<br \/>metadata:<br \/>  name: helm-hello<br \/>spec:<br \/>  components:<\/p>\n<pre><code>- name: hello\n  type: helm\n  properties:\n    repoType: &quot;helm&quot;\n    url: &quot;https:\/\/jhidalgo3.github.io\/helm-charts\/&quot;\n    chart: &quot;hello-kubernetes-chart&quot;\n    version: &quot;3.0.0&quot;<\/code><\/pre>\n<p>policies:<\/p>\n<pre><code>- name: topology-local\n  type: topology\n  properties:\n    clusters: [&quot;local&quot;]\n- name: topology-foo\n  type: topology\n  properties:\n    clusters: [&quot;foo&quot;]\n- name: override-local\n  type: override\n  properties:\n    components:\n      - name: hello\n        properties:\n          values:\n            configs:\n              MESSAGE: Welcome to Control Plane Cluster!\n- name: override-foo\n  type: override\n  properties:\n    components:\n      - name: hello\n        properties:\n          values:\n            configs:\n              MESSAGE: Welcome to Your New Foo Cluster!<\/code><\/pre>\n<p>workflow:<\/p>\n<pre><code>steps:\n  - name: deploy2local\n    type: deploy\n    properties:\n      policies: [&quot;topology-local&quot;, &quot;override-local&quot;]\n  - name: manual-approval\n    type: suspend\n  - name: deploy2foo\n    type: deploy\n    properties:\n      policies: [&quot;topology-foo&quot;, &quot;override-foo&quot;]<\/code><\/pre>\n<p>EOF\u00a0\u6ce8\u610f\uff1a\u5982\u679c\u4f60\u89c9\u5f97\u7b56\u7565\u548c\u5de5\u4f5c\u6d41\u7a0b\u6709\u70b9\u590d\u6742\uff0c\u4f60\u53ef\u4ee5\u5c06\u5b83\u4eec\u4f5c\u4e3a\u4e00\u4e2a\u5916\u90e8\u5bf9\u8c61\u5e76\u4ec5\u5f15\u7528\u8be5\u5bf9\u8c61\uff0c\u7528\u6cd5\u548c\u5bb9\u5668\u4ea4\u4ed8[9]\u662f\u4e00\u6837\u7684\u3002\u00a0\u90e8\u7f72\u8fc7\u7a0b\u5206\u4e3a\u4e09\u4e2a\u6b65\u9aa4\uff1a\uff081\uff09\u90e8\u7f72\u5230\u672c\u5730\u96c6\u7fa4\uff1b\uff082\uff09\u7b49\u5f85\u4eba\u5de5\u5ba1\u6279\uff1b\uff083\uff09\u90e8\u7f72\u5230 foo \u96c6\u7fa4\u3002\u00a0\u4f60\u4f1a\u53d1\u73b0\u5b83\u5728\u7b2c\u4e00\u6b65\u4e4b\u540e\u5c31\u88ab\u6682\u505c\u4e86\uff0c\u5c31\u50cf\u4e0b\u9762\u8fd9\u6837\uff1a\u00a0$ vela status helm-hello<br \/>About:<\/p>\n<p>Name:         helm-hello<br \/>  Namespace:    default<br \/>  Created at:   2022-06-09 19:38:13 +0800 CST<br \/>  Status:       workflowSuspending<\/p>\n<p>Workflow:<\/p>\n<p>mode: StepByStep<br \/>  finished: false<br \/>  Suspend: true<br \/>  Terminated: false<br \/>  Steps<\/p>\n<ul>\n<li>id:ww4cydlvee<br \/>name:deploy2local<br \/>type:deploy<br \/>phase:succeeded<br \/>message:<\/li>\n<li>id:xj6hu97e1e<br \/>name:manual-approval<br \/>type:suspend<br \/>phase:succeeded<br \/>message:<\/li>\n<\/ul>\n<p>Services:<\/p>\n<ul>\n<li>Name: hello<br \/>Cluster: local  Namespace: default<br \/>Type: helm<br \/>Healthy Fetch repository successfully, Create helm release successfully<br \/>No trait applied\u4f60\u53ef\u4ee5\u67e5\u770b\u5e76\u4f7f\u7528 Value \u4e3a \u201cWelcome to Control Plane Cluster!\u201d \u7684\u90e8\u7f72\u5728\u63a7\u5236\u5e73\u9762\u7684 Helm Chart \u3002\u00a0vela port-forward helm-hello\u00a0\u6d4f\u89c8\u5668\u4f1a\u81ea\u52a8\u63d0\u793a\u5982\u4e0b\u9875\u9762\uff1a\u00a0<\/li>\n<\/ul>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219784\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><\/p>\n<p><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219785\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/>\u53d1\u73b0\u90e8\u7f72\u6210\u529f\uff0c\u8ba9\u6211\u4eec\u7ee7\u7eed\u3002\u00a0vela workflow resume helm-hello\u00a0\u7136\u540e\u5b83\u4f1a\u90e8\u7f72\u5230 foo \u96c6\u7fa4\uff0c\u4f60\u53ef\u4ee5\u67e5\u770b\u8fd9\u4e9b\u8d44\u6e90\u7684\u8be6\u7ec6\u4fe1\u606f\u3002\u00a0$ vela status helm-hello &#8211;tree &#8211;detail<br \/>CLUSTER       NAMESPACE     RESOURCE             STATUS    APPLY_TIME          DETAIL<br \/>foo       \u2500\u2500\u2500 default   \u2500\u252c\u2500 HelmRelease\/hello    updated   2022-06-09 19:38:13 Ready: True  Status: Release reconciliation succeeded  Age: 64s<\/p>\n<pre><code>                     \u2514\u2500 HelmRepository\/hello updated   2022-06-09 19:38:13 URL: https:\/\/jhidalgo3.github.io\/helm-charts\/  Age: 64s  Ready: True\n                                                                           Status: stored artifact for revision 'ab876069f02d779cb4b63587af1266464818ba3790c0ccd50337e3cdead44803'<\/code><\/pre>\n<p>local     \u2500\u2500\u2500 default   \u2500\u252c\u2500 HelmRelease\/hello    updated   2022-06-09 19:38:13 Ready: True  Status: Release reconciliation succeeded  Age: 7m34s<\/p>\n<pre><code>                     \u2514\u2500 HelmRepository\/hello updated   2022-06-09 19:38:13 URL: https:\/\/jhidalgo3.github.io\/helm-charts\/  Age: 7m34s  Ready: True\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Status: stored\u00a0\u518d\u6b21\u4f7f\u7528\u7aef\u53e3\u8f6c\u53d1\uff1a\u00a0vela port-forward helm-hello\u00a0\u7136\u540e\u5b83\u4f1a\u5f39\u51fa\u4e00\u4e9b\u9009\u9879\uff1a\u00a0? You have 2 deployed resources in your app. Please choose one:  [Use arrows to move, type to filter]<\/code><\/pre>\n<blockquote><p>Cluster: foo | Namespace: default | Kind: HelmRelease | Name: hello<br \/>  Cluster: local | Namespace: default | Kind: HelmRelease | Name: hello\u00a0\u9009\u62e9\u5e26\u6709 foo \u96c6\u7fa4\u7684\u9009\u9879\uff0c\u7136\u540e\u4f60\u4f1a\u770b\u5230\u7ed3\u679c\u5df2\u7ecf\u88ab\u65b0\u6d88\u606f\u8986\u76d6\u3002\u00a0$ curl <a href=\"https:\/\/link.segmentfault.com\/?enc=K1Ve7nB66HCr7JQJLPT%2BkQ%3D%3D.DPs9lxHj%2BQ9NYBd4KQ%2FOscVyRhGb%2FZycTO1KvBxfEfg%3D\" rel=\"nofollow\">http:\/\/127.0.0.1:8080\/<\/a><br \/>&#8230;snip&#8230;<\/p><\/blockquote>\n<pre><code>  &lt;div id=&quot;message&quot;&gt;<\/code><\/pre>\n<p>Welcome to Your New Foo Cluster!<br \/>&lt;\/div&gt;<br \/>&#8230;snip&#8230;\u00a0\u4e3a\u4e0d\u540c\u73af\u5883\u6307\u5b9a\u4e0d\u540c\u7684 Value \u6587\u4ef6\u00a0\u4f60\u53ef\u4ee5\u4e3a\u4e0d\u540c\u73af\u5883\u9009\u62e9 Helm Chart \u4e2d\u73b0\u6709\u7684\u4e0d\u540c Value \u6587\u4ef6\u3002\u6bd4\u5982\uff1a\u00a0\u8bf7\u786e\u4fdd\u4f60\u7684\u672c\u5730\u96c6\u7fa4\u6709\u4e24\u4e2a\u547d\u540d\u7a7a\u95f4 \u201ctest\u201d \u548c \u201cprod\u201d\uff0c\u5b83\u4eec\u4ee3\u8868\u6211\u4eec\u793a\u4f8b\u4e2d\u7684\u4e24\u4e2a\u73af\u5883\u3002\u00a0\u6211\u4eec\u4ee5 Chart hello-kubernetes-chart \u4e3a\u4f8b\u3002\u8fd9\u4e2a Chart \u6709\u4e24\u4e2a Value \u6587\u4ef6\u3002\u4f60\u53ef\u4ee5\u62c9\u53d6\u6b64 Chart \u5e76\u67e5\u770b\u5176\u4e2d\u5305\u542b\u7684\u6240\u6709\u6587\u4ef6\uff1a\u00a0$ tree .\/hello-kubernetes-chart<br \/>.\/hello-kubernetes-chart<br \/>\u251c\u2500\u2500 Chart.yaml<br \/>\u251c\u2500\u2500 templates<br \/>\u2502 \u251c\u2500\u2500 NOTES.txt<br \/>\u2502 \u251c\u2500\u2500 _helpers.tpl<br \/>\u2502 \u251c\u2500\u2500 config-map.yaml<br \/>\u2502 \u251c\u2500\u2500 deployment.yaml<br \/>\u2502 \u251c\u2500\u2500 hpa.yaml<br \/>\u2502 \u251c\u2500\u2500 ingress.yaml<br \/>\u2502 \u251c\u2500\u2500 service.yaml<br \/>\u2502 \u251c\u2500\u2500 serviceaccount.yaml<br \/>\u2502 \u2514\u2500\u2500 tests<br \/>\u2502 \u2514\u2500\u2500 test-connection.yaml<br \/>\u251c\u2500\u2500 values-production.yaml<br \/>\u2514\u2500\u2500 values.yaml\u00a0\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u6b64 Chart \u4e2d\u6709 values.yaml values-production.yaml \u8fd9\u4e24\u4e2a Value \u6587\u4ef6\u3002\u00a0cat &lt;&lt;EOF | vela up -f &#8211;<br \/>apiVersion: core.oam.dev\/v1beta1<br \/>kind: Application<br \/>metadata:<br \/>  name: hello-kubernetes<br \/>spec:<br \/>  components:<\/p>\n<pre><code>- name: hello-kubernetes\n  type: helm\n  properties:\n    repoType: &quot;helm&quot;\n    url: &quot;https:\/\/wangyikewxgm.github.io\/my-charts\/&quot;\n    chart: &quot;hello-kubernetes-chart&quot;\n    version: &quot;0.1.0&quot;\n<\/code><\/pre>\n<p>policies:<\/p>\n<pre><code>- name: topology-test\n  type: topology\n  properties:\n    clusters: [&quot;local&quot;]\n    namespace: &quot;test&quot;\n- name: topology-prod\n  type: topology\n  properties:\n    clusters: [&quot;local&quot;]\n    namespace: &quot;prod&quot;\n- name: override-prod\n  type: override\n  properties:\n    components:\n      - name: hello-kubernetes\n        properties:\n          valuesFiles:\n            - &quot;values-production.yaml&quot;<\/code><\/pre>\n<p>workflow:<\/p>\n<pre><code>steps:\n  - name: deploy2test\n    type: deploy\n    properties:\n      policies: [&quot;topology-test&quot;]\n  - name: deploy2prod\n    type: deploy\n    properties:\n      policies: [&quot;topology-prod&quot;, &quot;override-prod&quot;]  <\/code><\/pre>\n<p>EOF\u00a0\u8bbf\u95ee Application \u7684 endpoint \uff1a\u00a0vela port-forward hello-kubernetes\u00a0\u5982\u679c\u4f60\u9009\u62e9 Cluster: local | Namespace: test | Kind: HelmRelease | Name: hello-kubernetes \u4f60\u4f1a\u770b\u5230\uff1a\u00a0<br \/><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219786\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/>\u00a0\u9009\u62e9 Cluster: local | Namespace: prod | Kind: HelmRelease | Name: hello-kubernetes \u5219\u4f1a\u770b\u5230\uff1a<br \/><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219787\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/>\u00a0<br \/><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219788\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/>\u00a0\u6e05\u7406\u00a0\u5982\u679c\u4f60\u4f7f\u7528 velad \u8fdb\u884c\u6b64\u6f14\u793a\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u4fbf\u6377\u5730\u8fdb\u884c\u6e05\u7406\uff1a\u00a0\u6e05\u7406 foo \u96c6\u7fa4\u00a0velad uninstall -n foo\u00a0\u6e05\u7406\u9ed8\u8ba4\u96c6\u7fa4\u00a0velad uninstall\u00a0\u4e0d\u4ec5\u5982\u6b64\u00a0KubeVela \u63d0\u4f9b\u7684\u80fd\u529b\u8fdc\u4e0d\u6b62\u5982\u6b64\uff0c\u901a\u8fc7\u5b89\u88c5\u5176\u4ed6\u63d2\u4ef6\uff0c\u4f60\u8fd8\u53ef\u4ee5\u83b7\u5f97\u5305\u62ec\u91d1\u4e1d\u96c0\u53d1\u5e03[10]\u00a0\u5728\u5185\u7684\u66f4\u591a\u80fd\u529b\uff0c\u4e3a\u4f60\u7684 Helm Chart \u4ea4\u4ed8\u4fdd\u9a7e\u62a4\u822a\u3002\u00a0\u5feb\u4f7f\u7528 KubeVela \u4ea4\u4ed8 Helm Chart \uff0c\u8ba9\u73b0\u4ee3\u5316\u7684\u5e94\u7528\u4ea4\u4ed8\u548c\u7ba1\u7406\u66f4\u7b80\u5355\u3001\u8f7b\u677e\u3001\u53ef\u9760\uff01\u00a0\u76f8\u5173\u94fe\u63a5\u00a0[1] Helm Charts\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=t9zelhG1k2%2FQayptE4IBDw%3D%3D.RXlh2oKwS6D3n9C%2BW1RSyu8kpaQsp1zwiLSAu1oOzmU650xNgCcNi%2FP92f1XmdlY\" rel=\"nofollow\">https:\/\/artifacthub.io\/packag&#8230;<\/a>\u00a0[2] KubeVela\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=Ey7tHKI5vvW4eQp45gmcoQ%3D%3D.mf1%2Bsh5IwFPFMz40Ku9cA6K4V4reKUUtOTH0Rm%2Bdcc8%3D\" rel=\"nofollow\">https:\/\/kubevela.io\/<\/a>\u00a0[3] \u5355\u96c6\u7fa4\u7684 Helm Charts \u4ea4\u4ed8<a href=\"https:\/\/link.segmentfault.com\/?enc=acHKtERVgKdaqv%2FiFaHOLw%3D%3D.MNe4JRys7TJDaUpcu%2Fip%2FmANJP0JTocisBVwLTauKvqXraV21bdBFbQlh99xokxm\" rel=\"nofollow\">https:\/\/kubevela.net\/zh\/docs\/&#8230;<\/a>\u00a0[4]\u00a0velad\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=BA33ZJM%2BBwSkn%2FZ1l%2F3ACA%3D%3D.R8uULK3pbZzOMOtdiyRh0Sz4qTlsv1hfbB8Tz%2BpmuZ%2FuwIJnZ26NaqKUFUwBfkdk\" rel=\"nofollow\">https:\/\/github.com\/kubevela\/v&#8230;<\/a>\u00a0[5] \u96c6\u7fa4\u7ba1\u7406\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=M2fH9iOPBvLBkG41aF0LCw%3D%3D.K7OWi0mgqllNcY%2Fnwm9e9biO0j6vhHAYrNj5sLC7AYEry6zD4F5%2BvzqyE2JBTKFTNRtBhxVYzAGMaehcZQfAJOVgX%2BPhHuRXrvMIIxJNTZ6sd%2FmMIBY3SKSrgXVFZCa5\" rel=\"nofollow\">https:\/\/kubevela.net\/zh\/docs\/&#8230;<\/a>\u00a0[6] \u53c2\u8003\u6587\u6863\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=vi5KM855YHhuK5wbfU4iWA%3D%3D.K1TQRT2JWUyDwXrLUyhQjDOdYBH%2BaGA8tUTHzoEoLkNDBIcEARpiQll%2BvMRwQQLj8QHG16B4Jv1Ix%2BLPKVVMSSXbCZSMFDCiPdoHVhBPcMI%3D\" rel=\"nofollow\">https:\/\/kubevela.net\/zh\/docs\/&#8230;<\/a>\u00a0[7] \u6587\u6863<a href=\"https:\/\/link.segmentfault.com\/?enc=LSl6R79HRGUlq5da0%2F8Lzg%3D%3D.stuqB%2FauFDYp0moe9VbeoEkkeFKRWtmMpiulabdCM%2FemG8eOaLsWc0rwltMNg77M0ULJBPiAlqh%2Bjm7w2uFUUA%3D%3D\" rel=\"nofollow\">https:\/\/kubevela.io\/docs\/inst&#8230;<\/a>\u00a0[8] Override \u7b56\u7565<a href=\"https:\/\/link.segmentfault.com\/?enc=qUz63NXnmiHuz1f4MoFmdg%3D%3D.fufDiV0cqUfwxEKBjWPOtkiKsGpVqj%2F3dNz7jVyzjtEWSObY1edBsaysYDM0AaT3TQrsg5qbewpDsvGX0u7%2FPg%3D%3D\" rel=\"nofollow\">https:\/\/kubevela.io\/docs\/end-&#8230;<\/a>\u00a0[9] \u5bb9\u5668\u4ea4\u4ed8<a href=\"https:\/\/link.segmentfault.com\/?enc=LepPxaE6048NlgT5zI%2FFTQ%3D%3D.fmupXmjO6svj4KEI6YNyGKyX%2FGhjGxesba9mqHZbqWPdOGIrM%2BAdfA4kYs0dmrqZtPaqKjCJLz2iFb7Ct%2BTL3IUQeHnqeUUli7pBS9%2B26Cv68MWlud8PaerxXnBE%2Bf5TcyYeuRvwwHppKUiYLTgiGQ%3D%3D\" rel=\"nofollow\">https:\/\/kubevela.io\/docs\/case&#8230;<\/a>\u00a0[10] \u91d1\u4e1d\u96c0\u53d1\u5e03\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=OwNw5RDfT9l%2FWfMitF27WQ%3D%3D.2hUSARtkN61YnKRrGINwClLJ%2FlTvIT0z0U5O4xzXUJoS6xopnmWUQoBc5MGq06zY\" rel=\"nofollow\">https:\/\/kubevela.io\/docs\/tuto&#8230;<\/a>\u00a0\u00a0\u60a8\u53ef\u4ee5\u901a\u8fc7\u5982\u4e0b\u6750\u6599\u4e86\u89e3\u66f4\u591a\u5173\u4e8e KubeVela \u4ee5\u53ca OAM \u9879\u76ee\u7684\u7ec6\u8282\uff1a\u00a0\u9879\u76ee\u4ee3\u7801\u5e93\uff1agithub.com\/oam-dev\/kubevela \u6b22\u8fce Star\/Watch\/Fork\uff01\u9879\u76ee\u5b98\u65b9\u4e3b\u9875\u4e0e\u6587\u6863\uff1akubevela.io \uff0c\u4ece 1.1 \u7248\u672c\u5f00\u59cb\uff0c\u5df2\u63d0\u4f9b\u4e2d\u6587\u3001\u82f1\u6587\u6587\u6863\uff0c\u66f4\u591a\u8bed\u8a00\u6587\u6863\u6b22\u8fce\u5f00\u53d1\u8005\u8fdb\u884c\u7ffb\u8bd1\u3002\u9879\u76ee\u9489\u9489\u7fa4\uff1a23310022\uff1bSlack\uff1aCNCF #kubevela Channel\u52a0\u5165\u5fae\u4fe1\u7fa4\uff1a\u8bf7\u5148\u6dfb\u52a0\u4ee5\u4e0b maintainer \u5fae\u4fe1\u53f7\uff0c\u8868\u660e\u8fdb\u5165 KubeVela \u7528\u6237\u7fa4\uff1a\u00a0<br \/><img decoding=\"async\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000042219789\" alt=\"\u56fe\u7247\" title=\"\u56fe\u7247\" loading=\"lazy\"><br \/>\u00a0\u6233\u6b64\u5904\uff1a\u67e5\u770b KubeVela \u9879\u76ee\u5b98\u7f51\uff01\u539f\u6587\u94fe\u63a5\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=uW9CWlnS3%2FrYhID8uLAsVg%3D%3D.EsBlDvscwGgd7ewR9OPiN8PbTf0YIKVNbSprRoOW%2BZiKxdq3uB8hUKLma3ORIDc5\" rel=\"nofollow\">http:\/\/click.aliyun.com\/m\/100&#8230;<\/a>\u672c\u6587\u4e3a\u963f\u91cc\u4e91\u539f\u521b\u5185\u5bb9\uff0c\u672a\u7ecf\u5141\u8bb8\u4e0d\u5f97\u8f6c\u8f7d\u3002<\/p>\n<p><a href=\"https:\/\/segmentfault.com\/a\/1190000042219779\">https:\/\/segmentfault.com\/a\/1190000042219779<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u4ecb\uff1a\u00a0\u5728\u672c\u6587\u4e2d\uff0c\u6211\u4eec\u5c06\u4ecb\u7ecd\u5982\u4f55\u901a\u8fc7 KubeVela\u89e3\u51b3\u591a\u96c6\u7fa4\u73af\u5883\u4e0b Helm Chart \u7684\u90e8\u7f72\u95ee\u9898\u3002\u5982\u679c [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-10006011","post","type-post","status-publish","format-standard","hentry"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10006011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10006011"}],"version-history":[{"count":0,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10006011\/revisions"}],"wp:attachment":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10006011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10006011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10006011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}