Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

when using the emissary executor you must either explicitly specify the command, #1

Open
nishit93-hub opened this issue Dec 27, 2021 · 9 comments

Comments

@nishit93-hub
Copy link

Hi,
I am getting the below error after submitting the build-container-image.yaml workflow.

task 'toolkit-f84wm.build-container-image' errored: when using the emissary executor you must either explicitly specify the command, or list the image's command in the index: https://argoproj.github.io/argo-workflows/workflow-executors/#emissary-emissary

@vfarcic
Copy link
Owner

vfarcic commented Dec 27, 2021

I haven't been using the emissary executor (just yet) and, unfortunately, I do not have access to my work computer (on mini hollidays...).

From what I saw, the solution is to add command: [/kaniko/executor] to the template. Can you do me a favor and try it out?

@nishit93-hub
Copy link
Author

nishit93-hub commented Dec 27, 2021

Hi, I tried the command you mentioned above.

This is my workflow.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: build-container-image-
  labels:
    workflows.argoproj.io/archive-strategy: "false"
spec:
  entrypoint: build
#  serviceAccountName: workflow
  volumes:
  - name: kaniko-secret
    secret:
      secretName: regcred
      items:
        - key: .dockerconfigjson
          path: config.json
  templates:
    - name: build
      metadata:
#      inputs:
#      parameters:
#      - name: app_repo
#      - name: container_image
#      - name: container_tag      
        artifacts:
          - name: source
            path: .
            git:
              repo: https://xxxxxxxxxxxxxxxxxxxxxx/xxx.git          
      container:
        image: gcr.io/kaniko-project/executor:latest
        command: [/kaniko/executor]
        args: ["--context= https://xxxxxxxxxxxxxxxxxxxxxx/xxx.git","--destination=moustakis/kaniko-build-demo:1.0.0"]
        volumeMounts:
          - name: kaniko-secret
            mountPath: /kaniko/.docker/ 

Now, this is what is said.

INFO[0000] Retrieving https tar file
INFO[0001] Retrieved https tar file
Error: error resolving source context: gzip: invalid header
Usage:
  executor [flags]
  executor [command]

Available Commands:
  help        Help about any command
  version     Print the version number of kaniko

I even used that command in your ClusterWorkflowTemplate (container-image.yaml) file. However still showing emissary executor error.

@vfarcic
Copy link
Owner

vfarcic commented Dec 28, 2021

I'll. be back right after New Year's eve and will go through it. I hope that's not too late for you.

@nishit93-hub
Copy link
Author

Ok, No problem. However, the issue has been resolved by using command: [/kaniko/executor].

One thing I want to ask, how can I automatically assign docker-image tags. Below is my code.

   container:
      image: gcr.io/kaniko-project/executor:latest
      command: [/kaniko/executor]
      args:
        - "--context=dir:///workspace"
        - "--destination=nishit2408/argo-imageupdater:4.0"

I want Argo workflow should assign new tag names automatically every time I re-submit the workflow.

@vfarcic
Copy link
Owner

vfarcic commented Dec 29, 2021

Normally, you would calculate the new tag, put it in an environment variable, and use it when constructing the arguments. The calculation itself can be random, or Git commit hash, or the Git tag (if you're creating tags), or semantic versioning (my favorite), or any other logic. I prefer semantic versioning and, in those cases, you would either extract it from the commit messages (if you do add the desired tag there) or generate it using one of many binaries that do that. Unfortunately, I'm not in front of a working computer to check out what I'm using to generate semantic versions (it's one of those things that you do once or twice and forget about it). If you Google something like "semantic version generator" you should be able to find it quickly.

@nishit93-hub
Copy link
Author

@vfarcic Hi, I am using {{workflow. name}} as a workflow variable, which is assing a new docker image tag. However, Argo image updater couldn't update this tag.

Using the below annotation.

  annotations:
    argocd-image-updater.argoproj.io/image-list: nishit2408/argo-imageupdater:*

@vfarcic
Copy link
Owner

vfarcic commented Jan 24, 2022

It's hard to say what's wrong based only on that info.

Can you post the whole manifest, especially the rest of the annotations? Also, please post the logs from the image updater.

@nishit93-hub
Copy link
Author

@vfarcic Here is the manifest

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: gitops-image-updater
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io
  annotations:
    argocd-image-updater.argoproj.io/image-list: nishit2408/argo-imageupdater:*
    argocd-image-updater.argoproj.io/write-back-method: git:secret:argocd/repo-322047772
    argocd-image-updater.argoproj.io/git-branch: master
spec:
  project: default
  source:
    repoURL: ssh://[email protected]:/home/git/repos/wordpress-manifest
    targetRevision: master
    path: kustomization/development
  destination:
    server: https://kubernetes.default.svc
    namespace: imageupdate-dev
  syncPolicy:
    syncOptions:
      - CreateNamespace=true
    automated:
      selfHeal: true
      prune: true
      allowEmpty: true

And here are the logs

time="2022-01-23T18:50:52Z" level=info msg="Successfully updated the live application spec" application=gitops-image-updater
time="2022-01-23T18:50:52Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=1 errors=0"
time="2022-01-23T18:52:52Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-01-23T18:52:53Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=0"
time="2022-01-23T18:54:53Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-01-23T18:54:54Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=0"
time="2022-01-23T18:56:54Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-01-23T18:56:55Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=0"
time="2022-01-23T18:58:55Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-01-23T18:58:56Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=0"
time="2022-01-23T19:00:56Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-01-23T19:00:57Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=0"
time="2022-01-23T19:02:57Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-01-23T19:02:58Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=0"
time="2022-01-23T19:04:58Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-01-23T19:04:59Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=0"
time="2022-01-23T19:06:59Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-01-23T19:07:00Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=0"
time="2022-01-23T19:09:00Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"

However, if update the docker image tag manually i.e. 1.0 range then the Argo image updater is able to update that tag.

@vfarcic
Copy link
Owner

vfarcic commented Jan 24, 2022

Assuming that Workflows did push your images to the registry, the issue is unrelated to it. Image Updater does not care how are images pushed to the registry.

You are probably missing update-strategy label. By default, Image Updater assumes that you're using semver. If that's not the case, you need to change the update strategy. You can find more info at https://argocd-image-updater.readthedocs.io/en/stable/install/strategies/.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants