图像拉回:回退拉图像"argoproj/argosay:v2"



我已经在AWS EKS上配置了Argo工作流。EKS托管在私有子网上,即无法访问internet。

  1. 我上传了工作流控制器映像,argo服务器映像和执行器映像到我的私人ECR
  2. 为了在EKS上安装Argo工作流,我修改了安装。//Workflow-controller

apiVersion: apps/v1
kind: Deployment
metadata:
name: workflow-controller
namespace: argo
spec:
selector:
matchLabels:
app: workflow-controller
template:
metadata:
labels:
app: workflow-controller
spec:
containers:
- args:
- --configmap
- workflow-controller-configmap
- --executor-image
- <aws_account_no>.dkr.ecr.eu-central-1.amazonaws.com/argoworkflow:argoexec-v3.4.4
command:
- workflow-controller
env:
- name: LEADER_ELECTION_IDENTITY
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
image: <aws_account_no>.dkr.ecr.eu-central-1.amazonaws.com/argoworkflow:workflow-controller-3.4.4
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 6060
initialDelaySeconds: 90
periodSeconds: 60
timeoutSeconds: 30
name: workflow-controller
ports:
- containerPort: 9090
name: metrics
- containerPort: 6060
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
nodeSelector:
kubernetes.io/os: linux
priorityClassName: workflow-controller
securityContext:
runAsNonRoot: true
serviceAccountName: argo

//Argo Server部署文件

apiVersion: apps/v1
kind: Deployment
metadata:
name: argo-server
namespace: argo
spec:
selector:
matchLabels:
app: argo-server
template:
metadata:
labels:
app: argo-server
spec:
containers:
- args:
- server
env: []
image: <aws_account_no>.dkr.ecr.eu-central-1.amazonaws.com/argoworkflow:argocli-v3.4.4
name: argo-server
ports:
- containerPort: 2746
name: web
readinessProbe:
httpGet:
path: /
port: 2746
scheme: HTTPS
initialDelaySeconds: 10
periodSeconds: 20
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
volumeMounts:
- mountPath: /tmp
name: tmp
nodeSelector:
kubernetes.io/os: linux
securityContext:
runAsNonRoot: true
serviceAccountName: argo-server
volumes:
- emptyDir: {}
name: tmp

其他无变化

  1. kubectl apply -f install.yaml

我能够使用我的ECR映像运行工作流,但是当我运行步骤/DAG时,它会给出错误消息。因为在后台它是搜索argoproj/argosay:v2图像在互联网上,即docker。但是由于它是在私有子网中托管的,因此无法找到映像。

是否有办法将此映像上传到aws ECR(私有存储库)并在安装期间引用映像(install.yaml)?

拉图像,标记它,将它推送到您的私人注册表。但是,从某个地方您需要访问您的私有注册表。

docker pull imagename
docker tag imagename registryUrl/imagename
docker push registry/imagename

在您的部署中使用:

image: registryUrl:imageName

现在您的部署将尝试访问注册表,该注册表应该是密码保护的。

使用用户名和密码在运行部署的命名空间中创建一个secret。

然后使用secret:

containers:
- name: my-container
image: registryUrl/myimage
imagePullSecrets:
- name: regcred # name of the secret you created

整个过程在这里描述

如果你绝对不能访问互联网来拉/推送图像,还有另一种可能性。

docker image save myimage -o filename

这将创建一个带有图像的文件,您可以传输该文件,并从该文件重新创建图像:

docker image import file

如果你可以在这里选择docker文档的链接。

图片保存

图像导入

最新更新