Home > Software engineering >  error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" CircleCI
error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" CircleCI

Time:05-10

I am facing error while deploying deployment in circleci

please find below config file

''' version: 2.1 orbs: aws-ecr: circleci/[email protected] docker: circleci/[email protected] rollbar: rollbar/[email protected] kubernetes: circleci/[email protected] deploy: version: 2.1 orbs: aws-eks: circleci/[email protected] kubernetes: circleci/[email protected] executors: default: description: | The version of the circleci/buildpack-deps Docker container to use when running commands. parameters: buildpack-tag: type: string default: buster docker: - image: circleci/buildpack-deps:<<parameters.buildpack-tag>> description: | A collection of tools to deploy changes to AWS EKS in a declarative manner where all changes to templates are checked into version control before applying them to an EKS cluster. commands: setup: description: | Install the gettext-base package into the executor to be able to run envsubst for replacing values in template files. This command is a prerequisite for all other commands and should not have to be run manually. parameters: cluster-name: default: '' description: Name of the EKS Cluster. type: string aws-region: default: 'eu-central-1' description: Region where the EKS Cluster is located. type: string git-user-email: default: "[email protected]" description: Email of the git user to use for making commits type: string git-user-name: default: "CircleCI Deploy Orb" description: Name of the git user to use for making commits type: string steps: - run: name: install gettext-base command: | if which envsubst > /dev/null; then echo "envsubst is already installed" exit 0 fi sudo apt-get update sudo apt-get install -y gettext-base - run: name: Setup GitHub access command: | mkdir -p ~/.ssh echo 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB weqqUUmpaaasXVal72J UX2B 2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7 wC604ydGXA8VJiS5ap43JXiUFFAaQ==' >> ~/.ssh/known_hosts git config --global user.email "<< parameters.git-user-email >>" git config --global user.name "<< parameters.git-user-name >>" - aws-eks/update-kubeconfig-with-authenticator: aws-region: << parameters.aws-region >> cluster-name: << parameters.cluster-name >> install-kubectl: true authenticator-release-tag: v0.5.1 update-image: description: | Generates template files with the specified version tag for the image to be updated and subsequently applies that template after checking it back into version control. parameters: cluster-name: default: '' description: Name of the EKS Cluster. type: string aws-region: default: 'eu-central-1' description: Region where the EKS Cluster is located. type: string image-tag: default: '' description: | The tag of the image, defaults to the value of CIRCLE_SHA1 if not provided. type: string replicas: default: 3 description: | The replica count for the deployment. type: integer environment: default: 'production' description: | The environment/stage where the template will be applied. Defaults to production. type: string template-file-path: default: '' description: | The path to the source template which contains the placeholders for the image-tag. type: string resource-name: default: '' description: | Resource name in the format TYPE/NAME e.g. deployment/nginx. type: string template-repository: default: '' description: | The fullpath to the repository where templates reside. Write access is required to commit generated templates. type: string template-folder: default: 'templates' description: | The name of the folder where the template-repository is cloned to. type: string placeholder-name: default: IMAGE_TAG description: | The name of the placeholder environment variable that is to be substituted with the image-tag parameter. type: string cluster-namespace: default: sayway description: | Namespace within the EKS Cluster. type: string steps: - setup: aws-region: << parameters.aws-region >> cluster-name: << parameters.cluster-name >> git-user-email: [email protected] git-user-name: deploy - run: name: pull template repository command: | [ "$(ls -A << parameters.template-folder >>)" ] &&
cd << parameters.template-folder >> && git pull --force && cd .. [ "$(ls -A << parameters.template-folder >>)" ] ||
git clone << parameters.template-repository >> << parameters.template-folder >> - run: name: generate and commit template files command: | cd << parameters.template-folder >> IMAGE_TAG="<< parameters.image-tag >>" ./bin/generate.sh --file << parameters.template-file-path >>
--stage << parameters.environment >>
--commit-message "Update << parameters.template-file-path >> for << parameters.environment >> with tag ${IMAGE_TAG:-$CIRCLE_SHA1}"
<< parameters.placeholder-name >>="${IMAGE_TAG:-$CIRCLE_SHA1}"
REPLICAS=<< parameters.replicas >> - kubernetes/create-or-update-resource: get-rollout-status: true namespace: << parameters.cluster-namespace >> resource-file-path: << parameters.template-folder >>/<< parameters.environment >>/<< parameters.template-file-path >> resource-name: << parameters.resource-name >> jobs: test: working_directory: ~/say-way/core parallelism: 1 shell: /bin/bash --login environment: CIRCLE_ARTIFACTS: /tmp/circleci-artifacts CIRCLE_TEST_REPORTS: /tmp/circleci-test-results KONFIG_CITUS__HOST: localhost KONFIG_CITUS__USER: postgres KONFIG_CITUS__DATABASE: sayway_test KONFIG_CITUS__PASSWORD: "" KONFIG_SPEC_REPORTER: true docker: - image: 567567013174.dkr.ecr.eu-central-1.amazonaws.com/core-ci:test-latest aws_auth: aws_access_key_id: $AWS_ACCESS_KEY_ID_STAGING aws_secret_access_key: $AWS_SECRET_ACCESS_KEY_STAGING - image: circleci/redis - image: rabbitmq:3.7.7 - image: circleci/mongo:4.2 - image: circleci/postgres:10.5-alpine steps: - checkout - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS # This is based on your 1.0 configuration file or project settings - restore_cache: keys: - v1-dep-{{ checksum "Gemfile.lock" }}- # any recent Gemfile.lock - v1-dep- - run: name: install correct bundler version command: | export BUNDLER_VERSION="$(grep -A1 'BUNDLED WITH' Gemfile.lock | tail -n1 | tr -d ' ')" echo "export BUNDLER_VERSION=$BUNDLER_VERSION" >> $BASH_ENV gem install bundler --version $BUNDLER_VERSION - run: 'bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3' - run: name: copy test.yml.sample to test.yml command: cp config/test.yml.sample config/test.yml - run: name: Precompile and clean assets command: bundle exec rake assets:precompile assets:clean # Save dependency cache - save_cache: key: v1-dep-{{ checksum "Gemfile.lock" }}-{{ epoch }} paths: - vendor/bundle - public/assets - run: name: Audit bundle for known security vulnerabilities command: bundle exec bundle-audit check --update - run: name: Setup Database command: bundle exec ruby ~/sayway/setup_test_db.rb - run: name: Migrate Database command: bundle exec rake db:citus:migrate - run: name: Run tests command: bundle exec rails test -f # By default, running "rails test" won't run system tests. - run: name: Run system tests command: bundle exec rails test:system # Save test results - store_test_results: path: /tmp/circleci-test-results # Save artifacts - store_artifacts: path: /tmp/circleci-artifacts - store_artifacts: path: /tmp/circleci-test-results build-and-push-image: working_directory: ~/say-way/ parallelism: 1 shell: /bin/bash --login executor: aws-ecr/default steps: - checkout - run: name: Pull latest core images for cache command: | $(aws ecr get-login --no-include-email --region $AWS_REGION) docker pull "${AWS_ECR_ACCOUNT_URL}/core:latest" - docker/build: image: core registry: "${AWS_ECR_ACCOUNT_URL}" tag: "latest,${CIRCLE_SHA1}" cache_from: "${AWS_ECR_ACCOUNT_URL}/core:latest" - aws-ecr/push-image: repo: core tag: "latest,${CIRCLE_SHA1}" deploy-production: working_directory: ~/say-way/ parallelism: 1 shell: /bin/bash --login executor: deploy/default steps: - kubernetes/install-kubectl: kubectl-version: v1.22.0 - rollbar/notify_deploy_started: environment: report - deploy/update-image: resource-name: deployment/core-web template-file-path: core-web-pod.yml cluster-name: report environment: report template-repository: [email protected]:say-way/sw-k8s.git replicas: 3 - deploy/update-image: resource-name: deployment/core-worker template-file-path: core-worker-pod.yml cluster-name: report environment: report template-repository: [email protected]:say-way/sw-k8s.git replicas: 4 - deploy/update-image: resource-name: deployment/core-worker-batch template-file-path: core-worker-batch-pod.yml cluster-name: report environment: report template-repository: [email protected]:say-way/sw-k8s.git replicas: 1 - rollbar/notify_deploy_finished: deploy_id: "${ROLLBAR_DEPLOY_ID}" status: succeeded deploy-demo: working_directory: ~/say-way/ parallelism: 1 shell: /bin/bash --login executor: deploy/default steps: - kubernetes/install-kubectl: kubectl-version: v1.22.0 - rollbar/notify_deploy_started: environment: demo - deploy/update-image: resource-name: deployment/core-web template-file-path: core-web-pod.yml cluster-name: demo environment: demo template-repository: [email protected]:say-way/sw-k8s.git replicas: 2 - deploy/update-image: resource-name: deployment/core-worker template-file-path: core-worker-pod.yml cluster-name: demo environment: demo template-repository: [email protected]:say-way/sw-k8s.git replicas: 1 - deploy/update-image: resource-name: deployment/core-worker-batch template-file-path: core-worker-batch-pod.yml cluster-name: demo environment: demo template-repository: [email protected]:say-way/sw-k8s.git replicas: 1 - rollbar/notify_deploy_finished: deploy_id: "${ROLLBAR_DEPLOY_ID}" status: succeeded workflows: version: 2.1 build-n-test: jobs: - test: filters: branches: ignore: master build-approve-deploy: jobs: - build-and-push-image: context: Core filters: branches: only: master - approve-report-deploy: type: approval requires: - build-and-push-image - approve-demo-deploy: type: approval requires: - build-and-push-image - deploy-production: context: Core requires: - approve-report-deploy - deploy-demo: context: Core requires: - approve-demo-deploy '''

CodePudding user response:

There is a problem with the latest kubectl and the aws-cli: https://github.com/aws/aws-cli/issues/6920

CodePudding user response:

We HAVE a fix here: https://github.com/aws/aws-cli/issues/6920#issuecomment-1119926885

Update the aws-cli to the version with the fix:

pip3 install awscli --upgrade --user

After that, don't forget to rewrite the kube-config with:

aws eks update-kubeconfig --name ${EKS_CLUSTER_NAME} --region ${REGION}

This command should update the kube apiVersion to v1beta1

  • Related