Azure AWS ECR无基本身份验证凭证

Azure AWS ECR无基本身份验证凭证,azure,kubernetes,kubectl,azure-aks,terraform-provider-azure,Azure,Kubernetes,Kubectl,Azure Aks,Terraform Provider Azure,我正在用Terraform部署Azure K8s群集,该映像托管在Amazon ECR中。 从ECR提取映像时部署失败,错误如下: Failed to pull image "tooot.eu-west-1.amazonaws.com/app-t:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://tooot.eu-west-1.amazonaws.com/v2/app-t/manif

我正在用Terraform部署Azure K8s群集,该映像托管在Amazon ECR中。 从ECR提取映像时部署失败,错误如下:

Failed to pull image "tooot.eu-west-1.amazonaws.com/app-t:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://tooot.eu-west-1.amazonaws.com/v2/app-t/manifests/latest: no basic auth credentials
以下是terraform模板中我的kuberentes资源

  metadata {
    name = "terraform-app-deployment-example"
    labels {
      test = "app-deployment"
    }
  }

  spec {
    replicas = 6

    selector {
      match_labels {
        test = "app-deployment"
      }
    }

    template {
      metadata {
        labels {
          test = "app-deployment"
        }
      }

      spec {
        container {
          image = "toot.eu-west-1.amazonaws.com/app-t:latest"
          name  = "app"
        }
      }
    }
  }
}`

在kubernetes集群中,您必须添加用于在提取图像时登录ECR的机密

ECR管理用于推拉图像的令牌。代币有效期为12小时

因此,请检查ECR中的令牌

我已经为此编写了shell脚本,您也可以查看它

它从aws ECR获取令牌,删除kubernetes集群中的旧秘密,并在kubernetes集群中再次创建新秘密。将用于从aws ecr提取图像的秘密

我正在检查容器规范选项中是否没有秘密

您可以在此处查看更多信息:


基本上,您缺乏从AWS获取图像的凭据

您需要创建一个regcred,其中包含登录凭据:

之后,您需要在terraform配置中添加regcred。我没有使用过模板,但在部署规范中,您将添加一个名为imagePullSecrets的字段

图像描述:


image\u pull\u secrets-(可选)ImagePullSecrets是对同一命名空间中的机密的可选引用列表,用于提取此PodSpec使用的任何图像。如果指定,这些秘密将传递给各个拉具实现,供它们使用。例如,在docker的案例中,只有DockerConfig类型的机密才受到尊重

哇,非常感谢您的脚本!,但我该如何运行它呢?我试图通过运行$(aws ecr get login——不包括电子邮件——region eu-west-1)和该命令的输出来验证我的身份,但是当我运行kubectl get pods时,我仍然存在同样的问题——watch I get ImagePullBackOff和ErrImagePull kubelet,aks-default-32086448-1未能提取图像“toot.dkr.ecr.eu-west-1.amazonaws.com/app-t:latest":rpc error:code=Unknown desc=守护进程的错误响应:Get:no basic auth credentials运行
aws ecr Get login之后--不包含电子邮件--region eu-west-1
您将获得一个docker命令作为带有大令牌的输出…在您的情况下,在kubernetes集群中生成令牌是一个问题…您是否编辑了manbitest文件规范容器配置在哪里???您必须添加那里的秘密名称..将存储ECR令牌的秘密您的脚本是此脚本的副本-@HarshManvar-一点也不,很高兴与大家分享!一天下来,我们都在互相抄袭。这个链接也回答了Renm的问题。谢谢,我今天会读更多关于它的内容,我想这些会带我找到正确的方向