إذا كنت مميزًا في OpenShift ، فمن غير المرجح أن تكشف هذه المشاركة الكثير لك. ولكن إذا كنت قد بدأت للتو في إتقانها ، فستوفر لك الكثير من الوقت والأعصاب. لقد طلبنا من Jorge Tudela González de Riancho ، وهو مستشار سحابي في مكتب Red Hat الإسباني ، لكتابة بعض الاختراقات في الحياة لمرفق
oc .

هذا فريق رائع ، ومدروس جيدًا ، وقوي ، ومرن ، وكما سترى ، يحتوي على العديد من الميزات المخفية التي تستحق المحاولة.
1. الأهم أولاً: تصحيح الأخطاء
عندما لا أعرف ما يحدث ، أو تظهر لي رسالة خطأ غير مفهومة ، أستخدم دائمًا علامة
--loglevell ، والتي تتيح
تسجيل الدخول إلى stderr. بناءً على قيمة هذه العلامة ، يمكنك رؤية مكالمات Curl API Rest أو محتويات استجابات API Rest أو حتى معلومات أكثر تفصيلاً.

$ oc --loglevel 7 get pod
...
I0216 21:24:12.027793 973 cached_discovery.go:72] returning cached discovery info from /home/jtudelag/.kube/192.168.42.77_8443/v1/serverresources.json
I0216 21:24:12.028046 973 round_trippers.go:383] GET https://192.168.42.77:8443/api/v1/namespaces/myproject/pods
I0216 21:24:12.028052 973 round_trippers.go:390] Request Headers:
I0216 21:24:12.028057 973 round_trippers.go:393] Accept: application/json
I0216 21:24:12.028061 973 round_trippers.go:393] User-Agent: oc/v1.7.6+a08f5eeb62 (linux/amd64) kubernetes/c84beff
I0216 21:24:12.053230 973 round_trippers.go:408] Response Status: 200 OK in 25 milliseconds
I0216 21:24:12.055143 973 cached_discovery.go:119] returning cached discovery info from /home/jtudelag/.kube/192.168.42.77_8443/servergroups.json
I0216 21:24:12.055228 973 cached_discovery.go:72] returning cached discovery info from /home/jtudelag/.kube/192.168.42.77_8443/authentication.k8s.io/v1/serverresources.json
I0216 21:24:12.055288 973 cached_discovery.go:72]
...
على سبيل المثال ، يكون المستوى 9 ملائمًا للغاية عندما تقوم بتصحيح كائن OCP ، لأنه يسمح لك بمشاهدة التصحيح نفسه (محتويات طلب واجهة برمجة التطبيقات).
إذا قام التصحيح ، على سبيل المثال ، بتغيير تسمية الخدمة إلى "app: hello-jorge" ، فستبدو كما يلي:
$ oc --loglevel 9 edit svc hello-openshift
...
I0216 21:33:15.786463 1389 request.go:994] Request Body: {"metadata":{"labels":{"app":"hello-jorge"}}}
I0216 21:33:15.786590 1389 round_trippers.go:386] curl -k -v -XPATCH -H "Accept: application/json" -H "Content-Type: application/strategic-merge-patch+json" -H "User-Agent: oc/v1.7.6+a08f5eeb62 (linux/amd64) kubernetes/c84beff" https://192.168.42.77:8443/api/v1/namespaces/myproject/services/hello-openshift
I0216 21:33:15.797185 1389 round_trippers.go:405] PATCH https://192.168.42.77:8443/api/v1/namespaces/myproject/services/hello-openshift 200 OK in 10 milliseconds
...
ملاحظة في أوقات اليأس ، بدلاً من تسعة ، يمكنك أن تقود عدة في وقت واحد. لن يتغير إخراج الأمر
oc من هذا ، ولكنه قد يشعر بتحسن بالنسبة لك.
$ oc --loglevel 9999 get pod
2. سو -
نعم ، لقد فهمت بشكل صحيح. يمكن تشغيل الأمر
oc بالنيابة عن مستخدم آخر ، أو باستخدام لغة OCP ، استخدم
انتحال الهوية . بالطبع ، مع الحقوق المناسبة. ولهذا ، يكفي استخدام علامة
--as .
على سبيل المثال:
# jorge
$ oc --as=jorge get pods
لا يعمل انتحال الهوية للمستخدمين فحسب ، بل أيضًا للمجموعات:
# developers
$ oc --as-group=developers get pods
انتحال الهوية مفيد في مجموعة متنوعة من الحالات. على سبيل المثال ، عندما تحتاج إلى التحقق مما إذا كان يمكن للمستخدم تنفيذ إجراء واحد أو آخر ، أو معرفة ما
يمثله الأمر
oc له. يساعد انتحال الهوية أيضًا كثيرًا في الخلط بين الأدوار والأذونات.
3. Whoami
ربما يكون فريق
oc whoami مألوفًا للجميع. خاصة علامة
-t ، والتي تسمح لك بالحصول على رمز الوسائط للمستخدم / الجلسة الحالية. ولكن ماذا لو كان لديك رمز مميز ولكنك لست مالكه؟
في هذه الحالة ، يمكنك تسجيل الدخول إلى OpenShift باستخدام هذا الرمز المميز ، ثم تشغيل
الأمر oc whoami . على الرغم من ذلك ، انتظر ، يمكنك معرفة اسم المالك على الفور عن طريق تمرير الرمز المميز إلى
الأمر who whoami oc كوسيطة ثالثة بدون أي علامات.
انظر:
#
$ token=$(oc whoami -t)
#
$ oc whoami $token
jorge
4. تصحيح oc
كما تعلم ، يمكن تشغيل الصدفة في جراب يعمل. في بعض الأحيان يكون من المفيد عمل نسخة كاملة من تكوين لوحة التشغيل واستكشاف الأخطاء وإصلاحها من خلال الصدفة. هذه هي الطريقة الافتراضية المسماة.
الآن ألق نظرة على ما تسمح لك خيارات
تصحيح أخطاء oc القيام به: يمكنك تشغيل الحاوية كجذر أو أي مستخدم آخر ؛ يمكنك تشغيله على العقدة المحددة أو يمكنك تشغيله ليس صدفة ، ولكن أمر آخر.
في هذه الحالة ، يجب عليك تحديد العاصمة الصحيحة ، على سبيل المثال:
# shell pod' dc/jorge
$ oc debug dc/jorge
# , root
$ oc debug --as-root=true dc/jorge
5. شرح oc
تحتوي كائنات OpenShift / Kubernetes في بعض الأحيان على عدد كبير من الحقول. عند البحث عن أمثلة لتعريفات هذه الكائنات ، غالبًا ما يتعين عليك اللجوء إلى وثائق OCP أو مصادر أساسية أخرى. ومع ذلك ، يمكنك استخدام الأمر
oc شرح كذلك.
يعرض هذا الأمر وثائق عن الموارد وحقولها ، وهو أمر مفيد جدًا عند الإعلان عن كائنات OCP جديدة أو في الحالات التي لا يمكنك فيها الوصول إلى وثائق OCP الرسمية.
على سبيل المثال ، إليك كيفية الحصول على وثائق pod ووصف حقول التقارب:
# الحصول على مساعدة على جراب
$ oc شرح الجراب
الوصف:
Pod هي مجموعة من الحاويات التي يمكن تشغيلها على مضيف. يتم إنشاء هذا المورد من قبل العملاء وجدولته على المضيفين.
الحقول:
بيانات التعريف <كائن>
بيانات تعريف الكائن القياسي. مزيد من المعلومات:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
المواصفات <الكائن>
تحديد السلوك المطلوب للجراب. مزيد من المعلومات:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
الحالة <كائن>
أحدث حالة لوحظ جراب. قد لا تكون هذه البيانات محدثة.
يسكنها النظام. للقراءة فقط. مزيد من المعلومات:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
apiVersion <string>
يعرّف APIVersion المخطط المُنسَّخ لهذا التمثيل
الكائن. يجب على الخوادم تحويل المخططات المعترف بها إلى أحدث الداخلية
القيمة ، وقد يرفض القيم غير المعترف بها. مزيد من المعلومات:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
نوع <سلسلة>
النوع هو قيمة سلسلة تمثل مورد REST لهذا الكائن
يمثل. قد تستنتج الخوادم هذا من نقطة النهاية التي يرسلها العميل
طلبات. لا يمكن التحديث. في CamelCase. مزيد من المعلومات:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
# احصل على وصف حقل التقارب
$ oc شرح pod.spec.affinity
الموارد: التقارب <الكائن>
الوصف:
إذا تم تحديد ذلك ، فإن قيود الجدولة في الجراب
التقارب عبارة عن مجموعة من قواعد جدولة التقارب.
الحقول:
عقدة التقارب <كائن>
يصف قواعد جدولة تقارب العقدة للجراب.
podAffinity <كائن>
يصف قواعد جدولة تقارب الجراب (على سبيل المثال ، يشترك في تحديد موقع هذا الجراب في
العقدة نفسها ، المنطقة ، إلخ. مثل بعض الكبسولات الأخرى.
podAntiAffinity <كائن>
يصف قواعد الجدولة المضادة للجاذبية (على سبيل المثال ، تجنب وضع هذا الجراب
في نفس العقدة أو المنطقة ، إلخ. مثل بعض الكبسولات الأخرى.
6. نسيان grep ، awk ، قطع ، إلخ.
ميزة أخرى رائعة لأمر
oc هي وظائف تنسيق الإخراج المضمنة.
الجميع يعرف عن
خيارات -o json أو
-o yaml ، لكن العلم
-o له العديد من الخيارات الأخرى.
ربما تكون
أقوىها هي
go-template و
jsonpath :
json|yaml|wide|name|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...
لنفترض أنك تريد معرفة الخدمة التي يقدمها مسار معين (مسار تسجيل عامل الميناء):
# , , my-docker-registry.example.com
$ oc get routes -o=go-template='{{range .items}}{{if eq .spec.host "my-docker-registry.example.com"}}{{.metadata.name}}{{end}}{{end}}'
docker-registry
أو لنفترض أنك بحاجة إلى معرفة استراتيجية نشر جهاز التوجيه DC:
#
$ oc get dc router -o=go-template='{{ .spec.strategy.type }}'
Rolling
كما ترون ،
oc هو فريق رائع. من المؤكد أنه يستحق اللعب به ، لأنه أحد أروع الأشياء في OpenShift.
إذا كنت ترغب في معرفة المزيد حول الميزات المثيرة للاهتمام في OpenShift ، فإننا نوصيك بالاطلاع على مدونة
Red Hat Developer - هنا لن تجد فقط مقالات من مطورينا حول أي موضوع تقريبًا ، ولكن أيضًا كتالوج ضخم من
الأدبيات المجانية . ويمكنك تحديث
منشوراتنا حول كيفية نشر Minishift على الكمبيوتر المحمول وبدء العيش .