【问题标题】:Kubernetes Simple Declarative ManagementKubernetes 简单的声明式管理
【发布时间】:2021-07-25 02:41:51
【问题描述】:

有没有比自己编写模板文件更简单的声明式管理方法?

例如使用 kubectl 命令创建模板文件,然后在这些模板上使用kubectl apply

kubectl create deployment my-app --image=nginx:latest --replicas=3 --port=8080 --dry-run=client --output=yaml > my-deployment.yaml
kubectl create service loadbalancer my-app --tcp=80:8080 --dry-run=client -o=yaml > my-service.yaml

然后应用生成的模板文件:

kubectl apply -f .

可以在生产中使用这种方法吗? 还是认为这不是一个好习惯?

【问题讨论】:

  • 无论您如何创建 YAML 文件,只要它们有效即可。就我个人而言,自己编写它们似乎比使用命令行生成它们要简单得多。另外,请查看Helm。它可能很有用。

标签: kubernetes kubectl


【解决方案1】:

虽然编写单独的 YAML 清单很常见 您自己,如您所展示的那样单独应用它们不太常见 在你的问题中。在我工作的地方,我们使用Kustomize 来管理我们的 表现出来;这是一个组装清单集合的工具 进入一个配置,然后使用kubectl apply 一次性应用所有配置(其他人使用Helm,但我没有使用该工具的任何经验)。

the documentation 中有很多示例,但是对于您的示例,您可能会这样做:

  • 将您的部署清单放入my-deployment.yaml

  • 将您的服务清单放入my-service.yaml

  • 创建一个文件kustomization.yaml,内容如下:

    resources:
      - my-deployment.yaml
      - my-service.yaml
    

要在集群中创建或更新资源,请运行:

kustomize build | kubectl apply -f-

Kustomize 有许多选项可用于生成诸如 ConfigMapsSecrets 来自文件,用于创建分层 您可以在其中覆盖部分清单的配置 修改内容等。

请注意,Kustomize 的一个版本实际上是内置在 kubectl 中的 命令;对于上面的例子,你可以简单地运行:

kubectl apply -k .

kubectl 内置的 Kustomize 版本比独立版本稍旧,但对于简单的配置,它工作得很好。

【讨论】:

  • 我也更喜欢使用 Kustomize 而不是 Helm。 Helm 工作流程通常会变成命令式脚本。
猜你喜欢
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
相关资源
最近更新 更多