stanislavvv: (Default)
stanislavvv ([personal profile] stanislavvv) wrote2017-10-12 12:27 pm

docker registry, авторизация в нём и вебморда ко всему этому

Чтоб не забыть, если вдруг чего - запишу, чего делал.

1) docker registry - обычный контейнер registry.
Проброшены тома certs:/certs и data:/var/lib/registry
Установлены следующие переменные:
REGISTRY_AUTH_TOKEN_REALM=https://dreg.domain.tld/api/auth
REGISTRY_AUTH_TOKEN_SERVICE=dreg.domain.tld:5000
REGISTRY_AUTH_TOKEN_ISSUER=dreg.domain.tld
REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE=/certs/dreg.crt # на самом деле - такой же, как и следующий
REGISTRY_HTTP_TLS_CERTIFICATE=/certs/dreg.domain.tld.crt
REGISTRY_HTTP_TLS_KEY=/certs/dreg.domain.tld.key
REGISTRY_STORAGE_DELETE_ENABLED=true # для удаления ненужных образов

поскольку я таки лентяй - оставил реестр на порту 5000

2) docker-registry-web - вебморда к докеру, осуществляет авторизацию, раздачу ролей и позволяет удалять контейнеры, если в реестре это разрешено.
конфиг registry-web.yml:
registry:
  # Docker registry url
  url: https://dreg.domain.tld:5000/v2
  # Docker registry fqdn
  name: dreg.domain.tld:5000
  # To allow image delete, should be false
  readonly: false
  # Trust any SSL certificate when connecting to registry (self-sign too)
  trust_any_ssl: true
  auth:
    # Enable authentication
    enabled: true
    # Token issuer
    # should equals to auth.token.issuer of docker registry
    issuer: 'dreg.domain.tld'
    # Private key for token signing
    # certificate used on auth.token.rootcertbundle should signed by this key
    key: /conf/dreg.key


Дополнительно ставится переменная REGISTRY_TRUST_ANY_SSL=true (почему-то установленное в конфиге не является убедительным)
Пробрасываются следующее:
a) conf/registry-web.yml:/conf/config.yml:ro - конфиг
b) conf/dreg.key:/conf/dreg.key - ключ для авторизации (соответствует dreg.crt из конфига реестра)
c) db:/data - каталог под БД вебморды

используется версия контейнера hyper/docker-registry-web:v0.1.2 (более новая 0.1.3 таки не заработала как надо)

3) вебморда на nginx. Чисто для https к вебморде.

А всё почему? Потому что разрекламированный Portus не делает архивных копий своих _работающих_ версий, отчего в один прекрасный момент у них оказались разломанными не только контейнеры, но и rpm. А пересобирать нечто на ruby, да ещё зависящее от хз какой версии мне как админу сильно влом.