Обновление сертификатов API для OpenShift

Эту SOP следует применять в следующих случаях:
  • Когда срок действия сертификатов API истекает (это отслеживается в Zabbix)

Обзор

Сертификаты API предоставляются LetsEncrypt через DNS-вызов. Поэтому процесс заключается в следующем: - использовать certbot для генерации вызова - зафиксировать соответствующую DNS-запись - получить сертификат - загрузить в OCP

Примечания: - При работе со стендовым кластером заменяйте api.ocp на api.ocp.stg по мере необходимости

Шаги

  1. На любой машине (даже на вашем ноутбуке) установите и запустите certbot

    sudo dnf install certbot           #если требуется
    mkdir ~/certbot && cd ~/certbot    #если требуется
    certbot certonly --expand --keep --manual \
      --preferred-challenges=dns -d "api.ocp.fedoraproject.org" \
      --config-dir ./config \
      --work-dir ./config \
      --logs-dir ./logs

    Это сгенерирует DNS-вызов, который необходимо зафиксировать как TXT-запись.

  2. Следуйте процессу DNS для нового хоста/записи

    Запись будет для _acme-challenge.api.ocp.fedoraproject.org, и вы можете использовать git log / git blame для поиска предыдущих примеров.

    Дайте 20 минут на распространение или используйте плейбук update_dns.yml, как указано в процессе DNS, чтобы ускорить его. Вы можете проверить это с помощью dig -t TXT _acme-challenge.api.ocp.fedoraproject.org и убедиться, что возвращается правильная строка.

  3. Завершите процесс certbot

    Вернитесь к процессу certbot и нажмите Enter, чтобы сообщить certbot о завершении вызова. Он должен пройти и записать файлы в ./config/live/api.ocp.fedoraproject.org

  4. Скопируйте файлы на управляющий узел OpenShift

    DATE=$(date '+%Y-%m-%d')
    scp ./config/live/api.ocp.fedoraproject.org/privkey.pem os-control01.rdu3.fedoraproject.org:/tmp/api.ocp.fedoraproject.org.key-$DATE
    scp ./config/live/api.ocp.fedoraproject.org/fullchain.pem os-control01.rdu3.fedoraproject.org:/tmp/api.ocp.fedoraproject.org.cert-$DATE

    При необходимости измените имя хоста на .stg.rdu3.

  5. Войдите на os-control01.rdu3.fedoraproject.org (или в стенд, при необходимости)

    ssh os-control01.rdu3.fedoraproject.org
    sudo -i
    DATE=$(date '+%Y-%m-%d')
    mv /tmp/api.ocp.fedoraproject.org.key-$DATE /tmp/api.ocp.fedoraproject.org.cert-$DATE /root
  6. Удалите и замените секрет сертификата в OpenShift

    oc delete secret api.ocp.fedoraproject.org -n openshift-config
    sleep 3
    DATE=$(date '+%Y-%m-%d')
    oc create secret tls api.ocp.fedoraproject.org \
      --cert=api.ocp.fedoraproject.org.cert-$DATE \
      --key=api.ocp.fedoraproject.org.key-$DATE \
      -n openshift-config
  7. Подождите несколько минут, а затем проверьте сертификат API

    Вы можете проверить сертификат, проверив конечную точку API или используя команды CLI OpenShift.