Skip to content

Commit

Permalink
add option to disable setting up the cluster automatically
Browse files Browse the repository at this point in the history
But still setup KUBECONFIG & scripts needed to setup the cluster manually.
  • Loading branch information
jashan-lco committed Feb 12, 2025
1 parent b00a5b1 commit 1888569
Showing 1 changed file with 81 additions and 60 deletions.
141 changes: 81 additions & 60 deletions local-cluster/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,80 +3,101 @@ let
cfg = config.devenv-k8s.local-cluster;
in {
options.devenv-k8s.local-cluster = {
enable = lib.mkEnableOption "Setup the local development K8s cluster";
enable = lib.mkEnableOption "Enable the local development K8s cluster";
setup.disable = lib.mkEnableOption "Disable setting up the cluster automatically after entering the development shell.";
};
config = lib.mkIf cfg.enable {
config = lib.mkIf cfg.enable (lib.mkMerge [

enterShell = ''
export KUBECONFIG=~/.kube/config-devenv-k8s
local-cluster-up || exit 1
{
enterShell = lib.mkBefore ''
export KUBECONFIG=~/.kube/config-devenv-k8s
echo "KUBECONFIG=$KUBECONFIG"
'';

echo
echo "K8s dashboard is running at https://k8s.local.lco.earth"
echo
'';
scripts = {
devenv-k8s-cluster-info.exec = ''
kubectl cluster-info
echo
echo "K8s dashboard is running at https://k8s.local.lco.earth"
echo
'';

tasks = {
"devenv-k8s:local-cluster:setupNginxIngress" = {
exec = "local-cluster-nginx-ingress-up";
before = [ "devenv:enterShell" ];
};
devenv-k8s-cluster-up-only.exec = ''
set -ex
ctlptl apply -f "${./local-cluster-registry.yaml}" -f "${./local-cluster.yaml}"
'';

"devenv-k8s:local-cluster:updateLocalLcoEarthCert" = {
exec = "local-cluster-update-local-lco-earth-cert";
before = [ "devenv-k8s:local-cluster:setupNginxIngress" ];
};
devenv-k8s-cluster-up.exec = ''
set -ex
devenv-k8s-cluster-up-only
devenv-k8s-cluster-nginx-ingress-up
devenv-k8s-cluster-dashboard-up
devenv-k8s-cluster-update-local-lco-earth-cert
"devenv-k8s:local-cluster:setupK8sDashboard" = {
exec = "local-cluster-k8s-dashboard-up";
before = [ "devenv-k8s:local-cluster:setupNginxIngress" ];
};
devenv-k8s-cluster-info
'';

};
devenv-k8s-cluster-down.exec = ''
set -ex
ctlptl delete -f "${./local-cluster.yaml}"
'';

scripts = {
local-cluster-up.exec = ''
set -ex
ctlptl apply -f "${./local-cluster-registry.yaml}" -f "${./local-cluster.yaml}"
kubectl cluster-info
'';
devenv-k8s-cluster-reg-down.exec = ''
set -ex
ctlptl delete -f "${./local-cluster-registry.yaml}"
'';

local-cluster-down.exec = ''
set -ex
ctlptl delete -f "${./local-cluster.yaml}"
'';
devenv-k8s-cluster-nginx-ingress-up.exec = ''
set -ex -o pipefail
kustomize build "${./ingress-nginx}" | kubectl apply --server-side -f -
kubectl apply --server-side --force-conflicts -f "${./configmap-coredns.yaml}"
'';

local-cluster-reg-down.exec = ''
set -ex
ctlptl delete -f "${./local-cluster-registry.yaml}"
'';
devenv-k8s-cluster-nginx-ingress-down.exec = ''
set -ex -o pipefail
kustomize build "${./ingress-nginx}" | kubectl delete -f -
kubectl delete -f "${./configmap-coredns.yaml}"
'';

local-cluster-nginx-ingress-up.exec = ''
set -ex -o pipefail
kustomize build "${./ingress-nginx}" | kubectl apply --server-side -f -
kubectl apply --server-side --force-conflicts -f "${./configmap-coredns.yaml}"
'';
devenv-k8s-cluster-dashboard-up.exec = ''
set -ex -o pipefail
kustomize build "${./dash}" | kubectl apply --server-side -f -
'';

local-cluster-nginx-ingress-down.exec = ''
set -ex -o pipefail
kustomize build "${./ingress-nginx}" | kubectl delete -f -
kubectl delete -f "${./configmap-coredns.yaml}"
'';
devenv-k8s-cluster-dashboard-down.exec = ''
set -ex -o pipefail
kustomize build "${./dash}" | kubectl delete -f -
'';

local-cluster-k8s-dashboard-up.exec = ''
set -ex -o pipefail
kustomize build "${./dash}" | kubectl apply --server-side -f -
'';
devenv-k8s-cluster-update-local-lco-earth-cert.exec = ''
set -ex
kubectl apply --server-side -f https://raw.githubusercontent.com/LCOGT/local-lco-earth-cert/refs/heads/main/tls.yaml
'';
};
}

local-cluster-k8s-dashboard-down.exec = ''
set -ex -o pipefail
kustomize build "${./dash}" | kubectl delete -f -
(lib.mkIf (!cfg.setup.disable) {
enterShell = ''
devenv-k8s-cluster-up-only || exit 1
devenv-k8s-cluster-info
'';

local-cluster-update-local-lco-earth-cert.exec = ''
set -ex
kubectl apply --server-side -f https://raw.githubusercontent.com/LCOGT/local-lco-earth-cert/refs/heads/main/tls.yaml
'';
};
};
tasks = {
"devenv-k8s:cluster:setupNginxIngress" = {
exec = "devenv-k8s-cluster-nginx-ingress-up";
before = [ "devenv:enterShell" ];
};

"devenv-k8s:cluster:updateLocalLcoEarthCert" = {
exec = "devenv-k8s-cluster-update-local-lco-earth-cert";
before = [ "devenv-k8s:cluster:setupNginxIngress" ];
};

"devenv-k8s:cluster:setupK8sDashboard" = {
exec = "devenv-k8s-cluster-dashboard-up";
before = [ "devenv-k8s:cluster:setupNginxIngress" ];
};
};
})
]);
}

0 comments on commit 1888569

Please sign in to comment.