معرفی اپراتور دارکوب
علاوه بر کنسول وب میتوانید از طریق اپراتور دارکوب اپهای جدید بسازید یا اپهای موجود خود را مدیریت کنید. هر نوع اپ دارکوبی در اپراتور در قالب یک CRD (Custom Resource Definition) با پسوند DarkubeApp است. به عنوان مثال، اپ دارکوبی postgres با crd به نام PostgresqlDarkubeApp یا اپ دارکوبی از نوع docker image با crd به نام DockerDarkubeApp تعریف شده اند. میتوانید همانند کار با Resource های مختلف کوبرنتیز مانند Deployment, StatefulSet با DarkubeApp های خود رفتار کنید.
انواع DarkubeApp Crd که در این لحظه میتوانید از آنها استفاده کنید:
- DockerDarkubeApp
- GitDarkubeApp
- HelmDarkubeApp
- MinIODarkubeApp
- PostgresqlDarkubeApp
- RedisDarkubeApp
- RocketChatDarkubeApp
برای کار با اپراتور نیاز است که با ساختار DarkubeApp مورد نظرتان آشنا باشید.
برای این کار میتوانید مستند crd مورد نظرتان
را مطالعه کنید یا میتوانید از دستورات kubectl explain {darkube-app-type}darkubeapp
و kubectl explain {darkube-app-type}darkubeapp.spec
استفاده کنید.
ساخت اپ جدید
برای این کار میتوانید darkubeapp مورد نظر خود را در قالب فایل yaml نوشته و سپس kubectl apply
کنید.
به نمونه yaml زیر توجه کنید :
apiVersion: darkube.hamravesh.com/v1alpha1
kind: DockerDarkubeApp
metadata:
name: docker-app-name
namespace: darkube-staging
spec:
replicas: 1
imageRepo: nginx
imageTag: "1.25.1"
ports:
- name: main
protocol: TCP
servicePort: 80
containerPort: 80
envs:
- name: key1
value: value1
isSecret: false
- name: key2
value: value2
isSecret: true
command: "/bin/sh -c"
args: "sleep 60000"
ramLimit: "100M"
cpuRequest: "100m"
enableSSL: true
isEnabled: true
enableHttpv2: false
redirectSSL: false
externalHosts: []
disk:
sizeInGi: 1
storageClassName: rawfile-btrfs
partitions:
- displayName: data
mountPath: "/var/lib/data"
- displayName: os
mountPath: "/var/lib/os"
logAggregationConfig:
stdoutLogSourceEnabled: true
مثال بالا یک نمونه اپ از نوع DockerDarkubeApp
است. field های مختلفی در darkubeapp.spec وجود دارند که میتوانید از آن ها استفاده کنید.
تغییر اپ موجود
میتوانید اپهایی که قبلا از طریق کنسول یا اپراتور ساختهاید را از دو راه kubectl apply
یا kubectl edit {darkube-app-type}darkubeapp app-name
تغییر دهید.
در صورت نیاز میتوانید اپ خود را با استفاده از دستور زیر refresh کنید:
kubectl annotate {darkube-app-type}darkubeapp app-name force-sync=$(date +%s) --overwrite
مشاهده وضعیت اپ
با استفاده از دستور kubectl get {darkube-app-type}darkubeapp my-app
میتوانید وضعیت اپ خود را در ستون LAST_STATE مشاهده کنید.
برای توضیحات کاملتر میتوانید از دستور kubectl describe {darkube-app-type}darkubeapp my-app
استفاده کرده و قسمت Status را مشاهده کنید.
همچنین با وارد کردن دستور kubectl annotate {darkube-app-type}darkubeapp operator-test-test stats=$(date +%s) --overwrite
,پس از
چند لحظه میتوانید نام پاد(ها)، پیشنهاد های ما برای بهبود عملکرد اپ، و هشدار های مربوط به اپ را به ترتیب در فیلد های alerts، suggestions ، pods در قسمت Status مشاهده کنید.