มาลองเล่น OpenShift 3 Developer Preview

OpenShift 3 หรือ OpenShift Next Gen ใกล้ออกรุ่นออนไลน์ให้ได้ใช้งานกันแล้ว ทาง RedHat ได้เปิดให้นักพัฒนาได้ใช้รุ่น Developer Preview มาระยะหนึ่ง เพื่อให้นักพัฒนาได้ทดลองใช้งานและวางแผนเตรียมย้ายจาก OpenShift เดิมมาเป็น OpenShift 3 ความแตกต่างระหว่างของใหม่กับของเก่า แต่เดิมการทำ partitioning application ใช้ความสามารถของ cgroup จาก Kernel ในรุ่นใหม่เปลี่ยนมาใช้ Docker และ Kubernetes เรียกว่าเปลี่ยนจากหน้ามือเป็นหลังมือเลยทีเดียว

สำหรับการใช้งาน OpenShift ก็คล้ายๆ เดิมแต่มีเครื่องมือแบบ cli ใหม่ใช้งานง่ายกว่าเดิม สามารถเชื่อมโยงกับ Git repository ได้ สั่ง auto build จาก repository ได้ นักพัฒนามีหน้าที่เขียน App และทดสอบ App เท่านั้นที่เหลือ OpenShift จะจัดการให้ ไม่ต้องปวดหัวกับ Kubernetes Cluster, Storage มาดูวิธีการใช้งานกัน
Continue reading

มาเล่น OpenShift Launch Service Application กัน

เมื่อครั้งที่แล้วพาเล่น OpenShift Hub ซึ่งคุณสามารถสั่ง Lauch Application จากหน้าเว็บของ OpenShift Hub ได้เลย ซึ่งใช้ควมสามารถของ Web-Based App Creation Workflow URL อารมณ์เดียวกับ AWS Marketplace ที่เรากดแล้วได้ Application มาใช้งานได้เลย มีนักพัฒนาเว็บสร้างปุ่ม Launch Service สำหรับ Application ต่างๆ เอาไว้ทดสอบโดยที่ไม่จำเป็นต้องใส่ลง OpenShift Hub

เมื่อกรอกรายละเอียด Cartridge, Git Repository ของ Application ที่ต้องการ Deploy เราจะได้ Code HTML กับ Markdown เอาไปแปะหน้าเว็บได้ 🙂
Continue reading

มาเล่น OpenShift Hub กัน

OpenShift เปิดบริการแหล่งรวมซอฟต์แวร์ชื่อ OpenShift Hub เปิดให้นักพัฒนาสามารถนำเอาซอฟต์แวร์ของตัวเองเอาขึ้นบริการใน OpenShift ได้ สำหรับผู้ใช้งานสามารถเลือก Application ที่ต้องการได้จากหน้า OpenShift Hub และกด Deploy ได้เลย OpenShift จะทำหน้าที่ Deploy Application ที่ต้องการใช้งานให้อัตโนมัติ

สำหรับการใช้งานก็ง่ายมาก ให้คุณเลือก Application ที่คุณต้องการจากหน้า OpenShift Hub เมื่อได้แล้วให้กดเข้าไปดูรายละเอียด
Continue reading

มาเล่น Moodle บน OpenShift กัน

ThaiOpenSource เคยนำเสนอเรื่อง Moodle บน OpenShift ไปหลายครั้งแล้ว สำหรับครั้งนี้จะมาแนะนำวิธีติดตั้งแบบรวดเร็ว โดยไม่ต้องใช้คำสั่งบน terminal ไม่ต้องหา Git Repository และไม่ต้องติดตั้งเองให้ยุ่งยาก วิธีการที่จะมาแนะนำวันนี้คือเรียกใช้ผ่าน Dashboard ได้เลย สำหรับท่านที่มี account ให้ล็อกอินเข้าไปที่ OpenShift สั่งสร้าง Application ใหม่

Continue reading

แนะนำหนังสือ OpenShift

