Container imagelarımızı sakladığımız Private Registry sunucularımız olabilir. Bu bağlamda kubernetes üzerinde bu imageları dağıtmak isteyebiliriz. Teknik olarak bize ait özel bir registry olduğundan, kullanıcı adı ve şifre doğrulamasını geçmeden veya diğer auth yöntemlerini geçmeden image’ı indirmemiz pek mümkün olmuyor.

Bundan dolayı kubernetes üzerinde secret ile registry sunucumuzu veya bilgilerimizi saklayarak, namespace veya project bazlı bu registry bilgilerinin otomatik olarak image çekilirken kullanılmasını sağlayabiliriz.

Aşağıdaki komut ile belirteceğimiz namespace üzerinde yine belirteceğimiz isim ile bir registry auth bilgilerini saklayacağız.

kubectl create secret docker-registry registryauth \
  -n <your-namespace> \
  --docker-server=<your-registry-server> \
  --docker-username=<your-name> \
  --docker-password=<your-password> \
  --docker-email=<your-email>

Belirlediğimiz namespace üzerinde registryauth adı altında bir secret oluşturduk ve içerisinde bizim registry bilgilerimiz mevcut. Her şey güzel hoş. Peki biz bu bilgileri deployment, pod vs. üzerinde nasıl kullanacağız? Cevabı aşağıdaki YAML üzerinde görebilirsiniz.

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  namespace: my-namespace
spec:
  containers:
    - name: my-app
      image: my-private-registry/my-app:v1
  imagePullSecrets:
    - name: registryauth

Thats all!

Ayrıca kendinize özel bir private registry kurmak istiyorsanız aşağıdaki yazıma mutlaka göz atmalısınız.