Kubernetes
December 11, 2022

Регистрируем свой домен и прикручиваем его к сайту+генерируем сертификат

Данный пример является продолжением той части основного мануала, где мы создали deployment+service и получили доступ к содержимому пода через ip адрес. Там до сих пор должен крутиться nginx.

Регистрируем свой домен.

Зарегистрируем свой домен на сайте https://www.freenom.com/ru/index.html?lang=ru Домен здесь можно зарегистрировать совершенно бесплатно. На сайте необходимо зарегистрироваться и добавить в корзину домен/домены.
Я буду использовать для выполнения теста домен cameda1.ml.

Делегируем управление доменом в Яндекс Облако.

Для делегирования домена в Яндекс необходимо прописать на сайте freenom NS записи облака.

Services-->My Domains-->Manage Domain (кнопка напротив выбранного домена)-->Management Tools-->Nameservers-->Use custom nameservers (enter below)

И вставляем адреса DNS серверов Яндекс Облака:

  • ns1.yandexcloud.net.
  • ns2.yandexcloud.net.
export FOLDER=$(yc config get folder-id)

Пропишем необходимые записи в Cloud DNS.

1. Но для начала надо создать публичную зону.

yc dns zone create \
  --folder-id $FOLDER \
  --name pguti-service \
  --description "pguti test" \
  --zone cameda1.ml. \
  --public-visibility \
  --async

2. Создадим А запись для домена. В качестве IP адреса будем использовать адрес балансировщика в сервисе Network Load Balancer.

yc dns zone add-records --name pguti-service \
--record "cameda1.ml. 600 A 158.160.45.149"

3. Проверим, что всё правильно резолвит.

host cameda1.ml.
cameda1.ml has address 158.160.45.149

Хорошо, работает)

Создадим сертификат.

yc certificate-manager certificate request \
  --folder-id $FOLDER \
  --name pguti \
  --domains "cameda1.ml" \
  --challenge dns
export CERT=$(yc cm certificate get pguti --format=json | jq -r ".id")

Добавим CNAME запись в домен для прохождения валидации.

yc dns zone add-records --name pguti-service --record \
"_acme-challenge.cameda1.ml. 600 CNAME $CERT.cm.yandexcloud.net."

Ждём выпуска cертификата! Это может занимать несколько часов.

Сертификат должен принять статус Issued.

Итак, всё работает:

curl cameda1.ml
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>