Access your EKS cluster via kubectl
in a Github Action. No fuss, no messing around with special
kubeconfigs, just ensure you have eks:ListCluster
and eks:DescribeCluster
rights on your
user.
See this great blog post for an overview if you're using a new IAM user.
You can supply your AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, the region your cluster is in, and the cluster name.
jobs:
jobName:
name: Update deploy
runs-on: ubuntu-latest
steps:
# --- #
- name: Build and push CONTAINER_NAME
uses: ianbelcher/eks-kubectl-action@master
with:
aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_REGION }}
cluster_name: ${{ secrets.CLUSTER_NAME }}
eks_role_arn: ${{ secrets.EKS_ROLE_ARN }}
kubernetes_version: v1.21.0
args: set image --record deployment/pod-name pod-name=${{ steps.build.outputs.IMAGE_URL }}
# --- #
If credentials are already present on the environment you don't need to supply them.
jobs:
jobName:
name: Update deploy
runs-on: ubuntu-latest
env:
aws_region: eu-central-1
steps:
- name: AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.MY_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.MY_AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.aws_region }}
# --- #
- name: Build and push CONTAINER_NAME
uses: ianbelcher/eks-kubectl-action@master
with:
cluster_name: ${{ secrets.CLUSTER_NAME }}
args: set image --record deployment/pod-name pod-name=${{ steps.build.outputs.IMAGE_URL }}
# --- #
The action exports the following outputs:
kubectl-out
: The output ofkubectl
.
jobs:
jobName:
name: Update deploy
runs-on: ubuntu-latest
steps:
# --- #
- name: Build and push CONTAINER_NAME
id: kubectl
uses: ianbelcher/eks-kubectl-action@master
with:
aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_REGION }}
cluster_name: ${{ secrets.CLUSTER_NAME }}
args: set image --record deployment/pod-name pod-name=${{ steps.build.outputs.IMAGE_URL }}
# --- #
- name: Use the output
run: echo "${{ steps.kubectl.outputs.kubectl-out }}"