Jika Anda spesial di OpenShift, maka posting ini tidak mungkin mengungkapkan banyak hal kepada Anda. Tetapi jika Anda baru mulai menguasainya, maka itu akan menghemat banyak waktu dan saraf. Kami meminta Jorge Tudela GonzΓ‘lez de Riancho, seorang konsultan cloud di kantor Red Hat Spanyol, untuk menulis beberapa peretasan kehidupan untuk utilitas
oc .

Ini adalah tim yang keren, dipikirkan dengan matang, kuat, fleksibel, dan, seperti yang akan Anda lihat, ini memiliki banyak fitur tersembunyi yang pantas untuk dicoba.
1. Hal pertama yang pertama: debugging
Ketika saya tidak tahu apa yang sedang terjadi, atau saya mendapatkan pesan kesalahan yang tidak bisa dipahami, saya selalu menggunakan flag
--loglevell , yang memungkinkan
logging ke stderr. Bergantung pada nilai flag ini, Anda dapat melihat ikal panggilan API Rest, konten tanggapan API Rest, atau bahkan informasi lebih rinci.

$ 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]
...
Misalnya, loglevel 9 sangat nyaman ketika Anda menambal objek OCP, karena memungkinkan Anda untuk melihat tambalan itu sendiri (isi permintaan API).
Jika, misalnya, tambalan mengubah label layanan menjadi "app: hello-jorge", maka akan terlihat seperti ini:
$ 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
...
Catatan Pada saat putus asa, alih-alih satu sembilan, Anda dapat berkendara beberapa sekaligus. Output dari perintah
oc tidak akan berubah dari ini, tetapi mungkin terasa lebih baik untuk Anda.
$ oc --loglevel 9999 get pod
2. su -
Ya, Anda mengerti dengan benar. Perintah
oc dapat dijalankan atas nama pengguna lain, atau, menggunakan bahasa OCP, gunakan
peniruan identitas . Tentunya dengan hak yang sesuai. Dan untuk ini, hanya menggunakan flag
--as sudah
cukup .
Sebagai contoh:
# jorge
$ oc --as=jorge get pods
Peniruan identitas tidak hanya untuk pengguna, tetapi juga untuk grup:
# developers
$ oc --as-group=developers get pods
Peniruan identitas berguna dalam berbagai kasus. Misalnya, ketika Anda perlu memeriksa apakah pengguna dapat melakukan satu atau beberapa tindakan, atau melihat apa yang diperintahkan perintah
oc kepadanya. Peniruan identitas juga banyak membantu dalam kebingungan dengan peran dan izin.
3. Whoami
Tim
oC whoami mungkin akrab bagi semua orang. Terutama flag
-t , yang memungkinkan Anda untuk mendapatkan token media untuk pengguna / sesi saat ini. Tetapi bagaimana jika Anda memiliki token, tetapi Anda bukan pemiliknya?
Dalam hal ini, Anda bisa masuk ke OpenShift menggunakan token ini, dan kemudian jalankan perintah
oc whoami . Meskipun, tunggu, Anda dapat segera mengetahui nama pemiliknya dengan hanya menyerahkan token ke perintah
oc whoami sebagai argumen ketiga tanpa tanda apa pun.
Lihat:
#
$ token=$(oc whoami -t)
#
$ oc whoami $token
jorge
4. oc debug
Seperti yang Anda ketahui, sebuah shell dapat dijalankan langsung di pod yang sedang berjalan. Kadang-kadang berguna untuk membuat salinan lengkap dari konfigurasi pod yang sedang berjalan dan memecahkan masalah melalui shell. Inilah yang disebut metode default.
Sekarang lihat apa yang memungkinkan Anda melakukan opsi
debug oc : Anda dapat menjalankan wadah sebagai root atau pengguna lain; Anda dapat menjalankannya pada node yang dipilih atau Anda dapat menjalankannya bukan shell, tetapi perintah lain.
Dalam hal ini, Anda harus menentukan dc yang benar, misalnya:
# shell pod' dc/jorge
$ oc debug dc/jorge
# , root
$ oc debug --as-root=true dc/jorge
5. oc jelaskan
Objek OpenShift / Kubernetes terkadang memiliki sejumlah besar bidang. Saat mencari contoh definisi untuk objek seperti itu, Anda sering harus membuka dokumentasi untuk OCP atau sumber utama lainnya. Namun, Anda dapat menggunakan perintah
oc menjelaskan juga.
Perintah ini menampilkan dokumentasi tentang sumber daya dan bidangnya, yang sangat berguna ketika mendeklarasikan objek OCP baru atau dalam kasus di mana Anda tidak memiliki akses ke dokumentasi OCP resmi.
Misalnya, berikut cara mendapatkan dokumentasi pod dan deskripsi bidang afinitas:
# dapatkan bantuan di pod
$ oc jelaskan pod
DESKRIPSI:
Pod adalah kumpulan kontainer yang dapat berjalan di host. Sumber daya ini dibuat oleh klien dan dijadwalkan ke host.
BIDANG:
metadata <Object>
Metadata objek standar. Info lebih lanjut:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
spec <Object>
Spesifikasi perilaku pod yang diinginkan. Info lebih lanjut:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
status <Object>
Status pod yang paling baru diamati. Data ini mungkin tidak terbaru.
Dipenuhi oleh sistem. Hanya baca. Info lebih lanjut:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
apiVersion <string>
APIVersion mendefinisikan skema versi representasi dari sebuah
objek Server harus mengkonversi skema yang dikenal ke internal terbaru
nilai, dan dapat menolak nilai yang tidak dikenal. Info lebih lanjut:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources
baik <string>
Jenis adalah nilai string yang mewakili sumber daya REST objek ini
mewakili. Server dapat menyimpulkan ini dari titik akhir yang dikirimkan klien
permintaan untuk. Tidak dapat diperbarui Di CamelCase. Info lebih lanjut:
http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
# dapatkan uraian bidang afinitas
$ oc jelaskan pod.spec.affinity
SUMBER DAYA: afinitas <Object>
DESKRIPSI:
Jika ditentukan, kendala penjadwalan pod
Afinitas adalah sekelompok aturan penjadwalan afinitas.
BIDANG:
nodeAffinity <Object>
Menjelaskan aturan penjadwalan afinitas simpul untuk pod.
podAffinity <Object>
Menjelaskan aturan penjadwalan afinitas pod (mis. Menemukan bersama pod ini di
simpul, zona, dll yang sama seperti beberapa pod lainnya.
podAntiAffinity <Object>
Menjelaskan aturan penjadwalan anti-afinitas pod (mis. Hindari menempatkan pod ini
di node, zona, dll yang sama seperti beberapa pod lainnya.
6. Lupakan grep, awk, cut, dll.
Fitur keren lainnya dari perintah
oc adalah fungsi format output bawaan.
Semua orang tahu tentang opsi
-o json atau
-o yaml , tetapi flag
-o memiliki banyak opsi lain.
Yang paling kuat mungkin adalah
go-templat dan
jsonpath :
json|yaml|wide|name|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...
Katakanlah Anda ingin tahu layanan mana yang disediakan oleh rute tertentu (rute registri buruh pelabuhan):
# , , 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
Atau, katakanlah Anda perlu tahu strategi penerapan router dc router:
#
$ oc get dc router -o=go-template='{{ .spec.strategy.type }}'
Rolling
Seperti yang Anda lihat,
oc adalah tim yang luar biasa. Ini pasti layak untuk dimainkan, karena ini adalah salah satu hal paling keren tentang OpenShift.
Jika Anda ingin mempelajari lebih lanjut tentang fitur-fitur menarik dari OpenShift, kami sarankan Anda melihat blog
Pengembang Red Hat kami - di sini Anda tidak hanya akan menemukan artikel dari pengembang kami di hampir semua topik, tetapi juga katalog besar
literatur gratis . Dan Anda dapat menyegarkan pos kami tentang
cara menggunakan Minishift di laptop Anda dan mulai hidup .