µµÄ¿ ÄÁÅ×À̳ʴ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹èÆ÷Çϱâ À§ÇÑ »õ·Î¿î Æз¯´ÙÀÓÀ» Á¦½ÃÇÏ´Â °¡»óÈ Æз¯´ÙÀÓÀÌ´Ù. ÄÁÅ×ÀÌ³Ê ÀÚü´Â »ç¿ëÇÏ±â ¸Å¿ì ½±Áö¸¸ À̸¦ È°¿ëÇÏ°í °ü¸®Çϱâ´Â °áÄÚ ½±Áö ¾Ê´Ù. ÀÌ Ã¥Àº µµÄ¿¸¦ óÀ½ Á¢ÇÏ´Â °³¹ßÀÚ¸¦ À§ÇÑ µµÄ¿ ÄÁÅ×ÀÌ³Ê¿Í À̹ÌÁöÀÇ ±âº»ÀûÀÎ °³³äÀ» ¸ÕÀú ¼³¸íÇÑ µÚ, µµÄ¿ ÄÄÆ÷Áî¿Í ½º¿ú ¸ðµå¸¦ ÅëÇØ ÄÁÅ×ÀÌ³Ê ¾ÖÇø®ÄÉÀ̼ÇÀ» YAML ÆÄÀÏ·Î ÀÛ¼ºÇÏ°í Ŭ·¯½ºÅÍ¿¡¼ ¹èÆ÷ÇÏ´Â ¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù. ³ª¾Æ°¡ µµÄ¿ ÄÁÅ×À̳Ê, µµÄ¿ ÄÄÆ÷Áî, ½º¿ú ¸ðµå¿¡¼ ÇнÀÇÑ Áö½ÄÀ» È°¿ëÇØ Äí¹ö³×Ƽ½ºÀÇ ±âÃÊ »ç¿ë¹ý, ´Ù¾çÇÑ Äí¹ö³×Ƽ½º ¿ÀºêÁ§Æ®ÀÇ »ç¿ë ¹æ¹ý ¹× ½ÉÈ °³³ä±îÁö ¾Ë¾Æº»´Ù.
µ¥ºê½Ã½ºÅÍÁî¿¡¼ ÄÁÅ×ÀÌ³Ê ÀÎÇÁ¶ó °ü¸®¸¦ ¸Ã°í ÀÖÀ¸¸ç, ´Ù¾çÇÑ °³¹ß °úÁ¤¿¡¼ ¾òÀº °æÇèµéÀ» °øÀ¯Çϱâ À§ÇØ Àڱ׸¶ÇÑ ºí·Î±×(blog.naver.com/alice_k106)¸¦ ¿î¿µÇÏ°í ÀÖ½À´Ï´Ù. ÃÖ±Ù¿¡´Â Ŭ¶ó¿ìµå¶ó´Â ºÐ¾ß¿¡ Á¾¼ÓµÇÁö ¾Ê°í ³×Æ®¿öÅ©, ºòµ¥ÀÌÅÍ, ¸Ó½Å·¯´× µî ´Ù¾çÇÑ ºÐ¾ß¸¦ À¶ÇÕÇϱâ À§ÇØ ³ë·ÂÇÏ°í ÀÖ½À´Ï´Ù. ±×¸², À½¾Ç µî¿¡µµ °ü½ÉÀÌ ¸¹¾Æ Ŭ¶ó¿ìµå¿Í ¿¹¼ú ºÐ¾ß¸¦ °áÇÕÇØ º¸°í ½Í´Ù´Â ²ÞÀ» °¡Áö°í ÀÖ½À´Ï´Ù.
01Àå: µµÄ¿¶õ?1.1 °¡»ó ¸Ó½Å°ú µµÄ¿ ÄÁÅ×À̳Ê1.2 µµÄ¿¸¦ ½ÃÀÛÇØ¾ß ÇÏ´Â ÀÌÀ¯- 1.2.1 ¾ÖÇø®ÄÉÀ̼ÇÀÇ °³¹ß°ú ¹èÆ÷°¡ ÆíÇØÁý´Ï´Ù.- 1.2.2 ¿©·¯ ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¶¸³¼º°ú È®À强ÀÌ ³ô¾ÆÁý´Ï´Ù.1.3 µµÄ¿ ¿£Áø ¼³Ä¡- 1.3.1 µµÄ¿ ¿£ÁøÀÇ Á¾·ù ¹× ¹öÀü - 1.3.2 ¸®´ª½º µµÄ¿ ¿£Áø ¼³Ä¡ - 1.3.3 À©µµ¿ì, ¸Æ OS¿¡ µµÄ¿ ¼³Ä¡ - 1.3.4 Docker Toolbox¿Í Docker for Windows/MacÀÇ Â÷ÀÌÁ¡ - 1.3.5 ¸®´ª½º ȯ°æ¿¡ µµÄ¿ ¸¶·ÃÇϱâ 02Àå: µµÄ¿ ¿£Áø2.1 µµÄ¿ À̹ÌÁö¿Í ÄÁÅ×ÀÌ³Ê - 2.1.1 µµÄ¿ À̹ÌÁö - 2.1.2 µµÄ¿ ÄÁÅ×ÀÌ³Ê 2.2 µµÄ¿ ÄÁÅ×ÀÌ³Ê ´Ù·ç±â - 2.2.1 ÄÁÅ×ÀÌ³Ê »ý¼º - 2.2.2 ÄÁÅ×ÀÌ³Ê ¸ñ·Ï È®ÀÎ - 2.2.3 ÄÁÅ×ÀÌ³Ê »èÁ¦ - 2.2.4 ÄÁÅ×À̳ʸ¦ ¿ÜºÎ¿¡ ³ëÃâ - 2.2.5 ÄÁÅ×ÀÌ³Ê ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà - 2.2.6 µµÄ¿ º¼·ý - 2.2.7 µµÄ¿ ³×Æ®¿öÅ© - 2.2.8 ÄÁÅ×ÀÌ³Ê ·Î±ë - 2.2.9 ÄÁÅ×ÀÌ³Ê ÀÚ¿ø ÇÒ´ç Á¦ÇÑ 2.3 µµÄ¿ À̹ÌÁö - 2.3.1 µµÄ¿ À̹ÌÁö »ý¼º - 2.3.2 À̹ÌÁö ±¸Á¶ ÀÌÇØ - 2.3.3 À̹ÌÁö ÃßÃâ - 2.3.4 À̹ÌÁö ¹èÆ÷ 2.4 Dockerfile - 2.4.1 À̹ÌÁö¸¦ »ý¼ºÇÏ´Â ¹æ¹ý - 2.4.2 Dockerfile ÀÛ¼º - 2.4.3 Dockerfile ºôµå - 2.4.4 ±âŸ Dockerfile ¸í·É¾î - 2.4.5 Dockerfile·Î ºôµåÇÒ ¶§ ÁÖÀÇÇÒ Á¡ 2.5 µµÄ¿ µ¥¸ó - 2.5.1 µµÄ¿ÀÇ ±¸Á¶ - 2.5.2 µµÄ¿ µ¥¸ó ½ÇÇà - 2.5.3 µµÄ¿ µ¥¸ó ¼³Á¤ - 2.5.4 µµÄ¿ µ¥¸ó ¸ð´ÏÅ͸µ - 2.5.5 Remote API ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ µµÄ¿ »ç¿ë 03Àå: µµÄ¿ ½º¿ú3.1 µµÄ¿ ½º¿úÀ» »ç¿ëÇÏ´Â ÀÌÀ¯ 3.2 ½º¿ú Ŭ·¡½Ä°ú µµÄ¿ ½º¿ú ¸ðµå 3.3 ½º¿ú ¸ðµå - 3.3.1 µµÄ¿ ½º¿ú ¸ðµåÀÇ ±¸Á¶ - 3.3.2 µµÄ¿ ½º¿ú ¸ðµå Ŭ·¯½ºÅÍ ±¸Ãà - 3.3.3 ½º¿ú ¸ðµå ¼ºñ½º - 3.3.4 µµÄ¿ ½º¿ú ¸ðµå ³ëµå ´Ù·ç±â 04Àå: µµÄ¿ ÄÄÆ÷Áî4.1 µµÄ¿ ÄÄÆ÷Á »ç¿ëÇÏ´Â ÀÌÀ¯ 4.2 µµÄ¿ ÄÄÆ÷Áî ¼³Ä¡ 4.3 µµÄ¿ ÄÄÆ÷Áî »ç¿ë - 4.3.1 µµÄ¿ ÄÄÆ÷Áî ±âº» »ç¿ë¹ý - 4.3.2 µµÄ¿ ÄÄÆ÷Áî È°¿ë 4.4 µµÄ¿ ÇнÀÀ» ¸¶Ä¡¸ç: µµÄ¿¿Í ÄÁÅ×ÀÌ³Ê »ýÅ°è 05Àå: Äí¹ö³×Ƽ½º ¼³Ä¡5.1 Äí¹ö³×Ƽ½º ¼³Ä¡ ȯ°æÀÇ Á¾·ù 5.2 Äí¹ö³×Ƽ½º ¹öÀü ¼±Åà 5.3 °³¹ß ¿ëµµÀÇ Äí¹ö³×Ƽ½º ¼³Ä¡ - 5.3.1 Docker for Mac / Windows¿¡¼ Äí¹ö³×Ƽ½º »ç¿ë - 5.3.2 Minikube·Î Äí¹ö³×Ƽ½º ¼³Ä¡ 5.4 ¿©·¯ ¼¹ö·Î ±¸¼ºµÈ Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ ¼³Ä¡ - 5.4.1 kubeadmÀ¸·Î Äí¹ö³×Ƽ½º ¼³Ä¡ - 5.4.2 kops·Î AWS¿¡¼ Äí¹ö³×Ƽ½º ¼³Ä¡ - 5.4.3 ±¸±Û Ŭ¶ó¿ìµå Ç÷§ÆûÀÇ GKE·Î Äí¹ö³×Ƽ½º »ç¿ëÇϱâ 06Àå: Äí¹ö³×Ƽ½º ½ÃÀÛÇϱâ6.1 Äí¹ö³×Ƽ½º¸¦ ½ÃÀÛÇϱâ Àü¿¡ 6.2 Æ÷µå(Pod) : ÄÁÅ×À̳ʸ¦ ´Ù·ç´Â ±âº» ´ÜÀ§ - 6.2.1 Æ÷µå »ç¿ëÇϱâ - 6.2.2 Æ÷µå vs. µµÄ¿ ÄÁÅ×ÀÌ³Ê - 6.2.3 ¿ÏÀüÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î¼ÀÇ Æ÷µå 6.3 ·¹Çø®Ä«¼Â(Replica Set) : ÀÏÁ¤ °³¼öÀÇ Æ÷µå¸¦ À¯ÁöÇÏ´Â ÄÁÆ®·Ñ·¯ - 6.3.1 ·¹Çø®Ä«¼ÂÀ» »ç¿ëÇÏ´Â ÀÌÀ¯ - 6.3.2 ·¹Çø®Ä«¼Â »ç¿ëÇϱâ - 6.3.3 ·¹Çø®Ä«¼ÂÀÇ µ¿ÀÛ ¿ø¸® - 6.3.4 ·¹Çø®ÄÉÀÌ¼Ç ÄÁÆ®·Ñ·¯ vs. ·¹Çø®Ä«¼Â 6.4 µðÇ÷ÎÀ̸ÕÆ®(Deployment) : ·¹Çø®Ä«¼Â, Æ÷µåÀÇ ¹èÆ÷¸¦ °ü¸® - 6.4.1 µðÇ÷ÎÀ̸ÕÆ® »ç¿ëÇϱâ - 6.4.2 µðÇ÷ÎÀ̸ÕÆ®¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯ 6.5 ¼ºñ½º(Service) : Æ÷µå¸¦ ¿¬°áÇÏ°í ¿ÜºÎ¿¡ ³ëÃâ - 6.5.1 ¼ºñ½º(Service)ÀÇ Á¾·ù - 6.5.2 ClusterIP ŸÀÔÀÇ ¼ºñ½º - Äí¹ö³×Ƽ½º ³»ºÎ¿¡¼¸¸ Æ÷µå¿¡ Á¢±ÙÇϱâ - 6.5.3 NodePort ŸÀÔÀÇ ¼ºñ½º - ¼ºñ½º¸¦ ÀÌ¿ëÇØ Æ÷µå¸¦ ¿ÜºÎ¿¡ ³ëÃâÇϱâ - 6.5.4 Ŭ¶ó¿ìµå Ç÷§ÆûÀÇ ·Îµå ¹ë·±¼¿Í ¿¬µ¿Çϱâ - LoadBalancer ŸÀÔÀÇ ¼ºñ½º - 6.5.5 Æ®·¡ÇÈÀÇ ºÐ¹è¸¦ °áÁ¤ÇÏ´Â ¼ºñ½º ¼Ó¼º - externalTrafficPolicy - 6.5.6 ¿äûÀ» ¿ÜºÎ·Î ¸®´ÙÀÌ·ºÆ®ÇÏ´Â ¼ºñ½º - ExternalName 07Àå: Äí¹ö³×Ƽ½º ¸®¼Ò½ºÀÇ °ü¸®¿Í ¼³Á¤7.1 ³×ÀÓ½ºÆäÀ̽º(Namespace) : ¸®¼Ò½º¸¦ ³í¸®ÀûÀ¸·Î ±¸ºÐÇÏ´Â À庮 7.2 ÄÁÇDZ׸Ê(Configmap), ½ÃÅ©¸´(Secret) : ¼³Á¤°ªÀ» Æ÷µå¿¡ Àü´Þ - 7.2.1 ÄÁÇDZ׸Ê(Configmap) - 7.2.2 ½ÃÅ©¸´(Secret) 08Àå: Àα׷¹½º(Ingress)8.1 Àα׷¹½º¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯ 8.2 Àα׷¹½ºÀÇ ±¸Á¶ 8.3 Àα׷¹½ºÀÇ ¼¼ºÎ ±â´É : annotationÀ» ÀÌ¿ëÇÑ ¼³Á¤ 8.4 Nginx Àα׷¹½º ÄÁÆ®·Ñ·¯¿¡ SSL/TLS º¸¾È ¿¬°á Àû¿ë 8.5 ¿©·¯ °³ÀÇ Àα׷¹½º ÄÁÆ®·Ñ·¯ »ç¿ëÇϱâ 09Àå: Æ۽ýºÅÏÆ® º¼·ý(PV)°ú Æ۽ýºÅÏÆ® º¼·ý Ŭ·¹ÀÓ(PVC) 9.1 ·ÎÄà º¼·ý : hostPath, emptyDir - 9.1.1 ¿öÄ¿ ³ëµåÀÇ ·ÎÄà µð·ºÅ͸®¸¦ º¼·ýÀ¸·Î »ç¿ë : hostPath - 9.1.2 Æ÷µå ³»ÀÇ ÄÁÅ×ÀÌ³Ê °£ Àӽà µ¥ÀÌÅÍ °øÀ¯ : emptyDir 9.2 ³×Æ®¿öÅ© º¼·ý 9.3 PV, PVC¸¦ ÀÌ¿ëÇÑ º¼·ý °ü¸® - 9.3.1 Æ۽ýºÅÏÆ® º¼·ý°ú Æ۽ýºÅÏÆ® º¼·ý Ŭ·¹ÀÓÀ» »ç¿ëÇÏ´Â ÀÌÀ¯ - 9.3.2 Æ۽ýºÅÏÆ® º¼·ý°ú Æ۽ýºÅÏÆ® º¼·ý Ŭ·¹ÀÓ »ç¿ëÇϱâ - 9.3.3 Æ۽ýºÅÏÆ® º¼·ýÀ» ¼±ÅÃÇϱâ À§ÇÑ Á¶°Ç ¸í½Ã - 9.3.4 Æ۽ýºÅÏÆ® º¼·ýÀÇ ¶óÀÌÇÁ»çÀÌŬ°ú Reclaim Policy - 9.3.5 StorageClass¿Í Dynamic Provisioning 10Àå: º¸¾ÈÀ» À§ÇÑ ÀÎÁõ°ú Àΰ¡ - ServiceAccount¿Í RBAC10.1 Äí¹ö³×Ƽ½ºÀÇ ±ÇÇÑ ÀÎÁõ °úÁ¤ 10.2 ¼ºñ½º ¾îÄ«¿îÆ®¿Í ·Ñ(Role), Ŭ·¯½ºÅÍ ·Ñ(Cluster Role) 10.3 Äí¹ö³×Ƽ½º API ¼¹ö¿¡ Á¢±Ù - 10.3.1 ¼ºñ½º ¾îÄ«¿îÆ®ÀÇ ½ÃÅ©¸´À» ÀÌ¿ëÇØ Äí¹ö³×Ƽ½º API ¼¹ö¿¡ Á¢±Ù - 10.3.2 Ŭ·¯½ºÅÍ ³»ºÎ¿¡¼ kubernetes ¼ºñ½º¸¦ ÅëÇØ API ¼¹ö¿¡ Á¢±Ù - 10.3.3 Äí¹ö³×Ƽ½º SDK¸¦ ÀÌ¿ëÇØ Æ÷µå ³»ºÎ¿¡¼ API ¼¹ö¿¡ Á¢±Ù 10.4 ¼ºñ½º ¾îÄ«¿îÆ®¿¡ À̹ÌÁö ·¹Áö½ºÆ®¸® Á¢±ÙÀ» À§ÇÑ ½ÃÅ©¸´ ¼³Á¤ 10.5 kubeconfig ÆÄÀÏ¿¡ ¼ºñ½º ¾îÄ«¿îÆ® ÀÎÁõ Á¤º¸ ¼³Á¤ 10.6 À¯Àú(User)¿Í ±×·ì(Group)ÀÇ °³³ä 10.7 x509 ÀÎÁõ¼¸¦ ÀÌ¿ëÇÑ »ç¿ëÀÚ ÀÎÁõ 11Àå: ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷¸¦ À§ÇÑ °í±Þ ¼³Á¤11.1 Æ÷µåÀÇ ÀÚ¿ø »ç¿ë·® Á¦ÇÑ - 11.1.1 ÄÁÅ×ÀÌ³Ê¿Í Æ÷µåÀÇ ÀÚ¿ø »ç¿ë·® Á¦ÇÑ : Limit - 11.1.2 ÄÁÅ×ÀÌ³Ê¿Í Æ÷µåÀÇ ÀÚ¿ø »ç¿ë·® Á¦ÇÑÇϱâ : Request - 11.1.3 CPU ÀÚ¿ø »ç¿ë·®ÀÇ Á¦ÇÑ ¿ø¸® - 11.1.4 QoS Ŭ·¡½º¿Í ¸Þ¸ð¸® ÀÚ¿ø »ç¿ë·® Á¦ÇÑ ¿ø¸® - 11.1.5 ResourceQuota¿Í LimitRanger - 11.1.6 ResourceQuota, LimitRangerÀÇ ¿ø¸® : Admission Controller 11.2 Äí¹ö³×Ƽ½º ½ºÄÉÁÙ¸µ - 11.2.1 Æ÷µå°¡ ½ÇÁ¦·Î ³ëµå¿¡ »ý¼ºµÇ±â±îÁöÀÇ °úÁ¤ - 11.2.2 Æ÷µå°¡ »ý¼ºµÉ ³ëµå¸¦ ¼±ÅÃÇÏ´Â ½ºÄÉÁÙ¸µ °úÁ¤ - 11.2.3 NodeSelector¿Í Node Affinity, Pod Affinity - 11.2.4 Taints¿Í Tolerations »ç¿ëÇϱâ - 11.2.5 Cordon, Drain ¹× PodDistributionBudget - 11.2.6 Ä¿½ºÅÒ ½ºÄÉÁÙ·¯ ¹× ½ºÄÉÁÙ·¯ È®Àå 11.3 Äí¹ö³×Ƽ½º ¾ÖÇø®ÄÉÀÌ¼Ç »óÅÂ¿Í ¹èÆ÷ - 11.3.1 µðÇ÷ÎÀ̸ÕÆ®¸¦ ÅëÇØ ·Ñ¸µ ¾÷µ¥ÀÌÆ® - 11.3.2 Æ÷µåÀÇ »ý¾Ö ÁÖ±â(Lifecycle) - 11.3.3 HPA¸¦ È°¿ëÇÑ ¿ÀÅ佺ÄÉÀϸµ 12Àå: Ä¿½ºÅÒ ¸®¼Ò½º¿Í ÄÁÆ®·Ñ·¯12.1 Äí¹ö³×Ƽ½º ÄÁÆ®·Ñ·¯ÀÇ °³³ä°ú µ¿ÀÛ ¹æ½Ä 12.2 Ä¿½ºÅÒ ¸®¼Ò½º¿¡ ´ëÇÑ °³³ä 12.3 Ä¿½ºÅÒ ¸®¼Ò½º¸¦ Á¤ÀÇÇϱâ À§ÇÑ CRD(Custom Resource Definition) 12.4 Ä¿½ºÅÒ ¸®¼Ò½º¿Í ÄÁÆ®·Ñ·¯ 13Àå: Æ÷µå¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ¿ÀºêÁ§Æ®µé13.1 Àâ(Jobs) 13.2 µ¥¸ó¼Â(DaemonSets) 13.3 ½ºÅ×ÀÌƮǮ¼Â(StatefulSets) 14Àå: Äí¹ö³×Ƽ½º ¸ð´ÏÅ͸µ14.1 ¸ð´ÏÅ͸µ ±âº» ±¸Á¶ 14.2 ¸ð´ÏÅ͸µ ¸ÞÆ®¸¯ÀÇ ºÐ·ù 14.3 Äí¹ö³×Ƽ½º ¸ð´ÏÅ͸µ ±âÃÊ - 14.3.1 metrics-server - 14.3.2 metrics-server µ¿ÀÛ ¿ø¸®: APIService ¸®¼Ò½º - 14.3.3 kube-state-metrics - 14.3.4 node-exporter 14.4 ÇÁ·Î¸ÞÅ׿콺¸¦ È°¿ëÇÑ ¸ÞÆ®¸¯ ¼öÁý - 14.4.1 ÇÁ·Î¸ÞÅ׿콺 ¼³Ä¡ - 14.4.2 ÇÁ·Î¸ÞÅ׿콺·Î ¸ÞÆ®¸¯ ¼öÁýÇϱâ - 14.4.3 ±×¶óÆijª·Î ÇÁ·Î¸ÞÅ׿콺 ¸ÞÆ®¸¯ ½Ã°¢ÈÇϱâºÎ·Ï ºÎ·ÏA: µµÄ¿ µ¥¸ó ½ÃÀÛ ¿É¼Ç º¯°æÇϱâºÎ·ÏB: ƯÁ¤ ¹öÀüÀÇ µµÄ¿ ¼³Ä¡ÇϱâºÎ·ÏC: gcloud ¸í·É¾î ¼³Ä¡ÇϱâºÎ·ÏD: AWS CLI ¼³Ä¡Çϱâ