มาเล่น Kubernetes kubelet ใน CoreOS Linux

CoreOS รุ่นใหม่เพิ่ม kubelet เข้ามาช่วยให้คุณสามารถสร้าง Kubernetes cluster ได้เร็วยิ่งขึ้น โดยปกติ kubelet จะทำหน้าที่เป็น agent คอยดูแล pod ที่ถูกสร้างขึ้น register node เข้าไปยัง Kubernetes cluster ส่ง event, สถานะของ pod และรายงาน resource utilization นอกจากจะทำงานใน Kubernetes cluster แล้วยังสามารถทำงานแบบ stanalone ได้อีกด้วย ดังนั้นเราสามารถใช้ kubelet สร้าง single node Kubernetes cluster พร้อมระบบ monitoring resource utilization อย่าง cAdvisor ได้

มาเริ่มกันเลย เราจะใช้ CoreOS เวอร์ชั่น 773.1.0 ขึ้นไป อันดับแรกมาตั้งค่า service ใน systemd ให้ kubelet กันก่อน
Continue reading

มาเล่น Graylog กับ Docker Container กัน

Docker 1.8 ออกมาพร้อมกับการรองรับการใช้งานร่วมกับ Graylog ทำให้เราสามารถทำ Centralized Log และ Log Analized ของ Container บน Graylog ได้เลย เพียงแค่กำหนด —log-driver และ –log-opt ตอนสั่ง run เท่านั้น เรียกได้ว่าง่ายมากๆ มาลองเล่นกันดีกว่า ท่านที่ไม่มี Graylog สามารถใช้ Docker Image จาก Docker Hub มาทดลองกันได้

มาติดตั้ง Graylog ดังนี้

docker run -t -p 9000:9000 -p 12201:12201 graylog2/allinone

Continue reading

มาเล่น Docker Trusted Registry กัน

Docker เปิดบริการ Docker Trusted Registry เป็นบริการแบบ Commercial สำหรับองค์กรที่ต้องการการ support จาก Docker โดยตรง ซึ่ง Docker Trusted Registry คุณสามารถใช้บริการผ่าน Cloud Service ต่างๆ ได้ เช่น Amazon Web Service, Azure เป็นต้น และรวมไปถึงการติดตั้ง Registry เองแบบ on-premise ด้วย การ support แบ่งเป็น Plan ต่างๆ ขึ้นอยู่กับความต้องการของคุณครับ

มาเริ่มกันเลย AWS ให้บริการ Docker Trusted Registry แล้วคุณสามารถติดตั้งผ่าน AWS Maketplace หรือจากหน้า Console ก็ได้ ในข่วงที่เขียนบทความนี้ AMI มีบริการเฉพาะใน Zone US East (N.Virginia) และ US West (Oregon, N.California) เท่านั้น
Continue reading

DinD – Docker ใน Docker อีกที

หลายคนใช้ Docker Container กันจนเป็นเรื่องปกติ กลายเป็นว่าใช้ Docker Container เป็นตัวติดตั้ง Service ที่ต้องการใช้งาน แบบ Package Manager ไปซะงั้น การใช้งาน Docker บน App Container ก็มีคนใช้เหมือนกัน นึกถึง OpenStack on OpenStack ก็กรณีคล้ายกัน DinD หรือ Docker in Docker ก็มีมานานละ ลองไปค้นใน Docker Hub ก็พบว่ามีเยอะมาก ส่วนใหญ่จะอยู่ในเครื่องมือประเภท CI เช่น Jenkins, Jenkins Slave อะไรประมาณนั้น

เนื่องจากใช้ Jenkins ที่เป็น Container เวลาสั่ง Build Container Image จำเป็นต้องใช้ Docker ซึ่งทำงานอยู่ใน Container อีกที ก็เลยต้องมี Docker ใน App Container ด้วย สำหรับการสร้าง DinD Image คุณสามารถใช้ Image ของ jpetazzo/dind ก็ได้ หรืออยากจะ Build เองตั้งแต่เริ่มต้นก็ดูได้จาก Git Repository โครงการ DinD ได้เช่นกัน

Microsoft & Docker

ช่วงงาน Docker Con 2015 ที่ผ่านมา Microsoft มาโชว์ Docker Container บน Azure และเครื่องมือที่ช่วยให้ DevOps ทำงานได้ง่ายมากขึ้น เช่น VisualStudio Code รองรับไฟล์ Dockerfile และ Docker Compose แล้ว , VisualStudio Online มี CI ที่รวม Docker เข้าไปด้วย ช่วยให้ Build, Push, Pull, Deploy ใน CI ทำงานได้ง่ายมากขึ้น และสุดท้าย Azure รองรับ Container App แล้ว กดใช้งานได้เลยผ่านหน้า Portal ใหม่

