Ã¥¼Ò°³
Azure¸¦ »ç¿ëÇÑ Äí¹ö³×Ƽ½ºÀÇ °³³ä Æľǰú ½ÇÀü ÀÀ¿ëÀÌ Ã¥Àº Äí¹ö³×Ƽ½º¸¦ óÀ½ »ç¿ëÇÏ´Â ¾÷¹« ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ ¹× µµÄ¿¿¡ ´ëÇÑ ±âÃÊ Áö½ÄÀÌ ÀÖ´Â ºÐÀ» ´ë»óÀ¸·Î ÄÁÅ×ÀÌ³Ê ¿ÀÄɽºÆ®·¹ÀÌ¼Ç ÅøÀÎ [Äí¹ö³×Ƽ½ºÀÇ ±¸Á¶]¿Í [±âº»ÀûÀÎ ±â´É°ú ³»ºÎ µ¿ÀÛ]À» ¼³¸íÇÑ Ã¥ÀÔ´Ï´Ù.ÇÑÁ¤µÈ ½Ã°£ ¾È¿¡¼ È¿À²ÀûÀ¸·Î ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï °¡´ÉÇÑ ÇÑ Ãß»óÀûÀÌ°í ³ÇØÇÑ ¸»À» Áö¾çÇÏ°í, ±×¸²À̳ª ÀÏ·¯½ºÆ®¸¦ ³Ö¾î¼ ÀÚ¼¼ÇÏ°í ¾Ë±â ½±°Ô ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù. ¶ÇÇÑ ½ÇÁ¦·Î ½Ã½ºÅÛ¿¡ µµÀÔÇÒ ¶§ °ËÅäÇØ¾ß ÇÏ´Â ½Ã½ºÅÛÀÇ °¡¿ë¼ºÀ̳ª È®À强, À¯Áöº¸¼ö¼º°ú °°ÀÌ ±âÃÊ°¡ µÇ´Â °³³äµµ ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù.
ÀúÀÚ¼Ò°³
±ÝÀ¶°è¿ ½ÌÅ©ÅÊÅ© µî¿¡¼ ÀºÇà ¹× Áõ±Ç»ç¿ë ÀÎÇÁ¶ó ¿£Áö´Ï¾î, Á¦Á¶¾÷¿ë ÀÎÇÁ¶ó ¿£Áö´Ï¾î·Î ±Ù¹«Çß´Ù. µµ½ÃÀºÇà Á¤º¸ ±â¹Ý ½Ã½ºÅÛ ±¸Ãà ¹× ½Ã½ºÅÛ ÅëÆóÇÕ, Áõ±Çȸ»ç¿ë ¹é¿ÀÇǽº ½Ã½ºÅÛÀÇ °øÅë ±â¹Ý °³¹ß ¹× ÅëÇÕÀÎÁõ ±â¹Ý ±¸Ãà ÇÁ·ÎÁ§Æ®, ¼®À¯/LNG °øÀå °Ç¼³À» ÇÏ´Â ¿£Áö´Ï¾î¸µ ±â¾÷ÀÇ ½Ã½ºÅÛ ±â¹Ý ±¸Ãà ÇÁ·ÎÁ§Æ® µîÀ» °æÇèÇß´Ù. Ãâ»êÀ¸·Î ÅðÁ÷ ÈÄ Linux³ª Ŭ¶ó¿ìµå µîÀ» µ¶ÇÐÀ¸·Î °øºÎÇÏ¿© Ãʺ¸ÀÚ¿ë ±â¼ú¼¸¦ ÁýÇÊÇßÀ¸¸ç, ÇöÀç´Â ÀϺ» ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ÁÖ½Äȸ»ç¿¡¼ ÆÄÆ®³Ê¿ë ¿µ¾÷È°µ¿°ú ±â¼úÁö¿ø µî¿¡ Á¾»çÇÏ°í ÀÖ´Ù. ÁÖ¿ä Àú¼·Î´Â ¡º¿Ïº®ÇÑ IT ÀÎÇÁ¶ó ±¸ÃàÀ» À§ÇÑ Docker (2ÆÇ)¡» µîÀÌ ÀÖ´Ù.
¸ñÂ÷
Á¦1ºÎ µµÀÔÆíCHAPTER 01 ÄÁÅ×ÀÌ³Ê¿Í Äí¹ö³×Ƽ½º1.1 ÄÁÅ×ÀÌ³Ê ±â¼úÀÇ °³¿äÄÁÅ×À̳ʶõ?ÄÁÅ×ÀÌ³Ê ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÇ È帧1.2 Äí¹ö³×Ƽ½ºÀÇ °³¿äºÐ»ê ȯ°æ¿¡¼ ÄÁÅ×ÀÌ³Ê ¿î¿ë °ü¸®Äí¹ö³×Ƽ½ºÀÇ Æ¯Â¡Äí¹ö³×Ƽ½ºÀÇ µµÀÔÄí¹ö³×Ƽ½ºÀÇ À¯½ºÄÉÀ̽º1.3 Á¤¸®
CHAPTER 02 Äí¹ö³×Ƽ½ºÀÇ È¯°æ ±¸Ãà2.1 ÄÁÅ×ÀÌ³Ê ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÇ È帧Äí¹ö³×Ƽ½º¸¦ »ç¿ëÇÑ °³¹ß ¹× ¿î¿ëÀÇ È帧AzureÀÇ Äí¹ö³×Ƽ½º °ü·Ã ¼ºñ½º2.2 °³¹ß ȯ°æÀÇ ÁغñVisual Studio Code ¼³Ä¡Azure CLI ¸í·ÉÀÇ ¼³Ä¡Kubectl ¸í·ÉÀÇ ¼³Ä¡Azure Cloud Shell ÀÌ¿ë2.3 ÄÁÅ×ÀÌ³Ê À̹ÌÁöÀÇ ºôµå¿Í °ø°³Azure Container RegistryACRÀ» »ç¿ëÇÑ ÄÁÅ×ÀÌ³Ê À̹ÌÁö ºôµå¿Í °øÀ¯2.4 Azure¸¦ »ç¿ëÇÑ Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ ÀÛ¼ºAKS¸¦ »ç¿ëÇÑ Å¬·¯½ºÅÍ ±¸Ãàkubectl ¸í·ÉÀ» »ç¿ëÇÑ Å¬·¯½ºÅÍÀÇ ±âº» Á¶ÀÛ2.5 Á¤¸®
CHAPTER 03 Äí¹ö³×Ƽ½º¸¦ ¿òÁ÷¿©º¸ÀÚ3.1 ¾ÖÇø®ÄÉÀ̼ÇÀÇ µðÇ÷ÎÀ̵ðÇ÷ÎÀÌÀÇ ±âº» È帧3.2 ¸Å´ÏÆ佺Ʈ ÆÄÀÏÀÇ ÀÛ¼ºÄÁÅ×ÀÌ³Ê ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤Çϱ⼺ñ½º ¼³Á¤Çϱâ3.3 Ŭ·¯½ºÅÍ¿¡¼ ¸®¼Ò½º ÀÛ¼º¾ÖÇø®ÄÉÀÌ¼Ç µðÇ÷ÎÀÌÇϱ⼺ñ½º °ø°³Çϱâ3.4 ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¿ÀÛ È®ÀÎ3.5 Á¤¸®
Á¦2ºÎ ±âº»ÆíCHAPTER 04 Äí¹ö³×Ƽ½ºÀÇ ¿äÁ¡4.1 Äí¹ö³×Ƽ½ºÀÇ °³³äImmutable Infrastructure¼±¾ðÀû ¼³Á¤Àڱ⠺¹±¸ ±â´É4.2 Äí¹ö³×Ƽ½ºÀÇ ±¸Á¶½ºÄÉÁÙ¸µ°ú µð½ºÄ¿¹ö¸®Äí¹ö³×Ƽ½ºÀÇ ¼¹ö ±¸¼ºÄí¹ö³×Ƽ½ºÀÇ ÄÄÆ÷³ÍƮŬ·¯½ºÅÍ¿¡ ¾×¼¼½ºÇϱâ À§ÇÑ ÀÎÁõ Á¤º¸4.3 Äí¹ö³×Ƽ½ºÀÇ ¸®¼Ò½º¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇà(Pod/ReplicaSet/Deployment)³×Æ®¿öÅ© °ü¸®(Service/Ingress)¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤ Á¤º¸ °ü¸®(ConfigMap/Secrets)¹èÄ¡ Àâ °ü¸®(Job/CronJob)4.4 ¸Å´ÏÆ佺Ʈ ÆÄÀϸŴÏÆ佺Ʈ ÆÄÀÏÀÇ ±âº»YAMLÀÇ ¹®¹ý4.5 ¶óº§À» »ç¿ëÇÑ ¸®¼Ò½º °ü¸®¶óº§(Label)LabelSelector¸¦ »ç¿ëÇÑ ¸®¼Ò½º °Ë»ö4.6 Äí¹ö³×Ƽ½ºÀÇ ¸®¼Ò½º ºÐ¸®4.7 Á¤¸®
CHAPTER 05 ÄÁÅ×ÀÌ³Ê ¾ÖÇø®ÄÉÀ̼ÇÀÇ ½ÇÇà5.1 Æ÷µå¸¦ »ç¿ëÇÑ ÄÁÅ×ÀÌ³Ê ¾ÖÇø®ÄÉÀ̼ÇÀÇ °ü¸®Æ÷µå¸Å´ÏÆ佺Ʈ ÆÄÀÏÆ÷µåÀÇ ÀÛ¼º, º¯°æ, »èÁ¦Æ÷µåÀÇ µðÀÚÀÎ ÆÐÅÏ5.2 Æ÷µåÀÇ ½ºÄÉÁÙ¸µ ±¸Á¶Æ÷µå°¡ ¾î¶»°Ô ¹èÄ¡µÇ´Â°¡?Æ÷µå¸¦ ¹èÄ¡ÇÏ´Â ³ëµå´Â ¾î¶»°Ô Á¤Çϴ°¡?Æ÷µå¸¦ ¿òÁ÷ÀÌ´Â ³ëµå¸¦ ¸í½ÃÀûÀ¸·Î ¼³Á¤Çϱâ5.3 Æ÷µå¸¦ È¿À²ÀûÀ¸·Î ¿òÁ÷ÀÌÀÚ³ëµåÀÇ CPU¿Í ¸Þ¸ð¸® ¸®¼Ò½º È®ÀÎÇϱâÆ÷µå¿¡ ÇÊ¿äÇÑ ¸Þ¸ð¸®¿Í CPU¸¦ ÇÒ´çÇϱâÆ÷µåÀÇ ¸Þ¸ð¸®¿Í CPUÀÇ »óÇÑ°ª ¼³Á¤ÇϱâÆ÷µå¿¡ ¿À·ù°¡ ¹ß»ýÇÏ¸é ¾î¶»°Ô ¿òÁ÷À̴°¡?Æ÷µåÀÇ ¿ì¼±¼øÀ§(QoS)5.4 Æ÷µå¸¦ °¨½ÃÇÏÀÚÄÁÅ×ÀÌ³Ê ¾ÖÇø®ÄÉÀ̼ÇÀÇ °¨½ÃHTTP ¸®Äù½ºÆ®ÀÇ ¹Ýȯ°ªÀ» üũÇϱâTCP SocketÀ¸·Î ¿¬°áÇÒ ¼ö ÀÖ´ÂÁö üũÇϱâ¸í·ÉÀÇ ½ÇÇà °á°ú¸¦ üũÇϱâ5.5 ¸®Çø®Ä«¼ÂÀ¸·Î ¿©·¯ Æ÷µå¸¦ °ü¸®ÇÏÀÚ¸®Çø®Ä«¼Â(ReplicaSet)¸Å´ÏÆ佺Ʈ ÆÄÀϸ®Çø®Ä«¼ÂÀÇ ÀÛ¼º, º¯°æ, »èÁ¦Å¬·¯½ºÅÍ ¾ÈÀÇ »óŸ¦ ¾î¶»°Ô Á¦¾îÇϴ°¡?Æ÷µå Àå¾Ö°¡ ¹ß»ýÇÏ¸é ¾î¶»°Ô µÉ±î?³ëµå Àå¾Ö°¡ ¹ß»ýÇϸé Æ÷µå´Â ¾î¶»°Ô µÉ±î?5.6 ºÎÇÏ¿¡ µû¶ó Æ÷µåÀÇ ¼ö¸¦ ¹Ù²ã º¸ÀÚ½ºÄÉÀÏ·¯ºô¸®Æ¼Æ÷µå¸¦ ¼öµ¿À¸·Î ¼öÆò ½ºÄÉÀÏÇϱâÆ÷µå¸¦ ÀÚµ¿À¸·Î ¼öÆò ½ºÄÉÀÏÇϱâHPAÀÇ ±¸Á¶5.7 Á¤¸®
CHAPTER 06 ¾ÖÇø®ÄÉÀÌ¼Ç µðÇ÷ÎÀÌ6.1 µðÇ÷ÎÀ̸ÕÆ®¸¦ »ç¿ëÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç µðÇ÷ÎÀ̾ÖÇø®ÄÉÀ̼ÇÀÇ ¹öÀü¾÷ °³³äµðÇ÷ÎÀ̸ÕÆ®¸Å´ÏÆ佺Ʈ ÆÄÀϵðÇ÷ÎÀ̸ÕÆ® ÀÛ¼º, º¯°æ, »èÁ¦6.2 µðÇ÷ÎÀ̸ÕÆ®ÀÇ ±¸Á¶¾÷µ¥ÀÌÆ® ó¸® ¹æ½Ä·Ñ¾Æ¿ô·Ñ¹é·Ñ¾Æ¿ô Á¶°Ç·Ñ¸µ ¾÷µ¥ÀÌÆ® Á¦¾îºí·ç/±×¸° µðÇ÷ÎÀ̸ÕÆ®6.3 ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼³Á¤ Á¤º¸¸¦ °ü¸®ÇÏÀÚ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼³Á¤ Á¤º¸ °ü¸®ConfigMap °ª ÂüÁ¶ºñ¹Ð¹øÈ£¿Í Å° °ü¸®Secrets °ª ÂüÁ¶6.4 Á¤¸®
Á¦3ºÎ ½ÇÀüÆíCHAPTER 07 ¾ÆÅ°ÅØó¿Í ¼³°è ¿øÄ¢7.1 Äí¹ö³×Ƽ½ºÀÇ ¾ÆÅ°ÅØóÀÎÇÁ¶ó½ºÆ®·°Ã³¿ÍÀÇ °ü°è7.2 Äí¹ö³×Ƽ½ºÀÇ ¼³°è ¿øÄ¢Reconciliation Loops¿Í ·¹º§ Æ®¸®°Å ·ÎÁ÷APIÀÇ watch ¿É¼ÇÀ̺¥Æ® üÀÎ7.3 ¼ºñ½º¿Í Á¦Ç°ÀÇ ±¸ÃàÄí¹ö³×Ƽ½º Conformance PartnerÄí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ¿¡ ÇÊ¿äÇÑ ÀÎÇÁ¶ó½ºÆ®·°Ã³Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ ±¸Ãà¿¡ ÇÊ¿äÇÑ ÀÛ¾÷AKSÀÇ ¾ÆÅ°ÅØó¿Í Cloud Controller Manager7.4 Á¤¸®
CHAPTER 08 °¡¿ë¼º(Availability)8.1 Äí¹ö³×Ƽ½ºÀÇ °¡¿ë¼º¸¶½ºÅÍÀÇ °¡¿ë¼º(¸ðµÎ ¾×ƼºêÇÑ etcd¿Í API Server)¸¶½ºÅÍÀÇ °¡¿ë¼º(¾×Ƽºê/½ºÅĹÙÀÌ ÄÄÆ÷³ÍÆ®)³ëµåÀÇ °¡¿ë¼ººÐ»ê ¼ö¸¦ ¾î¶»°Ô ÇÒ±î? (¸¶½ºÅÍ)ºÐ»ê ¼ö¸¦ ¾î¶»°Ô ÇÒ±î? (³ëµå)8.2 ÀÎÇÁ¶ó½ºÆ®·°Ã³ÀÇ ½ÃÁ¡Blast Radius(Æø¹ß ¹Ý°æ)¼ÒÇÁÆ®¿þ¾îÀûÀÎ Blast Radius¹èÄ¡ ¿¹¹°¸® ¼¹ö¸¦ ÀǽÄÇÑ ¹èÄ¡·¢À» ÀǽÄÇÑ ¹èÄ¡µ¥ÀÌÅÍ ¼¾Å͸¦ ÀǽÄÇÑ ¹èÄ¡±¤¿ª ÀçÇظ¦ ÀǽÄÇÑ ¹èÄ¡AKSÀÇ ±¸Ãà ¿¹8.3 Á¤¸®
CHAPTER 09 È®À强(Scalability)9.1 Äí¹ö³×Ƽ½º ³ëµåÀÇ ¼öÆò ÀÚµ¿ ½ºÄÉÀÏCluster Autoscaler9.2 AKS¿¡ ÀÖ¾î¼ Cluster AutoscalerPending »óŸ¦ ¸¸µé¾î ³½´ÙCluster AutoscalerÀÇ µµÀÔ³ëµå ½ºÄÉÀÏ ¾Æ¿ô³ëµå ¼öÀÇ »óÇÑ, ÇÏÇÑ ¼³Á¤³ëµå ½ºÄÉÀÏ ÀÎÀÎÇÁ¶ó½ºÆ®·°Ã³ Á¶ÀÛ ±ÇÇÑ ¹× ½ÃÅ©¸´ °ü¸®9.3 ±âŸ ÀÚµ¿ ½ºÄÉÀÏHPA¿Í Cluster AutoscalerÀÇ ¿¬µ¿Äí¹ö³×Ƽ½º ¿ÜºÎÀÇ ¸ÞÆ®¸¯À» »ç¿ëÇÑ ÀÚµ¿ ½ºÄÉÀÏ9.4 Á¤¸®
CHAPTER 10 À¯Áöº¸¼ö¼º(Manageability)10.1 Äí¹ö³×Ƽ½º ¿î¿ë¿¡¼ ÇÊ¿äÇÑ ¾÷µ¥ÀÌÆ® ¹× ¾÷±×·¹À̵å ÀÛ¾÷10.2 ¼¹ö ¾÷µ¥ÀÌÆ®³ëµå Àç½ÃÀÛÀÇ ¿µÇâÀ» ÃÖ¼ÒÇÑÀ¸·Î ÇÏ´Â ÀåÄ¡Cordon/UncordonDrainPodDisruptionBudget³ëµå Àç½ÃÀÛÀ» ÀÚµ¿À¸·Î ¼öÇàÇÏ·Á¸é10.3 Äí¹ö³×Ƽ½º ÄÄÆ÷³ÍÆ® ¾÷µ¥ÀÌÆ®kubeadmÀ» »ç¿ëÇÑ ¿¹(v1.10 -> v1.11)¾÷±×·¹À̵å Àü·«(ÀÎÇ÷¹À̽º)¾÷±×·¹À̵å Àü·«(ºí·ç/±×¸° µðÇ÷ÎÀ̸ÕÆ®)10.4 Á¤¸®
CHAPTER 11 ¸®¼Ò½º ºÐ¸®(Security)11.1 Äí¹ö³×Ƽ½º ¸®¼Ò½ºÀÇ ºÐ¸® ´ÜÀ§»ç¶÷°ú Á¶Á÷, Ã¥ÀÓ ¹üÀ§Å¬·¯½ºÅÍ ºÐ¸®ÀÇ Àå´ÜÁ¡11.2 ³×ÀÓ½ºÆäÀ̽º¸¦ »ç¿ëÇÑ ºÐ¸®³×ÀÓ½ºÆäÀ̽º Á¤¸®11.3 Äí¹ö³×Ƽ½ºÀÇ °èÁ¤»ç¿ëÀÚ °èÁ¤(User Account)¼ºñ½º °èÁ¤(Service Account)11.4 Äí¹ö³×Ƽ½ºÀÇ ÀÎÁõ°ú Àΰ¡ÀÎÁõÀΰ¡Admission Control11.5 RBAC(Role Based Access Control)¸®¼Ò½º Ç¥Çö°ú Á¶ÀÛRole°ú RoleBinding»ç¿ëÀÚ¿Í RoleÀÇ ¿¬°á¼ºñ½º °èÁ¤°ú RoleÀÇ ¿¬°á11.6 ¸®¼Ò½º ÀÌ¿ë·®ÀÇ Á¦ÇÑLimitRangeResourceQuota¼¼ °¡Áö »óÇÑ ¼³Á¤ ±â´ÉÀÇ ±¸ºÐ11.7 Á¤¸®
CHAPTER 12 °üÃø°¡´É¼º(Observability)12.1 °üÃø°¡´É¼ºÀ̶õ¿ë¾îÀÇ Åº»ý ¹è°æÄí¹ö³×Ƽ½º ȯ°æÀÇ °üÃø°¡´É¼º12.2 °üÃø ´ë»ó°ú ¹æ¹ý¸ÞÆ®¸¯·Î±×ºÐ»ê Æ®·¹À̽Ì12.3 ´ëÇ¥ÀûÀÎ ¼ÒÇÁÆ®¿þ¾î¿Í ¼ºñ½º12.4 AKSÀÇ ¸ÞÆ®¸¯ ¼öÁý°ú °¡½ÃÈ, ·Î±× ºÐ¼®Azure MonitorAzure Monitor for ContainersAzure Log Analytics12.5 Á¤¸®
APPENDIX ¸í·É ·¹ÆÛ·±½ºA.1 kubectl ¸í·ÉA.2 Azure CLI ¸í·É
ÇÑÁÙ ¼Æò