我们正在开发我们的第一个Golang API应用程序。当执行Azure管道以发布此应用程序时,AKS pod未创建,我们得到此错误消息:
- 错误:发布golang-app失败,由于设置了atomic而被关闭:等待条件超时 *
第二步是执行命令:kubectl -n xxxxx get events --sort-by ='{.lastTimestamp}',我们得到以下消息:
拉取图片“serverdev.azurecr.io/xxxx.golang-app.go-ver:86895“失败:[rpc错误:code = Unknown desc = failed to pull and unpack image“serverdev.azuadec.io/xxxx.golang-app.go-ver:86895”:failed to resolve reference“serverdev.azuadec.io/xxxx.golang-app.go-ver:86895”:failed to authorize:failed to fetch oauth token:unexpected status:401 Unauthorized,rpc error:code = Unknown desc = failed to pull and unpack image“serverdev.azuadec.io/xxxx.golang-app.go-ver:86895”:无法解析引用“serverdev.azuad.io/xxxx.golang-app.go-ver:86895”:无法授权:无法获取匿名令牌:意外状态:401未授权]
hilarius situacion,是当我们开发一个Net Core应用程序时,因为pod是正确创建的,没有任何错误。
我需要一些建议来解决这个问题。
先谢了。
PS:我们有Azure Kubernetes Service版本1.25.6和Helm 3.7
我们在Azure管道中更改了许多参数,但我们得到了相同的错误,另一方面,净核心应用程序没有得到任何错误消息。
1条答案
按热度按时间von4xj4u1#
我们在部署go项目时遇到了同样的问题。
请考虑以下文件夹结构:
字符串
在代码中,我们以这种方式导入包:
型
当我们的CI/CD管道运行并进入构建阶段时,它需要访问项目中使用的所有包。
由于git子模块被认为是第三方软件包,构建过程会尝试获取它们。
例如,
"github.com/lib/pq"
包是可以访问的,因为它是一个公共存储库。但是"gitlab.com/my_project/submodule_1"
可能无法从正在构建项目的计算机访问,从而导致此错误(因为缺少权限或存储库是私有的)您可以通过两种方式解决此问题:
1.确保
build
stage可以访问您的子模块1.将子模块中的所有代码复制到非子模块文件夹中。
我们选择了第二个选项:
型
通过这种方式,
modules
文件夹中的所有代码都成为my_project
代码的一部分,因此build
阶段不需要获取它P.S:你可以使用这个脚本来复制所有的子模块到你的新文件夹:
型