kubectl-action
kubectl-action copied to clipboard
GitHub Action to manage a K8s cluster using kubectl
kubectl-action
GitHub Action to manage a K8s (Kubernetes) cluster using kubectl.
Usage
To use this action, add the following step to your GitHub Action workflow:
- uses: tale/kubectl-action@v1
with:
base64-kube-config: ${{ secrets.KUBE_CONFIG }}
Keep in mind that the action expects a base64 encoded string of your Kubernetes configuration. The simplest way to do that is to run cat $HOME/.kube/config | base64 and save that output as an action secret. It's additionally possible to generate a config file using the aws CLI for EKS or any other tools with other cloud providers.
It's also possible to specify the version of the kubectl CLI to use. The current default release used by this action is the latest version.
- uses: tale/kubectl-action@v1
with:
base64-kube-config: ${{ secrets.KUBE_CONFIG }}
kubectl-version: v1.22.0
Once you've completed this setup, you have direct access to the kubectl binary and command in the rest of your actions. Here's a full example to give you some inspiration:
name: Kubectl Action
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: tale/kubectl-action@v1
with:
base64-kube-config: ${{ secrets.KUBE_CONFIG }}
- run: kubectl get pods
Here's an example using AWS EKS:
name: Kubectl Action
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789100:role/my-github-actions-role
aws-region: us-east-2
- name: Generate kubeconfig
run: |
{
echo 'EKS_CREDS<<EOF'
aws eks update-kubeconfig --region us-east-2 --name my-cluster --dry-run | base64
echo EOF
} >> $GITHUB_ENV
- uses: tale/kubectl-action@v1
with:
base64-kube-config: ${{ env.EKS_CREDS }}
- run: kubectl get pods