Files
docs/doc/source/admintasks/kubernetes/setting-up-a-public-repository.rst
Ron Stone 4a9e94d81f Apply dir convention to Admintasks
Moved all Kubernetes admintasks content under a kubernetes directory.
This is needed to allow title versioning distinctions in partner builds
Resolved merge conflicts.

Signed-off-by: Ron Stone <ronald.stone@windriver.com>
Change-Id: If9d6326cd79247f5cb1c4f41e52ee5afede15ca9
Signed-off-by: Ron Stone <ronald.stone@windriver.com>
2021-09-03 11:21:18 -04:00

2.1 KiB

Set up a Public Repository in Local Docker Registry

There will likely be scenarios where you need to make images publicly available to all users.

The suggested method to do that is to create a keystone tenant/user = 'registry'/'public', which will therefore have access to images in the registry.local:9001/public/ repository. Then share access to those images by sharing the registry/public user's credentials with other users.

  1. Create the keystone tenant/user of registry/public.

    ~(keystone_admin)]$ openstack project create registry
    ~(keystone_admin)]$ TENANTNAME="registry"
    ~(keystone_admin)]$ TENANTID=`openstack project list | grep ${TENANTNAME} | awk '{print $2}'`
    ~(keystone_admin)]$ USERNAME="public"
    ~(keystone_admin)]$ USERPASSWORD="${USERNAME}K8*"
    ~(keystone_admin)]$ openstack user create --password ${USERPASSWORD} --project ${TENANTID} ${USERNAME}
    ~(keystone_admin)]$ openstack role add --project ${TENANTNAME} --user ${USERNAME} _member
  2. Create a secret containing the credentials of the public repository in kube-system namespace.

    % kubectl create secret docker-registry registry-local-public-key --docker-server=registry.local:9001 --docker-username=public --docker-password=public --docker-email=noreply@windriver.com -n kube-system
  3. Share the credentials of the public repository with other namespaces.

    Copy the secret to the other namespace and add it as an ImagePullSecret to the namespace's default serviceAccount.

    % kubectl get secret registry-local-public-key -n kube-system -o yaml | grep -v '^\s*namespace:\s'  | kubectl apply --namespace=<USERNAMESPACE> -f -
    % kubectl patch serviceaccount default  -p "{\"imagePullSecrets\": [{\"name\": \"registry-local-public-key\"}]}" -n <USERNAMESPACE>