มาเล่น Rancher Compose กัน
Rancher Compose เป็น Orchestration Tool คล้ายกับ Docker Compose แต่การทำงานจะเป็นการเชื่อมต่อกับ Racher ไม่ได้เชื่อมต่อกับ Swarm ดังนั้นการใช้งาน Rancher Compose จะต้องใช้คู่กับ Rancher ด้วย Rancher Compose จะใช้ไฟล์ config อยู่ 2 ไฟล์คือ docker-compose.yml สำหรับกำหนด stack ที่ต้องการ deploy และ rancher-compose.yml สำหรับกำหนดค่า Load Balance หรือการ Scale หากใช้ไฟล์ docker-compose.yml อย่างเดียว Rancher จะไปสร้าง config rancher-compose ให้ พร้อมกำหนดจำนวน Scale เท่ากับ 1 ไว้ ดังนั้นในแต่ละ Service สามารถสั่ง Scale ได้โดยอัตโนมัติ
![](https://lh3.googleusercontent.com/--S1fDFdUDmw/VhyJC1ZmMTI/AAAAAAAAVuU/wq4LvrlkKtU/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252011%25253A30%25253A02.png)
ตัวอย่าง Jenkins CI จะเห็นภาพมากที่สุด เพราะโครงสร้างของ Jenkins ออกแบบมาให้ Scale ในส่วน Jenkins Slave ได้เรื่อยๆ ดังนั้นหากมีการเพิ่ม Host ของ Jenkins Slave เมื่อ Container เริ่มทำงานจะต้อง Link กลับมาที่ Jinkins Master เพื่อ config slave เพิ่ม เราจะใช้ image ชื่อ ibuildthecloud/jenkins-swarm และ ibuildthecloud/jenkins-swarm-slave กัน Rancher Compose สามารถใช้งานได้บน UI, API และ CLI ครั้งนี้มาลองใช้ CLI กันบ้าง ให้ดาวน์โหลด Rancher Compose CLI มาจากหน้า Stack และติดตั้งให้เรียบร้อย
กลับไปที่ Rancher สร้าง API Key ขึ้นมาใหม่ อย่าลืมจดค่า ACCESS_KEY และ SECRET_KEY มาด้วย
![](https://lh3.googleusercontent.com/-E6_XDmqDsYQ/VhyHVoFTT1I/AAAAAAAAVuE/wSn6MCRIqKg/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252010%25253A06%25253A23.png)
จากนั้นตั้งค่า Environment Variable สำหรับ RANCHER_URL, RANCHER_ACCESS_KEY, RANCHER_SECRET_KEY
เพิ่ม Host พร้อมติด Label เป็น jenkins=master และ jenkins=slave
![](https://lh3.googleusercontent.com/-ELkZTVH6dwM/VhyHWPsBwAI/AAAAAAAAVuE/Eit2qSiJF-o/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252010%25253A40%25253A37.png)
โดยเราจะกำหนดให้ scheduler สั่ง deploy Jenkins master ไปยังเครื่องที่ติด Label jenkins=master และ deploy Jenkins slave ไปยังเครื่องติด Label jenkins=slave และลิงค์ container ข้าม Host เพื่อ reconfig slave ให้ Jenkins master ด้วย เขียน docker-compose.yml ได้ดังนี้
![](https://lh3.googleusercontent.com/--S1fDFdUDmw/VhyJC1ZmMTI/AAAAAAAAVuU/wq4LvrlkKtU/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252011%25253A30%25253A02.png)
ตัวอย่าง Jenkins CI จะเห็นภาพมากที่สุด เพราะโครงสร้างของ Jenkins ออกแบบมาให้ Scale ในส่วน Jenkins Slave ได้เรื่อยๆ ดังนั้นหากมีการเพิ่ม Host ของ Jenkins Slave เมื่อ Container เริ่มทำงานจะต้อง Link กลับมาที่ Jinkins Master เพื่อ config slave เพิ่ม เราจะใช้ image ชื่อ ibuildthecloud/jenkins-swarm และ ibuildthecloud/jenkins-swarm-slave กัน Rancher Compose สามารถใช้งานได้บน UI, API และ CLI ครั้งนี้มาลองใช้ CLI กันบ้าง ให้ดาวน์โหลด Rancher Compose CLI มาจากหน้า Stack และติดตั้งให้เรียบร้อย
wget https://releases.rancher.com/compose/beta/latest/rancher-compose-linux-amd64.tar.gz
cd rancher-compose-v0.4.0/
sudo mv rancher-compose /usr/local/bin/
กลับไปที่ Rancher สร้าง API Key ขึ้นมาใหม่ อย่าลืมจดค่า ACCESS_KEY และ SECRET_KEY มาด้วย
![](https://lh3.googleusercontent.com/-E6_XDmqDsYQ/VhyHVoFTT1I/AAAAAAAAVuE/wSn6MCRIqKg/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252010%25253A06%25253A23.png)
จากนั้นตั้งค่า Environment Variable สำหรับ RANCHER_URL, RANCHER_ACCESS_KEY, RANCHER_SECRET_KEY
export RANCHER_URL=http://54.255.189.48:8080/v1/projects/1a5
export RANCHER_ACCESS_KEY=4A2C4B0E32C7C6A2FB19
export RANCHER_SECRET_KEY=STcwFnDha8jdiSaQAqCk3sBRecDPUHUtYUwA7m8t
เพิ่ม Host พร้อมติด Label เป็น jenkins=master และ jenkins=slave
![](https://lh3.googleusercontent.com/-ELkZTVH6dwM/VhyHWPsBwAI/AAAAAAAAVuE/Eit2qSiJF-o/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252010%25253A40%25253A37.png)
โดยเราจะกำหนดให้ scheduler สั่ง deploy Jenkins master ไปยังเครื่องที่ติด Label jenkins=master และ deploy Jenkins slave ไปยังเครื่องติด Label jenkins=slave และลิงค์ container ข้าม Host เพื่อ reconfig slave ให้ Jenkins master ด้วย เขียน docker-compose.yml ได้ดังนี้
จากนั้นสั่ง
rancher-compose up -d
กลับไปหน้า Stack เราจะพบ Stack Jenkins เพิ่มเข้ามาจะเริ่ม Deploy Service ต่างๆ ให้
![](https://lh3.googleusercontent.com/-QAXZfoPUd04/VhyHVmp8THI/AAAAAAAAVuE/7F2Y3InaCZw/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252010%25253A38%25253A41.png)
ดูในหน้า Infrastructure
![](https://lh3.googleusercontent.com/--S1fDFdUDmw/VhyJC1ZmMTI/AAAAAAAAVuU/wq4LvrlkKtU/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252011%25253A30%25253A02.png)
เข้าไปดูใน Jenkins จะพบว่ามี Slave เชื่อมต่อเข้ามาแล้ว
![](https://lh3.googleusercontent.com/-QFi5XY-bWmY/VhyJsrsSCHI/AAAAAAAAVuc/H1om02UvqgQ/s640-Ic42/Screenshot%252520from%2525202015-10-13%25252011%25253A32%25253A54.png)
0 Comments