9d44127245
This commit adds support to discover garage instances running in kubernetes. Once enabled by setting `kubernetes_namespace` and `kubernetes_service_name` garage will create a Custom Resources `garagenodes.deuxfleurs.fr` with nodes public key as the resource name. and IP and Port information as spec in the namespace configured by `kubernetes_namespace`. For discovering nodes the resources are filtered with the optionally set `kubernetes_service_name` which sets a label `garage.deuxfleurs.fr/service` on the resources. This allows to separate multiple garage deployments in a single namespace. the `kubernetes_skip_crd` variable allows to disable the creation of the CRD by garage itself. The user must deploy this manually.
104 lines
2.1 KiB
Nix
104 lines
2.1 KiB
Nix
{
|
|
system ? builtins.currentSystem,
|
|
rust ? true,
|
|
integration ? true,
|
|
release ? true,
|
|
}:
|
|
|
|
with import ./nix/common.nix;
|
|
|
|
let
|
|
pkgs = import pkgsSrc {
|
|
inherit system;
|
|
overlays = [ cargo2nixOverlay ];
|
|
};
|
|
kaniko = (import ./nix/kaniko.nix) pkgs;
|
|
winscp = (import ./nix/winscp.nix) pkgs;
|
|
|
|
in
|
|
|
|
pkgs.mkShell {
|
|
shellHook = ''
|
|
function to_s3 {
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
./result/bin/garage \
|
|
s3://garagehq.deuxfleurs.fr/_releases/''${DRONE_TAG:-$DRONE_COMMIT}/''${TARGET}/garage
|
|
}
|
|
|
|
function to_docker {
|
|
executor \
|
|
--force \
|
|
--customPlatform="''${DOCKER_PLATFORM}" \
|
|
--destination "''${CONTAINER_NAME}:''${CONTAINER_TAG}" \
|
|
--context dir://`pwd` \
|
|
--verbosity=debug
|
|
}
|
|
|
|
function refresh_index {
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 ls \
|
|
--recursive \
|
|
s3://garagehq.deuxfleurs.fr/_releases/ \
|
|
> aws-list.txt
|
|
|
|
nix-build nix/build_index.nix
|
|
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
result/share/_releases.json \
|
|
s3://garagehq.deuxfleurs.fr/
|
|
|
|
aws \
|
|
--endpoint-url https://garage.deuxfleurs.fr \
|
|
--region garage \
|
|
s3 cp \
|
|
result/share/_releases.html \
|
|
s3://garagehq.deuxfleurs.fr/
|
|
}
|
|
|
|
function refresh_toolchain {
|
|
nix copy \
|
|
--to 's3://nix?endpoint=garage.deuxfleurs.fr®ion=garage&secret-key=/etc/nix/signing-key.sec' \
|
|
$(nix-store -qR \
|
|
$(nix-build --quiet --no-build-output --no-out-link nix/toolchain.nix))
|
|
}
|
|
'';
|
|
|
|
nativeBuildInputs =
|
|
(if rust then [
|
|
pkgs.rustPlatform.rust.rustc
|
|
pkgs.rustPlatform.rust.cargo
|
|
pkgs.clippy
|
|
pkgs.rustfmt
|
|
pkgs.perl
|
|
cargo2nix.packages.x86_64-linux.cargo2nix
|
|
] else [])
|
|
++
|
|
(if integration then [
|
|
winscp
|
|
pkgs.s3cmd
|
|
pkgs.awscli2
|
|
pkgs.minio-client
|
|
pkgs.rclone
|
|
pkgs.socat
|
|
pkgs.psmisc
|
|
pkgs.which
|
|
pkgs.openssl
|
|
pkgs.curl
|
|
pkgs.jq
|
|
] else [])
|
|
++
|
|
(if release then [
|
|
pkgs.awscli2
|
|
kaniko
|
|
] else [])
|
|
;
|
|
}
|