Ansible: установка kubernetes с использованием vagrant, ошибка: «не удалось выполнить проверку сертификата сервера. CAfile: /etc/ssl/certs/ca-certificates.crt»

#kubernetes #ansible #vagrant #virtualbox

#kubernetes #ansible #vagrant #virtualbox

Вопрос:

Попытка установить kubernetes на virtualbox с помощью ansible:

в master-playbook.yml

   - name: Install comodo cert
    copy: src=BCPSG.pem dest=/etc/ssl/certs/ca-certificates.crt

  - name: Update cert index
    shell: /usr/sbin/update-ca-certificates

  - name: Adding apt repository for Kubernetes
    apt_repository:
      repo: deb https://packages.cloud.google.com/apt/dists/  kubernetes-xenial main
      state: present
      filename: kubernetes.list
      validate_certs: False
  

теперь Vagrantfile вызывает playbook:

 config.vm.define "k8s-master" do |master|
    master.vm.box = IMAGE_NAME
    master.vm.network "private_network", ip: "192.168.50.10"
    master.vm.hostname = "k8s-master"
    master.vm.provision "ansible" do |ansible|
    ansible.playbook = "kubernetes-setup/master-playbook.yml"
    end
end
  

но я получаю сообщение об ошибке:

 TASK [Adding apt repository for Kubernetes] ************************************
fatal: [k8s-master]: FAILED! => {"changed": false, "module_stderr": "Shared connection to 127.0.0.1 closed.rn",
  

«module_stdout»: «Трассировка (последний последний вызов): r n Файл
«/home/vagrant/.ansible/tmp/ansible-tmp-1555907987.70663-229510485563848/AnsiballZ_apt_repository.py» ,
строка 113, в файле rn _ansiballz_main()rn
«/home/vagrant/.ansible/tmp/ansible-tmp-1555907987.70663-229510485563848/AnsiballZ_apt_repository.py» ,
строка 105, в файле _ansiballz_mainrn invoke_module(zipped_mod,
temp_path, ANSIBALLZ_PARAMS)rn
«/home/vagrant/.ansible/tmp/ansible-tmp-1555907987.70663-229510485563848/AnsiballZ_apt_repository.py» ,
строка 48, в файле invoke_modulern imp.load_module(‘main‘, mod,
module, MOD_DESC)rn
«/tmp/ansible_apt_repository_payload_GXYAmU/main.py «, строка 550,
в файле rn
«/tmp/ansible_apt_repository_payload_GXYAmU/main.py «, строка 542,
в главном rn файле «/usr/lib/python2.7/dist-packages/apt/cache.py «,
строка 487, в обновлении rn поднять
FetchFailedException(e) r napt.cache .Исключение FetchFailedException: W:
репозиторий ‘https://packages.cloud.google.com/apt/dists
у kubernetes-ubuntu Release’ нет файла выпуска., W: данные из
такого репозитория не могут быть аутентифицированы и, следовательно, потенциально
опасны для использования., W: смотрите справочную страницу apt-secure (8) для создания репозитория
и сведений о конфигурации пользователя., E: не удалось получить

https://packages.cloud.google.com/apt/dists/dists/kubernetes-xenial/main/binary-amd64/Packages сертификат серверапроверка не удалась. CAfile:
/etc/ssl/certs/ca-certificates.crt CRLfile: нет, E:
не удалось загрузить некоторые индексные файлы. Они были проигнорированы или
вместо них использовались старые.r n», «msg»: «СБОЙ МОДУЛЯ nSee stdout / stderr для точной
ошибки», «rc»: 1}

Комментарии:

1. askubuntu.com/questions/1100800 /… — похоже на то, что было описано выше. Также в комментариях к вопросу есть еще одна ссылка

2. » копировать: src= BCPSG.pem dest=/etc/ssl/certs/ca-certificates.crt» почти наверняка абсолютно ужасная идея, поскольку этот файл (как следует из его множественного имени) представляет собой объединение множества сертификатов; правильный способ — загрузить любой новый сертификат ва /usr/local/share/ca-certificates затем вызовите update-ca-certificates

Ответ №1:

Как описано в руководстве fine, сначала необходимо добавить ключ подписи GPG с apt-key помощью модуля ansible или модуля ansible apt_key:

Аналогично перечисленный на этой странице, правильный apt репозиторий deb https://apt.kubernetes.io/ kubernetes-xenial main

Итак, да, хотя вы полностью нарушили свою цепочку доверия CA с помощью первой команды, я подозреваю, что впоследствии вы столкнулись бы с ненадежными подписями пакетов при выполнении следующих шагов, поскольку вы не обучили apt ключ подписи пакета kubernetes.

Ответ №2:

Запустите приведенную ниже команду и повторите попытку:

# git config —глобальный http.sslverify false