หนังสือ Getting Satrted with OpenShift จากสำนักพิมพ์ O’Reilly ออกมาแล้ว หลังจากที่บ่มมานานอยู่เหมือนกัน นานจนลืมไปเลย หนังสือเล่มนี้เน้นการใช้งาน OpenShift เป็นหลัก การทำ Hot Deploy ใช้งาน Task Scheduler ทำ Continuous Integration การ Backup เป็นต้น เรียกได้ว่าแตกต่างจากหนังสือ OpenShift เล่มอื่นๆ ที่มีอยู่ในท้องตลาดพอสมควร สำหรับท่านที่เป็นมือใหม่ ผมแนะนำให้อ่านเล่มนี้ครับ 🙂

เกือบลืมหนังสือเล่มนี้สามารถดาวน์โหลดได้ ที่เว็บ OpenShift ครับ

มาติดตั้ง OpenShift Origin เล่นกัน

OpenShift เป็น Platform as a Service พัฒนาโดย RedHat ซึ่งนำแนวคิดการพัฒนา PaaS โดยไม่พึ่งพาการทำ Multi Tenant โดยใช้ VM แต่ใช้ Kernel Control Group, Namespace และ SELinux เป็นตัวแบ่ง Tenant ให้แต่ละ Application ทำงานแทนการใช้ VM ทำให้โครงสร้างของ OpenShift แตกต่างจาก PaaS ตัวอื่นๆ อย่างชัดเจน OpenShift ใช้ Gear แทน Application ของผู้ใช้ ซึ่งใน 1 Gear จะมีส่วนประกอบไปด้วย Code ของ Application, Git Repository, Application Environment และ Cargtride ที่เป็น Application Runtime, ฐานข้อมูล, Jenkins Server สำหรับทำ CI และ HA Proxy สำหรับทำ Load balance ระหว่าง Gear และรองรับการทำ Elastic Scale ผ่าน HA Proxy นอกจากนี้ยังสร้าง domain name จาก namespace ที่กำหนดให้โดยผู้ใช้ให้อีกด้วย ใครสนใจเรื่อง Architecture เข้าไปอ่านในเว็บ OpenShift กันได้
OpenShift แบ่งรุ่นบริการออกเป็น 3 รุ่น คือ

  • OpenShift Origin เป็นโอเพนซอร์สสามารถเข้าร่วมพัฒนาได้
  • OpenShift Enterprise เป็นรุ่น Enterprise ติดตั้งผ่าน RHEL Repository
  • OpenShift Online เป็นบริการออนไลน์บน openshift.com

OpenShift สามารถติดตั้งได้บน RedHat Enterprise Linux และ Fedora สำหรับ Linux Distribution อื่น เอา ไฟล์ spec+source ไป build package เอาเอง T_T
วิธีการติดตั้ง OpenShift ทำได้ 2 วิธี

ถ้าอยากลองเล่น OpenShift ก็สามารถลงทะเบียนเข้าใช้งานที่ OpenShift Online ได้ฟรี สำหรับการติดตั้งแบบง่ายๆ ก็คงหนีไม่พ้น Puppet ครั้งนี้ใช้ Fodora 19 ติดตั้งแบบ Command Line และ Developer Tools อ้อ ลืมบอกไปว่าเราจะติดตั้งแบบง่ายที่สุดคือมี broker+node+console ในเครื่องเดียวกัน ใครสนใจติดตั้งแบบอื่น ตามลิงค์ได้ที่ท้ายบทความ หลังจากติดตั้ง Fedora 19 แล้วก็ติดตั้ง Puppet ดังนี้
yum install -y --nogpgcheck http://yum.puppetlabs.com/puppetlabs-release-fedora-19.noarch.rpm
เนื่องจากเราจะใช้ mcollective และ activemq ของ OpenShift Origin ดังนั้นต้องไปตั้งค่า exclude ไว้ใน repo ของ puppet โดยแก้ไขไฟล์ /etc/yum.repo.d/puppetlabs.repo ใส่ค่า exclude=*mcollective* activemq ต่อท้ายทุกๆ repo ในไฟล์ puppetlabs.repo จากนั้นตั้งติดตั้ง puppet และเครื่องมือที่ต้องใช้
yum install -y puppet facter tar httpd-tools
จากนั้นติดตั้ง puppet module ดังนี้
puppet module install puppetlabs/ntp
puppet module install puppetlabs/stdlib
puppet module install openshift/openshift_origin
ติดตั้ง Bind และสร้าง TSIG Key
yum install -y bind
สร้าง TSIG Key ให้ domain ของคุณ ในกรณีนี้ใช้เป็น example.com ถ้าไม่ชอบก็สามารถเปลี่ยนเป็น domain ที่คุณต้องการได้
/usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom -K /var/named example.com
cat /var/named/Kexample.com.*.key | awk '{print $8}'
คุณจะได้ค่า Key หน้าตาแปลกๆ แบบนี้ Mczfz277B5ykcPB4mAurZtZMhmXV6g== ให้จดเอาไว้ แล้วสร้าง config ชื่อ openshift_origin.pp ดังนี้

