Manually deploy hono api to hono-api-prod env/namespace on microk8s #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Manually deploy hono api to hono-api-prod env/namespace on microk8s | |
on: workflow_dispatch # run manually | |
jobs: | |
deploy-prod: | |
name: Deploy to hono api prod | |
environment: | |
name: hono-api-prod | |
runs-on: ubuntu-latest | |
steps: | |
- name: Kubectl tool installer | |
uses: Azure/setup-kubectl@v3 | |
- name: Setup kubectl | |
env: | |
MICROK8S_CONFIG: ${{ secrets.MICROK8S_CONFIG }} | |
run: | | |
mkdir -p $HOME/.kube | |
echo "${MICROK8S_CONFIG}" | base64 --decode > $HOME/.kube/config | |
- name: Check kubectl get node | |
run: kubectl get nodes -o wide | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: deploy apply pods to hono-api-prod env | |
run: | | |
# create namespace hono-api-prod | |
kubectl apply -f microk8s-hono-api/prod/namespace.yaml | |
# create secret regcred for kubernetes to pull image from private registry on Github | |
if ! kubectl -n hono-api-prod get secret regcred; then | |
kubectl -n hono-api-prod create secret docker-registry regcred --docker-username=${{ github.actor }} --docker-password=${{ secrets.GHCR_PAT }} --docker-server=ghcr.io | |
else | |
echo "Secret regcred already exists, skipping creation." | |
fi | |
# create secrets for hono api to use as environment variables defined in deployment.yaml in base directory | |
if ! kubectl -n hono-api-prod get secret esapikeycred; then | |
kubectl -n hono-api-prod create secret generic esapikeycred --from-literal=esApiKey=${{ secrets.ES_APIKEY }} | |
else | |
echo "Secret esapikeycred already exists, skipping creation." | |
fi | |
# apply all resources in overlays based on namespace | |
kubectl apply -k microk8s-hono-api/prod -n hono-api-prod | |
- name: Wait For Deployment To Start | |
run: sleep 10s | |
- name: Wait For Pods To Start | |
run: kubectl wait --for=condition=ready pod -l app=hono-api -n hono-api-prod --timeout=10m |