如何备份Helm3 Nginx控制器配置并更新正在运行的LoadBalancer服务?

问题描述 投票:0回答:2

对kubernetes来说是新的。 Helm2和3之间的文档和示例差异让我感到困惑。

我通过stable/nginx-ingress安装了helm install app-name stable/nginx-ingress图表。

第一个问题:

我需要将externalTrafficPolicy更新为Local。后来我了解到,可以在安装过程中通过将--set controller.service.externalTrafficPolicy=Local添加到helm命令中来进行设置。

如何在不删除入口控制器并重新安装的情况下用新设置更新LoadBalancer服务?

第二个问题:

Helm3刚刚下载并设置了入口控制器,但未在本地保存任何内容。有没有办法备份我所有的k8s集群配置(不是我手动创建的配置)?

kubernetes kubernetes-helm kubernetes-ingress
2个回答
2
投票

是否有办法备份我所有的k8s群集配置

  • [kubectl cluster-info dump显示了有关k8s集群的一些信息。
  • k8s本身的配置和清单(yaml文件)将位于主节点上的/etc/kubernetes/
  • 我已经能够使用以下bash脚本转储k8s中所有命名空间中所有资源的清单,请根据需要进行编辑:

    #!/usr/bin/env bash
    
    while read -r line
    do
        output=$(kubectl get "$line" --all-namespaces -o yaml 2>/dev/null | grep '^items:')
        if ! grep -q "\[\]" <<< $output; then
            echo -e "\n======== "$line" manifests ========\n"
            kubectl get "$line" --all-namespaces -o yaml
        fi
    done < <(kubectl api-resources | awk '{print $1}' | grep -v '^NAME')
    

    以上bash脚本已通过以下方式测试:

    • k8s v1.16.3
    • Ubuntu Bionic18.04.3OS
    • bash版本version 4.4.20(1)-release (x86_64-pc-linux-gnu)

[我建议不要使用现有k8s群集的转储/清单来创建新的k8s群集,仅将其称为备份,并使用Kubeadm之类的安装程序来重新安装k8s。

我对Helm2和3之间的文档和示例差异感到困惑。

[如果您有兴趣,请检查helm-2to3工具-使用helm 2to3 move config之类的命令将配置和数据从头盔2迁移到头盔3。


1
投票

升级和转储已部署的YAML(用于入口版本的备份)

helm upgrade <your-release-name> stable/nginx-ingress \
  --reuse-values \
  --set controller.service.externalTrafficPolicy=Local \
  --output yaml

对于公共图表,您可能需要将--version选项设置为所使用图表的现有安装版本。如果您不想与该设置一起应用较新版本的任何更新。

有关完整的转储,请浏览this github issue。所有选项在边缘情况下都有些闪避。我建议从git之类的所有东西重新部署,从集群到应用程序。任何手动编辑的人都可以被射杀(嗯。至少要定期重新部署群集:)

© www.soinside.com 2019 - 2024. All rights reserved.