แก้ไฟล์ config ตามค่าที่คุณต้องการ เช่น domain, bind key เป็นต้น ใน config ผมกำหนดให้ puppet ติดตั้ง Cartridge แค่ PHP, PHPMyAdmin, MariaDB และ HAProxy เพื่อความรวดเร็ว เมื่อได้ไฟล์ config กันแล้ว ก็สั่งให้ puppet ทำงานดังนี้
puppet apply --verbose openshift_origin.pp
ระหว่างนี้ก็นั่งรอครับ ประมาณครึ่งชั่วโมง T_T ถ้าไม่มี Error ตัวแดงๆ ก็เป็นอันใช้ได้ เมื่อติดตั้งเสร็จให้ reboot เครื่องแล้ว เปิด browser ไปที่ http://broker.example.com/console

OpenShift จะถาม username และ password ใส่ openshift, password จากนั้นก็ใช้งานตามปกติ
ลิงค์ที่น่าสนใจ

Hot Deploy PHP App บน OpenShift

หลายคนอาจเจอปัญหาอาการ 503 Service Unavailable บน OpenShift หลังจาก Deploy PHP App ทุกครั้งที่มีการ Deploy app ผ่าน git push OpenShift จะเอาไฟล์ที่ push ไปวางแทนที่ revision เดิมและเริ่มกระบวนการ Deploy และจะทะยอย Stop และ Start Service ต่างๆ ใน Cartridge ที่เรามี เช่น Web Server, MySQL เป็นต้น เนื่องจาก OpenShift จะต้องรอ Service ในแต่ Cartridge เริ่มทำงานก่อน ทำให้เราเจอหน้า 503 Service Unavailable ในการ Deploy PHP App ไม่จำเป็นต้อง Stop และ Start Service ใน Cartridge ต่างๆ ก็ได้เพราะภาษา PHP เป็นภาษา Script เราสามารถแก้ปัญหานี้ได้ง่ายๆ โดยใช้วิธีที่เรียกว่า Hot Deploy
การทำ Hot Deploy จะเป็นการสั่งให้ OpenShift ไม่ต้องสนใจเรื่อง Start/Stop Cartridge มีวิธีการง่ายๆ คือ สร้างไฟล์ hot_deploy ใน markers
$ touch YourAppName/.openshift/markers/hot_deploy
$ git commit -am "Adding hot deploy marker"
$ git push

เริ่มใช้ Cloud ง่ายๆ กับ OpenShift Online

