Skip to content

Commit

Permalink
Merge pull request 'Retry feature | Disaster Recovery (setup only) | …
Browse files Browse the repository at this point in the history
…Hetzner support' (#19) from feat/retry into main

Reviewed-on: https://gitea.obmondo.com/EnableIT/kubeaid-bootstrap-script/pulls/19
  • Loading branch information
Archisman Mridha committed Dec 17, 2024
2 parents 310c4ca + ce19d9f commit 603c858
Show file tree
Hide file tree
Showing 97 changed files with 4,455 additions and 1,149 deletions.
1 change: 0 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,3 @@ jobs:
# builds.
cache-from: type=gha
cache-to: type=gha,mode=max

6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
kubeaid-bootstrap-script.config.yaml
*.test.config.yaml
scripts/export-aws-credentials.sh
scripts/export-hetzner-credentials.sh

outputs/

*.swp
68 changes: 51 additions & 17 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,31 +1,65 @@
# Needed for shell expansion
SHELL = /bin/bash
CURRENT_DIR := $(CURDIR)
CONTAINER_NAME=kubeaid-bootstrap-script-dev
NETWORK_NAME=k3d-management-cluster
IMAGE_NAME=kubeaid-bootstrap-script-dev:latest

.PHONY: build-image-dev
build-image-dev:
@docker build -f ./build/Dockerfile.dev --build-arg CPU_ARCHITECTURE=arm64 -t kubeaid-bootstrap-script-dev .
@docker build -f ./build/Dockerfile.dev --build-arg CPU_ARCHITECTURE=arm64 -t $(IMAGE_NAME) .

.PHONY: remove-image-dev
remove-image-dev:
@docker rmi $(IMAGE_NAME)

.PHONY: run-container-dev
run-container-dev:
@docker run --name kubeaid-bootstrap-script-dev \
-v /var/run/docker.sock:/var/run/docker.sock \
-v .:/app \
kubeaid-bootstrap-script-dev
run-container-dev: build-image-dev
@if ! docker network ls | grep -q $(NETWORK_NAME); then \
docker network create $(NETWORK_NAME); \
fi
@docker run --name $(CONTAINER_NAME) \
--network $(NETWORK_NAME) \
--detach \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(CURRENT_DIR):/app \
$(IMAGE_NAME)

# -e SSH_AUTH_SOCK=/ssh-agent \
# -v /dev/bus/usb:/dev/bus/usb \
# -v $(SSH_AUTH_SOCK):/ssh-agent \
.PHONY: exec-container-dev
exec-container-dev:
@docker exec -it kubeaid-bootstrap-script-dev /bin/sh
@docker exec -it $(CONTAINER_NAME) /bin/sh

.PHONY: stop-container-dev
stop-container-dev:
@docker stop $(CONTAINER_NAME)

.PHONY: remove-container-dev
remove-container-dev: stop-container-dev
@docker rm $(CONTAINER_NAME)

.PHONY: generate-sample-config-aws-dev
generate-sample-config-aws-dev:
@go run ./cmd generate-sample-config \
--cloud aws \
--k8s-version v1.31.0
@go run ./cmd config generate aws

.PHONY: bootstrap-cluster-dev-aws
bootstrap-cluster-dev-aws:
@go run ./cmd cluster bootstrap aws \
--debug \
--config /app/outputs/kubeaid-bootstrap-script.config.yaml \
--skip-clusterctl-move
# --skip-kubeaid-config-setup

.PHONY: bootstrap-cluster-dev
bootstrap-cluster-dev:
@go run ./cmd bootstrap-cluster \
--config-file /app/outputs/kubeaid-bootstrap-script.config.yaml
.PHONY: bootstrap-cluster-dev-hetzner
bootstrap-cluster-dev-hetzner:
@go run ./cmd cluster bootstrap hetzner \
--debug \
--config /app/outputs/kubeaid-bootstrap-script.config.yaml \
--skip-clusterctl-move
# --skip-kubeaid-config-setup

.PHONY: use-management-cluster
use-management-cluster:
Expand All @@ -36,9 +70,9 @@ use-provisioned-cluster:
export KUBECONFIG=./outputs/provisioned-cluster.kubeconfig.yaml

.PHONY: delete-provisioned-cluster
delete-provisioned-cluster:
KUBECONFIG=./outputs/management-cluster.kubeconfig.yaml \
kubectl delete clusters/kubeaid-demo -n capi-cluster
delete-provisioned-cluster-dev:
@go run ./cmd cluster delete \
--config /app/outputs/kubeaid-bootstrap-script.config.yaml

.PHONY: delete-management-cluster
delete-management-cluster:
Expand Down
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,27 @@ Once you're inside the container, use `make generate-sample-config-aws-dev` to g

Then run `make bootstrap-cluster-dev` to bootstrap the cluster!

## TODOs

- [ ] Check Git URL if SSH agent is used.
- [ ] Validation for sshagentauth (should not accept https url).
- [x] `--debug` flag to print command execution outputs.
- [ ] Support adding admin SSH keys via config file.
- [ ] Support using HTTPS for ArgoCD apps.
- [ ] Use ArgoCD sync waves so that we don't need to explicitly sync the Infrastructure Provider component first.

## REFERENCES

- [Server-Side Apply](https://kubernetes.io/docs/reference/using-api/server-side-apply/#comparison-with-client-side-apply)

- [The definitive guide to building Golang based CLI](https://www.youtube.com/watch?v=SSRIn5DAmyw)

- [AWS S3 Sync Command – Guide with Examples](https://spacelift.io/blog/aws-s3-sync)

- How KubeAid backs up Sealed Secrets using a CRONJob : https://github.com/Obmondo/kubeaid/blob/master/argocd-helm-charts/sealed-secrets/templates/configmap.yaml

- [Key Management](https://playbook.stakater.com/content/workshop/sealed-secrets/management.html)

- [Secret Rotation](https://github.com/bitnami-labs/sealed-secrets?tab=readme-ov-file#secret-rotation)

- [Kubernetes Backups, Upgrades, Migrations - with Velero](https://youtu.be/zybLTQER0yY?si=qOZcizBqPOeouJ7y)
2 changes: 1 addition & 1 deletion build/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ RUN CPU_ARCHITECTURE=$([ "$(uname -m)" = "x86_64" ] && echo "amd64" || echo "arm

COPY --from=builder /app/kubeaid-bootstrap-script /usr/local/bin/kubeaid-bootstrap-script

CMD sleep infinity
CMD ["sleep", "infinity"]
2 changes: 1 addition & 1 deletion build/Dockerfile.dev
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ RUN CPU_ARCHITECTURE=$([ "$(uname -m)" = "x86_64" ] && echo "amd64" || echo "arm

WORKDIR /app

CMD sleep infinity
CMD ["sleep", "infinity"]
Loading

0 comments on commit 603c858

Please sign in to comment.