31 Temmuz 2017 Pazartesi

Ceph & Openshift Dynamic Provisioning

Ceph & Openshift Dynamic Provisioning

Dynamic provisioning için ceph tarafında admin key'e ihtiyac vardır. (pool içerisinde image oluşturabilecek yetkinlikteki kullanıcı)

cephmon01
ceph auth get-key client.admin | base64
QVFDK1I1yyyyyyyyyyyyGdElUcFJwZWRHdFNxxxxxxxPQ==

aldığımız base64 ile encode edilen keyi openshift tarafında kube-system namespace'inde create ediyoruz. (secret oluşturma)

openshiftmaster01
cat secret.admin.yml
apiVersion: v1
kind: Secret
metadata:
  name: ceph-secret-admin
type: "kubernetes.io/rbd"
data:
key: QVFDK1I1yyyyyyyyyyyyGdElUcFJwZWRHdFNxxxxxxxPQ==

oc create -f secret.admin.yml -n kube-system


Aşağıdaki komut ile dogruluyoruz.
oc get secret -n kube-system

Artık storageclass tanımı yapabiliriz.

cat create-storage-class.yaml

apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
  name: fast (1)
provisioner: kubernetes.io/rbd
parameters:
  monitors: ip.add.re.ss:6789,ip.add.re.ss:6789,ip.add.re.ss:6789 (2)
  adminId: admin (3)
  adminSecretName: ceph-secret-admin (4)
  adminSecretNamespace: kube-system (5)
  pool: test (6)
  userId: test (7)
  userSecretName: test-ceph-secret (8)

1 : storageclass adı
2 : ceph monların ip ve portları (Ornekte 3 adet mon var)
3 : ceph içerisindeki admin rolundeki kullanıcının adı
4 : ceph içerisindeki admin rolundeki kullanıcının secret keyi
5: secret keyin bulunduğu namespace (kube-system içerisinde oluşturmuştuk)
6: ceph’ten rbd allocate edilecek pool’un adı.

7. ve 8. adımlar için admin kullanıcı adı ve secret key kullanılabilir fakat daha dogrusu , sadece istenilen (örnekte test) pool üzerinde (caps: [osd] allow rwx pool=test) izni olan bir yetki tanımlayıp bunu dynamic provisioning için kullanabilecek namespace'lerde teker teker oluşturmak olucaktır.

Orneğin

cephmon01

ceph auth get-or-create client.test mon 'allow r' osd 'allow rw pool=test'

ceph auth get-key client.test | base64

Encoded elde edilen secret keyi openshift'te ilgili namespacelerde oluşturabiliriz.

Storageclass oluşturuldıktan sonra ilgili project'nin storage sekmesindeki listede fast  i görebilirsiniz.
Buradan  istenilen niteliklerde disk alabilirsiniz. Ayrıca sildiğimiz claimler otomatik olarak ceph üzerinden de silinecektir.