OpenShift เปิดตัวอย่างเป็นทางการแล้ว แต่ก็ยังไม่ได้เขียนบทความอะไรที่เป็นจริงจังมากนัก เอาเป็นว่าครั้งนี้มามัดรวมและสรุปการใช้งาน OpenShift Online กัน หลายท่านอาจสงสัยว่าทำไมถึงมีคำว่า Online ต่อท้าย ที่มีคำว่า Online ต่อท้ายก็เพราะว่า RedHat เปลี่ยนแนวทางของ OpenShift ครั้งใหม่ โดยแบ่งออกเป็น

  1. OpenShift Origin เป็นโครงการโอเพนซอร์สสามารถเอาซอร์สโค้ดไปพัฒนาต่อได้ หรือนำเอาไปใช้งานได้
  2. OpenShift Online เป็น OpenShift ที่ให้บริการที่อยู่ในรูปแบบ Public Cloud
  3. OpenShift Enterprise เป็นบริการเพิ่มจาก RedHat Enterprise สำหรับองค์กรที่ต้องการติดตั้งและใช้งาน OpenShift ในองค์กร

ครั้งนี้เราจะมาพูดถึง OpenShift Online กันครับ เนื่องจากจับต้องได้ง่ายกว่า สำหรับ OpenShift Online ท่านที่สนใจสามารถสมัครใช้บริการได้ฟรีไม่เสียค่าใช้จ่าย เริ่มแรก OpenShift จะให้ใช้งานฟรีอยู่ที่ 3 Gears ถ้าต้องการใช้งานเพิ่มหรือต้องการ Scale มากกว่า 3 Gears ต้องสมัคร Silver Plan คือจ่ายค่าส่วนกลางรายเดือน $20 และจ่ายค่าเช่าใช้แบบ Pay-per-Use ต่อ Gear อีกต่างหาก รายละเอียดในเรื่องของค่าใช้จ่ายดูได้ที่หน้า Pricing
มาเริ่มกันเลยได้ว่า สำหรับท่านที่สมัครสมาชิกไว้แล้วสามารถเลือกการใช้งาน OpenShift Online ได้ 3 ทาง คือ

  1. ผ่านหน้าเว็บ
  2. ผ่าน Command line
  3. ผ่าน IDE ที่รองรับ เช่น JBOSS IDE เป็นต้น

ขอแนะนำการใช้งานผ่าน Command line ก่อนก็แล้วกัน เพราะการใช้งานผ่านหน้าเว็บจะง่ายกว่า 😛 สำหรับการใช้งานผ่าน Command line สามารถใช้ได้กับทุกระบบปฏิบัติการ ขอให้มี

  1. Ruby 1.8.7 ขึ้นไป
  2. Git

หลังจากนั้นให้ติดตั้ง RedHat Cloud Client โดยใช้คำสั่ง

gem install rhc

เมื่อติดตั้ง RedHat Cloud Client เรียบร้อยแล้ว ตัวโปรแกรมจะให้เรา Login เข้าสู่ระบบของ OpenShift จากนั้นก็จะลงทะเบียน ssh public key เท่านี้ก็เป็นอันเสร็จเรียบร้อย จากนั้นก็มาสร้าง Application บน Cloud ได้เลย OpenShift ใช้คำว่า Programming Cartridge แทนภาษาที่คุณใช้ เช่น ถ้าคุณเขียนภาษา PHP คุณสามารถเลือก Cartridge ได้หลายแบบ เช่น PHP, ZendServer, CakePHP, cakeStrap, CodeIgniter เป็นต้น แต่ OpenShift จะมี Cartridge ที่เป็น Instante App ให้ด้วย เช่น Drupal, WordPress, Dukuwiki เป็นต้น สำหรับการเลือก Cartridge ขึ้นอยู่กับว่าเราต้องการ Cartridge แบบใด บาง Cartridge ไม่สามารถ Scale ได้อัตโนมัติ บาง Cartridge สามารถ Scale ได้ต้องอ่านรายละเอียดของ Cartridge นั้นๆ ให้ดี
มาสร้าง Application กันเลย ใช้คำสั่ง

rhc app create myfirstapp php-5.3

คำสั่งข้างต้นจะสร้าง App ที่ชื่อว่า myfirstapp ที่ใช้ภาษา PHP รุ่น 5.3 เป็นภาษาที่ใช้ในการพัฒนา หากต้องการให้ App สามารถ Scale ได้ ให้ใช้คำสั่ง

rhc app create -s myfirstapp php-5.3

