cloud-foundry - Space Drain 无法重新暂存:无法从 UAA 获取令牌
问题描述
我正在通过 CLI 部署空间消耗,它可以正常工作/按预期运行大约 10 天......然后当它尝试在刷新令牌过期时重新部署自身时,我在空间消耗日志中收到这些错误。
2019-08-09T19:32:18.897-07:00 [APP/PROC/WEB/0] [ERR] 2019/08/10 02:32:18 starting space drain...
2019-08-09T19:32:19.044-07:00 [APP/PROC/WEB/0] [ERR] 2019/08/10 02:32:19 Failed to fetch tokens from UAA: Unexpected status code: 401
这似乎与此问题直接相关,并且问题中定位/引用的代码实际上我可以看到生成确切错误的代码。
https://github.com/cloudfoundry/cf-drain-cli/issues/21
但是,我通读了该问题,但即使问题已关闭,我也不清楚修复方法是什么?
如果我尝试重新部署它,它会再次失败,我让它工作的唯一方法是清理它并重新部署它
cf drain-space syslog://<sysloghost>:<port> --drain-name my-space-drain
然后它再次工作,直到令牌似乎过期......重复等等。
解决方案
但是,我通读了该问题,但即使问题已关闭,我也不清楚修复方法是什么?
我也没有看到解决该问题的方法。那里的解释也不完全清楚。刷新令牌最终会过期。UAA 不允许您永远保留一个(至少在撰写本文时)。您也不能刷新刷新令牌,所以当它过期时就是这样。你唯一能做的就是再次登录,所以除非应用程序正在存储用户凭据,它似乎没有这样做并且是一个坏主意,否则它无法获得另一个刷新令牌。这可能就是你经常遇到这个问题的原因。
如果我尝试重新部署它,它会再次失败,我让它工作的唯一方法是清理它并重新部署它
我认为这是因为应用程序的配置方式。看起来它被赋予了一个作为环境变量的刷新令牌。因此,重新分期无济于事。
当该令牌过期时,您需要使用新的刷新令牌更新 env 变量。您可以从中获取当前的刷新令牌~/.cf/config.json
(这是 cf cli 插件正在执行的操作,请参阅[1]和[2]。这是您当前使用 cf cli 登录的用户的刷新令牌(除非您使用备用 $ CF_HOME,那么它将位于 $CF_HOME 下)。
如果您使用的是 Linux/Mac,则可以运行jq -r .RefreshToken ~/.cf/config.json
以获取令牌。
获得令牌后,使用新令牌运行cf set-env
并更新REFRESH_TOKEN
env 变量。那应该可以解决它,并且应该比清理和重新部署要快一些。
希望有帮助!
推荐阅读
- javascript - 在页面刷新时保存切换位置
- asp.net - 如何将 32 位库安装到在 64 位机器上运行的 32 位 Web 应用程序?
- c# - 将方法作为参数传递时,Blazor 中的“@MethodName”和“MethodName”之间的区别?
- wix - Wixtoolset - 支持在 Logo 和 LogoFile 主题中显示 Ratina
- macos - 如何使我的应用程序安装程序成为 Mac OS(Catalina) 中受信任的应用程序?
- typescript - 在打字稿中递归转换对象树的所有叶子
- transloadit - 带有 transloadit 的旋转圆圈。是否可以使用水印或图像旋转?
- drupal - 在 Gatsby GraphQL 查询中努力过滤 Drupal 数据
- javascript - 为什么在Vue中甚至存在inheritAttrs?
- javascript - JS - 用同名的变量替换所有出现的字符串