Как запустить местный Kubernetes с Vagrant - PullRequest
0 голосов
/ 05 марта 2020

Как разработчик, я хочу запускать локальную среду разработки Kubernetes автоматически, используя kubeadm. Я ожидаю, что моя среда будет работать под управлением vagrant up, и после этого я должен иметь возможность войти в Vagrant VM и выполнить команды kubectl.

Я хочу включить простой Python сценарий, который перечисляет все бегущие модули во всех пространствах имен. Вызовите этот сценарий в конце процесса «vagrant up или provision», чтобы проверить правильность установки Kubernetes.

Наконец-то я хочу загрузить скрипты на GitHub.

1 Ответ

1 голос
/ 06 марта 2020

У меня есть скрипт bootstrap, вызванный из моего Vagrantfile , например:

config.vm.provision :shell, path:./bootstrap.sh, privileged: false, :args => arguments_for_bootstrap

В таком скрипте bootstrap я устанавливаю Программное обеспечение, необходимое для запуска моего kubernetes вещи. Поскольку это бродячая машина, я бы предложил автономный minikube «кластер». Если для контейнеров используется технология docker, я бы установил, например, docker, kubectl и minikube и, возможно, некоторые другие вещи, такие как helm orchestrator, et c.

Например:

### 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 для python (то есть https://github.com/kubernetes-client/python), но я предлагаю прямо bash сценариев:

kubectl get pod --all-namespaces 

Лучший способ предоставления задач по предоставлению - использование скриптлетов , которые вы можете включить / отключить, просто дав + 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

Тогда вам нужно будет выполнить несколько скриплетов локально все в указанном c порядке:

provision.d/K01_helm_install_my_app
...
provision.d/K30_check_k8s_health

Что касается вашего третьего вопроса, я предполагаю, что, имея учетную запись github , все сценарии, необходимые для воссоздания вашей среды разработки, будут вашими Vagrantfile , bootstrap. sh script и каталог provision.d с scriptlets внутри, чтобы выполнить все шаги, которые вы планируете сделать для vagrant up .

...