หากต้องการฐานข้อมูลก็ให้เพิ่ม Cartridge เข้าไปเพิ่ม เช่น MySQL เป็นต้น

rhc cartridge add -a myfirstapp -c mysql-5.1

สำหรับการ Scale เราสามารถตั้งค่าจำนวน instance ต่ำสุดและสูงสุดที่จะเพิ่มได้ ยกตัวอย่างเช่น มีโควต้าทั้งหมด 16 Gears ใช้ไปแล้ว 3 Gears (PHP, MySQL, HA Proxy) ต้องการ Scale มากที่สุด 6 น้อยที่สุด 3 ใช้คำสั่งดังนี้

rhc cartridge scale php-5.3 -a myfirstapp --min 3 --max 6

เขียนมายาว ทั้งหมดนี้สามารถตั้งค่าได้จาก Web Console ได้เช่นเดียวกัน สำหรับเอา Application ขึ้น/ลง จะใช้ Git ทุกๆ App จะมี Git repository เป็นของตัวเอง และการใช้ Git คุณก็สามารถ merge code จาก repository อื่นๆ ได้ ไม่ว่าจะเป็น repository ของคุณเอง หรือจาก GitHub ก็ได้
 
 

มาใช้ OpenShift Metrics Cartridge กัน

ผมกลับมาใช้ OpenShift อีกรอบเนื่องจากมีโครงการเฉพาะกิจ พัฒนาเกมส์บวกเลขเก็บสถิติบน Cloud ซึ่งตอนแรกคิดว่าจะใช้ GREE แต่เนื่องจากติดปัญหาเรื่อง Build Package บน GREE เลยล้มเลิกไปและกลับมาใช้ OpenShift อีกรอบพัฒนา RESTFul Web Services เก็บข้อมูล High Score เอาเอง ปัญหาของคนที่ใช้ OpenShift มักจะถามบ่อยครั้งมาที่ผมและทีม OpenShift ที่ RedHat คือ จะวัดได้อย่างไรว่า App ที่พัฒนาใช้ Resource มากน้อยแค่ไหน สมควรที่จะเพิ่ม Gear เพื่อทำ horizontal Scaling หรือไม่ จากที่ได้ใช้บริการ Cloud ของหลายที่ จะมีเครื่องมือ Monitoring และ Auto Scaling ให้เสมอแต่ OpenShift ยังไม่มี เพิ่งจะมีออกมาเป็น Experimental (รุ่นทดลอง) ชื่อ OpenShift Metrics ครับ เป็น Cartridge เพิ่มเข้าไปใน Gear ได้โดยตรง วิธีการเพิ่มก็เข้าไปที่หน้า Add Catridge ดังนี้

จากนั้นเลือก OpenShift Metrics Cartridge เมื่อติดตั้งเรียบร้อยแล้ว เราจะสามารถเข้าไปดูส่วน Monitoring ได้โดยใช้ URL ดังนี้
https://appname-namespace.rhcloud.com/metrics
อยากดูของจริงก็เข้าไปดูของผมได้ครับที่?https://rest-redlinemobi.rhcloud.com/metrics/?ยังไม่มีรายงานสรุป แต่มี Graph แบบ real time ซึ่งดูแล้วงงนิดหน่อย เพราะดูไม่ค่อยทัน แต่ก็ยังดีกว่าไม่มีครับ 😛



ใครที่ใช้ OpenShift อยู่ก็ไปลองกดเล่นๆ ดูได้ครับ

พัฒนา Foursquare ของตัวเองด้วย MongoDB บน Cloud

ทีม RedHat OpenShift ได้นำเสนอ Video พัฒนา Foursquare ของตัวเองด้วย MongoDB บน OpenShift ซึ่ง Video นี้นำเสนอความสามารถในเรื่องของการทำ index แบบ geospatial บน MongoDB และการออกแบบ collection กำหนดคุณสมบัติ ให้ทำงานได้เหมือนกับ Foursquare อยากรู้ว่าทำยังไง สามารถดูได้จาก Video ข้างล่างครับ