Skip to content

Navigation Menu

Sign in
Sign up
Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Latest commit

History

104 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

kubectl

Preview

GitHub Action for interacting with kubectl (k8s)

Usage

To use kubectl put this step into your workflow:

Authorization with config file

- uses: actions-hub/kubectl@master
 env:
 KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
 with:
 args: get pods

Authorization with credentials

- uses: actions-hub/kubectl@master
 env:
 KUBE_HOST: ${{ secrets.KUBE_HOST }}
 KUBE_CERTIFICATE: ${{ secrets.KUBE_CERTIFICATE }}
 KUBE_USERNAME: ${{ secrets.KUBE_USERNAME }}
 KUBE_PASSWORD: ${{ secrets.KUBE_PASSWORD }}
 with:
 args: get pods

Authorization with a bearer token

- uses: actions-hub/kubectl@master
 env:
 KUBE_HOST: ${{ secrets.KUBE_HOST }}
 KUBE_CERTIFICATE: ${{ secrets.KUBE_CERTIFICATE }}
 KUBE_TOKEN: ${{ secrets.KUBE_TOKEN }}
 with:
 args: get pods

Using kubectl ouput

 - run: echo "EXPECTED_NAMESPACE=namespace/$NAMESPACE" >> $GITHUB_ENV
 - name: πŸ›‚ Check namespace exists
 uses: actions-hub/kubectl@master
 with:
 redirect-to: NAMESPACE_EXIST
 args: get namespace ${{ env.NAMESPACE }} -o name --ignore-not-found
 - name: πŸ›‘οΈ Preserve secret WEBAPP_TLS
 if: env.NAMESPACE_EXIST == env.EXPECTED_NAMESPACE
 uses: actions-hub/kubectl@master
 with:
 redirect-to: WEBAPP_TLS
 args: get secret webapp-tls -n ${{ env.NAMESPACE }} -o yaml

Environment variables

All these variables need to authorize to kubernetes cluster.
I recommend using secrets for this.

KUBECONFIG file

First options its to use kubeconfig file.

For this method KUBE_CONFIG required.
You can find it: cat $HOME/.kube/config | base64 .

Optionally you can switch the context (the cluster) if you have few in kubeconfig file. Passing specific context to KUBE_CONTEXT. To see the list of available contexts do: kubectl config get-contexts.

Variable Type
KUBE_CONFIG string (base64)
KUBE_CONTEXT string

KUBECONFIG file

Another way to authenticate in the cluster is HTTP basic auth.

For this you need to pass:

  • host (IP only, without protocol)
  • username
  • password
  • cluster CA certificate
Variable Type
KUBE_HOST string
KUBE_USERNAME string
KUBE_PASSWORD string
KUBE_CERTIFICATE string

Example

name: Get pods
on: [push]
jobs:
 deploy:
 name: Deploy
 runs-on: ubuntu-latest
 steps:
 - uses: actions/checkout@v4
 - uses: actions-hub/kubectl@master
 env:
 KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
 with:
 args: get pods
name: Get pods
on: [push]
jobs:
 deploy:
 name: Deploy
 runs-on: ubuntu-latest
 steps:
 - uses: actions/checkout@v4
 - uses: actions-hub/kubectl@master
 env:
 KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
 - uses: actions-hub/kubectl@master
 with:
 args: get pods

Versions

If you need a specific version of kubectl, make a PR with a specific version number. After accepting PR the new release will be created.
To use a specific version of kubectl use:

- uses: actions-hub/kubectl@1.14.3
 env:
 KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
 with:
 args: get pods

Licence

MIT License

About

GitHub Action for interacting with kubectl (k8s)

Topics

Resources

Stars

156 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /