使用 Azure Pipeline 的 Golang 应用程序出现问题

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

我们正在开发第一个 Golang API 应用程序。当执行 Azure pipelines 来发布此应用程序时,未创建 AKS pod,我们收到此错误消息:

错误:发布golang-app失败,由于设置了原子性而已被卸载:等待条件超时

第二步是执行命令:kubectl -n xxxxx get events --sort-by='{.lastTimestamp}',我们会收到以下消息:

无法拉取映像“serverdev.azurecr.io/xxxx.golang-app.go-ver:86895”:[rpc 错误:代码 = 未知 desc = 无法拉取和解压映像“serverdev.azurecr.io/xxxx.golang” -app.go-ver:86895”:无法解析引用“serverdev.azurecr.io/xxxx.golang-app.go-ver:86895”:无法授权:无法获取oauth令牌:意外状态:401未经授权, rpc 错误:代码 = 未知 desc = 无法提取和解压映像“serverdev.azurecr.io/xxxx.golang-app.go-ver:86895”:无法解析引用“serverdev.azurecr.io/xxxx.golang-app” .go-ver:86895": 授权失败:无法获取匿名令牌:意外状态:401 未授权]

最令人高兴的情况是,当我们开发 Net Core 应用程序时,因为 pod 已正确创建并且没有出现任何错误。

拜托,我需要一些建议来解决这个问题。

提前致谢。

PS:我们有 Azure Kubernetes 服务版本 1.25.6 和 Helm 3.7

我们更改了Azure管道中的许多参数,但我们得到了相同的错误,另一方面网络核心应用程序没有收到任何错误消息。

azure go pipeline azure-aks
1个回答
0
投票

我们在部署 go 项目时遇到了同样的问题。

为什么会出现这个错误?

考虑以下文件夹结构:

my_project
 /api
 /config
 /migrations
 /submodule_1
 /submodule_2

在代码中,我们这样导入包:

package main

import (
    "github.com/lib/pq"
    ...
    "gitlab.com/my_project/submodule_1"
    "gitlab.com/my_project/submodule_2/models" 
    ...
)

当我们的 CI/CD 管道运行并构建阶段到来时,它需要访问项目中使用的所有包。

由于 git 子模块被视为第三方包,构建过程会尝试获取它们。

例如

"github.com/lib/pq"
pakage 可以毫无问题地访问,因为它是公共存储库。但是
"gitlab.com/my_project/submodule_1"
可能无法从正在构建项目的计算机访问,从而导致此错误(因为缺少权限或存储库是私有的)

解决方案

您可以通过两种方式解决此问题:

  1. 确保

    build
    阶段可以访问您的子模块

  2. 将子模块中的所有代码复制到非子模块文件夹中。

我们选择了第二个选项:

my_project
 /api
 /config
 /migrations
 /modules/
     /submodule_1
     /submodule_2
 /submodule_1
 /submodule_2

这样,

modules
文件夹中的所有代码都成为
my_project
代码的一部分。所以
build
阶段不需要获取它

P.S:您可以使用此脚本将所有子模块复制到新文件夹中:

// Makefile
submodule-gen:
    rm -rf modules/${SUBMODULE_1_FOLDERNAME}
    rm -rf modules/${SUBMODULE_2_FOLDERNAME}
    mkdir -p modules/${SUBMODULE_1_FOLDERNAME}
    mkdir -p modules/${SUBMODULE_2_FOLDERNAME}
    rsync -r --exclude '.git' ${SUBMODULE_1_FOLDERNAME}/ modules/${SUBMODULE_1_FOLDERNAME}
    rsync -r --exclude '.git' ${SUBMODULE_2_FOLDERNAME}/ modules/${SUBMODULE_2_FOLDERNAME}
© www.soinside.com 2019 - 2024. All rights reserved.