Helm together with other manifest types doesn't work in Argo's source… #36
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: provision-aws | |
on: [push] | |
env: | |
KIND_NODE_VERSION: v1.29.0 | |
# AWS | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: 'eu-central-1' | |
jobs: | |
crossplane-provision-aws: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@master | |
- name: Spin up kind via brew | |
run: | | |
echo "--- Create kind cluster" | |
kind create cluster --image "kindest/node:$KIND_NODE_VERSION" --wait 5m | |
echo "--- Let's try to access our kind cluster via kubectl" | |
kubectl get nodes | |
- name: Install ArgoCD into kind & ArgoCD CLI in the shell | |
run: | | |
echo "--- Create argo namespace and install it" | |
kubectl create namespace argocd | |
echo " Install & configure ArgoCD via Kustomize - see https://stackoverflow.com/a/71692892/4964553" | |
kubectl apply -k argocd/install | |
echo "--- Wait for Argo to become ready" | |
kubectl wait --for=condition=ready pod -l app.kubernetes.io/name=argocd-server --namespace argocd --timeout=300s | |
echo "--- Since there's no brew ready to use anymore (https://github.com/actions/runner-images/issues/6283), we use the curl installation method here (see https://argo-cd.readthedocs.io/en/stable/cli_installation/#download-with-curl)" | |
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 | |
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd | |
rm argocd-linux-amd64 | |
- name: Prepare crossplane AWS Secret | |
run: | | |
echo "--- Create aws-creds.conf file" | |
echo "[default] | |
aws_access_key_id = $AWS_ACCESS_KEY_ID | |
aws_secret_access_key = $AWS_SECRET_ACCESS_KEY | |
" > aws-creds.conf | |
echo "--- Create a namespace for crossplane" | |
kubectl create namespace crossplane-system | |
echo "--- Create AWS Provider secret" | |
kubectl create secret generic aws-creds -n crossplane-system --from-file=creds=./aws-creds.conf | |
- name: Use ArgoCD's AppOfApps pattern to deploy all Crossplane components | |
run: | | |
echo "--- Let Argo do it's magic installing all Crossplane components" | |
kubectl apply -n argocd -f argocd/crossplane-app-of-apps.yaml | |
- name: Check crossplane status | |
run: | | |
echo "--- Wait for crossplane to become ready (now prefaced with until as described in https://stackoverflow.com/questions/68226288/kubectl-wait-not-working-for-creation-of-resources)" | |
until kubectl wait --for=condition=PodScheduled pod -l app=crossplane --namespace crossplane-system --timeout=120s > /dev/null 2>&1; do : ; done | |
kubectl wait --for=condition=ready pod -l app=crossplane --namespace crossplane-system --timeout=120s | |
echo "--- Wait until AWS Provider is up and running (now prefaced with until to prevent Error from server (NotFound): providers.pkg.crossplane.io 'provider-aws-s3' not found)" | |
until kubectl get provider/provider-aws-s3 > /dev/null 2>&1; do : ; done | |
kubectl wait --for=condition=healthy --timeout=180s provider/provider-aws-s3 | |
kubectl get all -n crossplane-system |