จากที่เล่ามาผมได้ลองอยู่แค่อันเดียวคือ VisualStudio Code มี IntelliSense ใน Dockerfile ในส่วนคำสั่ง แต่ในส่วนชื่อ image มันไม่ขึ้นให้ เดี๋ยวไว้ว่างๆ ค่อยลองใม่

มาเล่น Docker Compose พร้อม reconfig HAProxy ด้วย Interlock กัน

ครั้งที่แล้วพาเล่น HA MQTT Broker ด้วย Docker Compose ครั้งนี้มาแนะนำวิธีการ Reconfig HAProxy ในกรณีที่มีการ Scale In, Scale Out จากการใช้ Docker Compose Scale ขอเปลี่ยนตัวอย่างเป็น WebApp จะได้เข้าใจง่ายๆ WebApp ตัวนี้ expose port 8080 เราสามารถใช้ Interlock ช่วยในการ reconfig HAProxy ในกรณีที่มีการ Scale ไม่ว่าจะ Scale in หรือ Scale out ได้ ครั้งนี้เราจะใช้ Docker Machine, Docke Swarm, Docker Compose และ Interlock

มาลงมือติดตั้ง Docker กันก่อน

wget -qO- https://get.docker.com/ | sh

ตามด้วย Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.3.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

Continue reading

มาเล่น Docker Registry 2 กัน

Docker ประกาศออกรุ่นใหม่ของ Docker Registry พร้อมเปลี่ยนชื่อโครงการเป็น Docker Distribution เพื่อไม่ให้สับสนขอเรียกเป็น Registry 2 ก็แล้วกันครับ สำหรับท่านที่ใช้ Docker 1.6+ จะรองรับ Registry 2 แล้วสำหรับรุ่นต่ำกว่านั้นใช้งานด้วยกันไม่ได้ครับ ในรุ่นใหม่นี้ออกแบบมาเพื่อรองรับ plugin สำหรับ storage แบบต่างๆ ซึ่งแต่ก่อนเน้นที่ Amazon S3 ในรุ่นใหม่นี้รองรับ storage หลายแบบ เช่น file system, Azure Blob Storage, AWS S3, Rados, Redis เป็นต้น ดู configuration เพิ่มเติมได้ครับ

มาลองเล่นกันอันดับแรกติดตั้ง Docker ให้เรียบร้อยก่อน

wget -qO- https://get.docker.com/ | sh

ติดตั้ง Docker Compose ต่อ

curl -L https://github.com/docker/compose/releases/download/1.3.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

มาลองติดตั้งแบบใช้ Docker กันก่อน ใช้คำสั่งดังนี้

docker run -d -p 5000:5000 --restart=always --name registry registry:2

Continue reading

มาเล่น High Availability MQTT Cluster ด้วย Docker Compose กัน

ครั้งที่แล้วแนะนำ High Availability MQTT Cluster แบบ Back to Basic ไว้เนื่องจากจะได้เข้าใจว่าหลักการเป็นอย่างไร ได้ลองติดตั้ง Ponte ตั้งค่า HA Proxy ฯลฯ ครั้งนี้เราจะใช้ Docker Compose ในการสร้าง Container ในส่วน MQTT Broker, HAProxy และ MongoDB สั่งงานครั้งเดียวจบ ตัวอย่างนี้เหมาะสำหรับศึกษาเท่านั้น หากต้องการเอาไปใช้งานควรแยก data volume ของ mongodb ออกมาด้วยครับ

จากภาพเดิมเราจะใช้ Docker Compose สร้าง Container ทั้งหมดขึ้นมาซึ่งประกอบไปด้วย

  • HA Proxy
  • MQTT Broker 1
  • MQTT Broker 2
  • MongoDB

Continue reading

มาตรวจสอบความปลอดภัยของ Docker Host กัน

Center for Internet Security และ Docker ได้ออกเครื่องมือ Docker Bench for Security ช่วยทำ Secuirty Benchmark สำหรับ Docker 1.6 ซึ่งอ้างอิงจากเอกสาร Container Security และ CIS Docker 1.6 Benchmark ทำให้ผู้ดูแลระบบสามารถตรวจสอบความปลอดภัยของ Docker Host ได้

CIS Docker 1.6 Benchmark จะมี Key ที่ใช้ในการตรวจสอบอยู่ 6 ส่วน ได้แก่

  1. Host Configuration
  2. Docker daemon configuration
  3. Docker deamon configuration files
  4. Container images and build files
  5. Container runtime
  6. Docker security operations

Continue reading

ใช้ Personal Repository ผ่าน Kitematic

ตามอัพเดท Kitematic ช้ากว่าคนอื่นเลยตามเก็บตกความสามารถใหม่กันสักหน่อย Kitematic รุ่นใหม่สามารถ Login เพื่อเชื่อมต่อกับ Docker Hub และเรียกใช้ Repository ของเราได้แล้ว…เย้

Continue reading