如何优雅地停止 Pulumi up 命令

How to stop gracefully a Pulumi up command

我正在尝试在 Minikube 上开发几个 Helm 图表。
为此,我在 Minikube 环境中 运行 pulumi up

import pulumi
from pulumi_kubernetes.helm.v3 import Chart, ChartOpts, FetchOpts, RepositoryOptsArgs
import pulumi_kubernetes as k8s

config = pulumi.Config()
is_minikube = config.require_bool("isMinikube")

datahub_prerequisites = Chart(
    "prerequisites",
    ChartOpts(
        chart="datahub-prerequisites",
        fetch_opts=FetchOpts(
            repo="https://helm.datahubproject.io/",
        ),
        values = {
            'elasticsearch': {
                'replicas': 1,
                'minimumMasterNodes': 1,
                'clusterHealthCheckParams': 'wait_for_status=yellow&timeout=1s',
                'antiAffinity': "soft"
            }, 
            'neo4j-community': {
                'enabled': 'true' 
            }   
        } 
    )
)

datahub_prerequisites = Chart(
    "datahub",
    ChartOpts(
        chart="datahub",
        fetch_opts=FetchOpts(
            repo="https://helm.datahubproject.io/",
        ),
    ),
)

我犯了一个错误,因为我应该使用 depends on 属性 以便在先决条件之后开发 datahaub helmchart。
现在一些资源创建失败,pulumi up 没有终止
这不是 minikube 资源的问题:我检查了 minikube top。 我试图在另一个终端 window 中启动 pulumi destroy 但出现此错误:

error: the stack is currently locked by 1 lock(s). Either wait for the other process(es) to end or manually delete the lock file(s).


我是一个初学者,我想了解在这种情况下的最佳做法。

当您 运行 Pulumi 程序时,Pulumi 会创建一个锁定文件以确保没有其他人可以尝试对该 Pulumi 程序进行 运行 操作。

您可以通过 ctrl+c.

发送 SIGINT 来取消 pulumi up 操作,方法与更多其他 Go 程序或其他类似 Unix 的工具相同

第一个 SIGINT 将尝试 优雅地 停止 Pulumi 程序的执行,第二个 SIGINT 将尝试强制停止程序的执行。

在这种情况下停止 Pulumi 程序的最终机制是使用 SIGKILL 完全终止 Pulumi。这可能会或可能不会留下一个锁定文件,您可以使用 pulumi cancel.

清理它

但是,在这种情况下需要考虑一些事情。

如果您取消 运行ning pulumi 程序,Pulumi 将无法再确认您的云提供商 API(在本例中为 Kubernetes)中的操作状态并协调该状态与你的 Pulumi 状态。您需要 运行 pulumi refresh 以便 Pulumi 可以将您的云提供商资源与 pulumi 状态相协调。在这种情况下 运行 a pulumi destroy 通常是安全的,因为 Pulumi 会简单地销毁它知道的所有资源