我在ECR中有一个图像,我想在我的jenkins管道中用作容器。我的Kubernetes集群是运行本地的k3 s集群。我无法提取图像(我猜),因为我没有正确地传递我的AWS creds(存储在密码为homelab-k3 s-ecr的用户名中)。通过我的搜索,我找不到如何设置AWS信用时,从ECR拉。下面是我的Jenkinfile和错误。有没有关于如何将AWS creds传递到kuberenetes代理配置的指导,以便当我尝试拉取它时可以进行身份验证?
pipeline {
agent {
kubernetes {
yaml """
apiVersion: v1
kind: Pod
metadata:
name: vapi
namespace: jenkins
spec:
containers:
- name: homelab
image: <id>.dkr.ecr.us-east-2.amazonaws.com/homelab:1.0.0
imagePullSecrets:
- name: homelab-k3s-ecr
"""
}
}
stages {
stage('Build') {
steps {
container('homelab') {
sh 'echo "Running build inside the ECR container"'
}
}
}
}
}
ERROR: Unable to pull Docker image "<id>.dkr.ecr.us-east-2.amazonaws.com/homelab:1.0.0". Check if image tag name is spelled correctly.
我已经尝试使用imagePullSecrets值,就像我在文档https://www.jenkins.io/doc/pipeline/steps/kubernetes/中发现的那样,但我无法让它工作
2条答案
按热度按时间fnatzsnv1#
可以使用环境变量
使用环境变量读取官方文档
7uhlpewt2#
主要问题是你不能使用raw
AWS Access Key
和Secret Access Key
从ECR中提取图像。您需要每隔12小时执行一次登录命令aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
,因为凭据仅在该时间段内有效。Here是一篇很好的文章,描述了如何创建解决方法并自动更新
ECR
凭据。