Makefile target to add k8s cluster config

5/1/2020

I want, in one command with args to config kubeconfig, that is able to connect to k8s cluster.

I tried the following which does not work.

cfg:
    mkdir ~/.kube

kube: cfg
    touch config $(ARGS)

In the args the user should pass the config file content of the cluster (kubeconfig).

If there is a shorter way please let me know.

update

I've used the following which (from the answer) is partially solve the issue.

kube: cfg
    case "$(ARGS)" in \
      ("") printf "Please provide ARGS=/some/path"; exit 1;; \
      (*)  cp "$(ARGS)" /some/where/else;; \
    esac

The problem is because of the cfg which is creating the dir in case the user not providing the args and in the second run when providing the path the dir is already exist and you get an error, is there a way to avoid it ? something like if the arg is not provided dont run the cfg

-- Nina S
gnu-make
kubernetes
makefile

1 Answer

5/1/2020

I assume the user input is the pathname of a file. The make utility can take variable assignments as arguments, in the form of make NAME=VALUE. You refer to these in your Makefile as usual, with $(NAME). So something like

kube: cfg
    case "$(ARGS)" in \
      ("") printf "Please provide ARGS=/some/path"; exit 1;; \
      (*)  cp "$(ARGS)" /some/where/else;; \
    esac

called with

make ARGS=/some/path/file kube

would then execute cp /some/path/file /some/where/else. If that is not what you were asking, please rephrase the question, providing exact details of what you want to do.

-- Jens
Source: StackOverflow