我拥有的是从我的 Vagrantfile 调用的 bootstrap 脚本,例如:
config.vm.provision :shell, path:./bootstrap.sh, privileged: false, :args => arguments_for_bootstrap
在这样的引导脚本中,我安装了运行 kubernetes 所需的软件。由于这是一台流浪机器,我建议独立的 minikube “集群”。如果对容器使用 docker 技术,我会安装,例如 docker、kubectl 和 minikube,可能还有一些类似 的东西helm 编排器等
例如:
### DOCKER ###
sudo apt-get update
# Install packages to allow apt to use a repository over HTTPS
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# Add Dockers official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Set up the stable repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Update
sudo apt-get update
# Install docker-ce
sudo apt-get install -y docker-ce=18.06.3~ce~3-0~ubuntu
# Add user to group 'docker'
sudo usermod -aG docker $USER
### KUBECTL ###
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.14.8/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
### MINIKUBE ###
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v1.4.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
# Start
sudo minikube start --vm-driver=none
# Configure permissions
[ -d /root/.kube ] && sudo mv /root/.kube $HOME/.kube # this will write over any previous configuration
sudo chown -R $USER $HOME/.kube
sudo chgrp -R $USER $HOME/.kube
[ -d /root/.minikube ] && sudo mv /root/.minikube $HOME/.minikube # this will write over any previous configuration
sudo chown -R $USER $HOME/.minikube
sudo chgrp -R $USER $HOME/.minikube
最后,我会添加配置脚本来执行您需要的任何检查。如果你更喜欢 python 脚本,你可以使用 kubectl api for python(即https://github.com/kubernetes-client/python),但我建议直接使用 bash 脚本:
kubectl get pod --all-namespaces
提供任务的最佳方式是使用 scriptlets,您可以通过授予 +x 权限来启用/禁用它:
@files = Dir.glob(provision.d + "/*").sort
@files.each do |file|
next if file == '.' or file == '..'
next if not File.stat(file).executable?
config.vm.provision :shell, path:file, privileged: false
end
然后,您将在本地有一堆 scriptlet 以特定顺序执行操作:
provision.d/K01_helm_install_my_app
...
provision.d/K30_check_k8s_health
关于您的第三个问题,我假设拥有 github 帐户,重新创建开发环境所需的所有脚本将是您的 Vagrantfile、bootstrap.sh 脚本和provision.d 目录,其中包含 scriptlets,用于执行您考虑在 vagrant up 上执行的所有步骤。