Ã¥¼Ò°³
¡ºµµÄ¿/Äí¹ö³×Ƽ½º¸¦ È°¿ëÇÑ ÄÁÅ×ÀÌ³Ê °³¹ß ½ÇÀü ÀÔ¹®¡»Àº µµÄ¿¿Í Äí¹ö³×Ƽ½º¿¡ ´ëÇÑ ±âÃÊ ½Ç·ÂÀ» Å°¿ì°í, ÄÁÅ×À̳ʿ¡ Ä£ÈÀûÀÎ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϱâ À§ÇÑ Æ÷ÀÎÆ®, ´õ ³ª¾Æ°¡ ½ÇÁ¦ ¿î¿µ ȯ°æ¿¡ ÀûÇÕÇÑ ±âº»ÀûÀÎ ±â¹ý ¹× ³ëÇϿ츦 Àü´ÞÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºÇÏ¿´´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß¿¡¼ ÄÁÅ×À̳ʰ¡ Çʼö ½ºÅ³ÀÌ µÇ¾î°¡´Âµ¥, ¾ÆÁ÷ ÄÁÅ×À̳ʰ¡ ¹ºÁö ¸ð¸£´Â °³¹ßÀÚ³ª ÄÁÅ×À̳ʸ¦ ¿î¿µÈ¯°æ¿¡ µµÀÔÇϱâ´Â ¾ÆÁ÷ µÎ·Æ´Ù°Å³ª, À̸§Àº µé¾îºÃÁö¸¸ »ç¿ëÇغ» ÀûÀÌ ¾ø´Â µ¶ÀÚ¿¡°Ô ²À ÇÊ¿äÇÑ ÄÁÅ×ÀÌ³Ê °³¹ß ½Ç¹«¸¦ ÀÍÈú µ¥ ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
¸ñÂ÷
01Àå: µµÄ¿ÀÇ ±âÃÊ01. µµÄ¿¶õ ¹«¾ùÀΰ¡ µµÄ¿ÀÇ ¿ª»ç µµÄ¿ÀÇ ±âº» °³³ä µµÄ¿ ½ºÅ¸ÀÏ Ã¼ÇèÇϱâ ȯ°æ Â÷ÀÌ·Î ÀÎÇÑ ¹®Á¦ ¹æÁö 02. µµÄ¿¸¦ »ç¿ëÇÏ´Â ÀÇÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸¼º °ü¸®ÀÇ ¿ëÀ̼º ¿î¿µ ȯ°æ¿¡¼ ºûÀ» ¹ßÇÏ´Â µµÄ¿ »õ·Î¿î °³¹ß ½ºÅ¸ÀÏ 03. ·ÎÄà µµÄ¿ ȯ°æ ±¸ÃàÇϱâ À©µµ¿ì¿ë µµÄ¿ ¼³Ä¡ macOS¿ë µµÄ¿ ¼³Ä¡ À©µµ¿ì¿ë/macOS¿ë µµÄ¿ ±âº» ¼³Á¤ 02Àå: µµÄ¿ ÄÁÅ×ÀÌ³Ê ¹èÆ÷01. ÄÁÅ×À̳ʷΠ¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇàÇϱ⠵µÄ¿ À̹ÌÁö¿Í µµÄ¿ ÄÁÅ×ÀÌ³Ê °£´ÜÇÑ ¾ÖÇø®ÄÉÀ̼ǰú µµÄ¿ À̹ÌÁö ¸¸µé±â µµÄ¿ À̹ÌÁö ºôµåÇϱ⠵µÄ¿ ÄÁÅ×ÀÌ³Ê ½ÇÇà 02. µµÄ¿ À̹ÌÁö ´Ù·ç±â docker image build - À̹ÌÁö ºôµå docker search - À̹ÌÁö °Ë»ö docker image pull - À̹ÌÁö ³»·Á¹Þ±â docker image ls - º¸À¯ÇÑ µµÄ¿ À̹ÌÁö ¸ñ·Ï º¸±â docker image tag - À̹ÌÁö¿¡ ÅÂ±× ºÙÀ̱â docker image push - À̹ÌÁö¸¦ ¿ÜºÎ¿¡ °ø°³Çϱâ 03. µµÄ¿ ÄÁÅ×ÀÌ³Ê ´Ù·ç±â µµÄ¿ ÄÁÅ×À̳ÊÀÇ »ý¾ÖÁÖ±â docker container run - ÄÁÅ×ÀÌ³Ê »ý¼º ¹× ½ÇÇà docker container ls - µµÄ¿ ÄÁÅ×ÀÌ³Ê ¸ñ·Ï º¸±â docker container stop - ÄÁÅ×ÀÌ³Ê Á¤ÁöÇϱâ docker container restart - ÄÁÅ×ÀÌ³Ê Àç½ÃÀÛÇϱâ docker container rm - ÄÁÅ×ÀÌ³Ê ÆıâÇϱâ docker container logs Ç¥ÁØ Ãâ·Â ¿¬°áÇϱâ docker container exec - ½ÇÇà ÁßÀÎ ÄÁÅ×À̳ʿ¡¼ ¸í·É ½ÇÇàÇϱâ docker container cp - ÆÄÀÏ º¹»çÇϱâ prune - ÄÁÅ×ÀÌ³Ê ¹× À̹ÌÁö Æıâ 04. ¿î¿µ°ú °ü¸®¸¦ À§ÇÑ ¸í·É docker container stats - »ç¿ë ÇöȲ È®ÀÎÇϱâ 05. µµÄ¿ ÄÄÆ÷Áî·Î ¿©·¯ ÄÁÅ×ÀÌ³Ê ½ÇÇàÇϱâ docker-compose ¸í·ÉÀ¸·Î ÄÁÅ×ÀÌ³Ê ½ÇÇàÇϱâ 06. ÄÄÆ÷Áî·Î ¿©·¯ ÄÁÅ×ÀÌ³Ê ½ÇÇàÇϱâ Á¨Å²½º ÄÁÅ×ÀÌ³Ê ½ÇÇàÇϱ⠸¶½ºÅÍ Á¨Å²½º ¿ë SSH Å° »ý¼º ½½·¹À̺ê Á¨Å²½º ÄÁÅ×ÀÌ³Ê »ý¼º 03Àå: ÄÁÅ×ÀÌ³Ê ½ÇÀü ±¸Ãà ¹× ¹èÆ÷01. ¾ÖÇø®ÄÉÀ̼ǰú ½Ã½ºÅÛ ³» ´ÜÀÏ ÄÁÅ×À̳ÊÀÇ ÀûÁ¤ ºñÁß ÄÁÅ×ÀÌ³Ê 1°³ = ÇÁ·Î¼¼½º 1°³? ÄÁÅ×ÀÌ³Ê 1°³¿¡ ÇϳªÀÇ °ü½É»ç 02. ÄÁÅ×À̳ÊÀÇ À̽ļº Ä¿³Î ¹× ¾ÆÅ°ÅØóÀÇ Â÷ÀÌ ¶óÀ̺귯¸®¿Í µ¿Àû ¸µÅ© ¹®Á¦ 03. µµÄ¿ Ä£ÈÀûÀÎ ¾ÖÇø®ÄÉÀÌ¼Ç È¯°æ º¯¼ö È°¿ë µ¥ÀÌÅÍ º¼·ý04. Æ۽ýºÅϽº µ¥ÀÌÅ͸¦ ´Ù·ç´Â ¹æ¹ý µ¥ÀÌÅÍ º¼·ý ÄÁÅ×ÀÌ³Ê 05. ÄÁÅ×ÀÌ³Ê ¹èÄ¡ Àü·« µµÄ¿ ½º¿ú ¼ºñ½º ½ºÅà ½º¿ú Ŭ·¯½ºÅÍ ¿ÜºÎ¿¡¼ ¼ºñ½º »ç¿ëÇϱâ 04Àå: ½º¿úÀ» ÀÌ¿ëÇÑ ½ÇÀü ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß01. À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸¼º ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¿ä±¸ Á¶°Ç ¾ÆÅ°ÅØó Nginx TODO ¾ÖÇø®ÄÉÀ̼ÇÀÇ Àüü ±¸Á¶ 02. MySQL ¼ºñ½º ±¸Ãà µ¥ÀÌÅͺ£À̽º ÄÁÅ×ÀÌ³Ê ±¸¼º ÀÎÁõ Á¤º¸ MySQL ¼³Á¤ - etc/mysql/mysql.conf.d/mysqld.conf ·¹Çø®ÄÉÀÌ¼Ç ¼³Á¤ MySQL(mysql_master/mysql_slave) Dockerfile ½º¿ú¿¡¼ ¸¶½ºÅÍ ¹× ½½·¹ÀÌºê ½ÇÇà MySQL ÄÁÅ×ÀÌ³Ê È®ÀÎ ¹× Ãʱ⠵¥ÀÌÅÍ ÅõÀÔ 03. API ¼ºñ½º ±¸Ãà todoapiÀÇ ±âº» ±¸Á¶ ¾ÖÇø®ÄÉÀÌ¼Ç È¯°æ º¯¼ö ÅëÁ¦ MySQL Á¢¼Ó ¹× Å×ÀÌºí ¸ÅÇÎ Çڵ鷯 ±¸ÇöÇϱâ servePUT API¸¦ À§ÇÑ Dockerfile ½º¿ú¿¡¼ todoapi ¼ºñ½º ½ÇÇàÇϱâ 04. Nginx ±¸Ãà nginx.conf ÆÄÀÏ ±¸¼ºÇϱâ Nginx ÄÁÅ×À̳ÊÀÇ Dockerfile Nginx¸¦ °ÅÃÄ API¿¡ Á¢±ÙÇϱâ 05. À¥ ¼ºñ½º ±¸Ãà TODO API È£Ãâ ¹× ÆäÀÌÁö HTML ·»´õ¸µ À¥ ¼ºñ½ºÀÇ Dockerfile Á¤Àû ÆÄÀÏÀ» ´Ù·ç´Â ¹æ¹ý Nginx¸¦ ÅëÇÑ Á¢±Ù Çã¿ë Àα׷¹½º·Î ¼ºñ½º ³ëÃâÇϱâ 06. ÄÁÅ×ÀÌ³Ê ¿ÀÄɽºÆ®·¹À̼ÇÀ» Àû¿ëÇÑ °³¹ß ½ºÅ¸ÀÏ 05Àå: Äí¹ö³×Ƽ½º ÀÔ¹®01. Äí¹ö³×Ƽ½º¶õ ¹«¾ùÀΰ¡ µµÄ¿ÀÇ ºÎ»ó°ú Äí¹ö³×Ƽ½ºÀÇ Åº»ý Äí¹ö³×Ƽ½ºÀÇ ¿ªÇÒ 02. ·ÎÄà PC¿¡¼ Äí¹ö³×Ƽ½º ½ÇÇà À©µµ¿ì¿ë/macOS¿ë µµÄ¿¿¡ Äí¹ö³×Ƽ½º ¼³Ä¡Çϱâ 03. Äí¹ö³×Ƽ½ºÀÇ ÁÖ¿ä °³³ä 04. Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ¿Í ³ëµå 05. ³×ÀÓ½ºÆäÀ̽º 06. Æĵå ÆÄµå »ý¼º ¹× ¹èÆ÷Çϱâ ÆÄµå ´Ù·ç±â 07. ·¹Çø®Ä«¼¼Æ® 08. µðÇ÷ÎÀ̸ÕÆ® ·¹Çø®Ä«¼¼Æ®ÀÇ »ý¾ÖÁÖ±â ·Ñ¹é ½ÇÇàÇϱâ 09. ¼ºñ½º ClusterIP ¼ºñ½º NodePort ¼ºñ½º 10. Àα׷¹½º LoadBalancer ¼ºñ½º ExternalName ¼ºñ½º Àα׷¹½º¸¦ ÅëÇØ Á¢±ÙÇϱâ 06Àå: Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ ±¸Ãà01. Google Kubernetes Engine ȯ°æ ¼³Á¤ GCP ÇÁ·ÎÁ§Æ® »ý¼º ±¸±Û Ŭ¶ó¿ìµå SDK(gcloud) ¼³Ä¡ Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ »ý¼º 02. GKE¿¡ TODO ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Ãà Æ۽ýºÅÏÆ®º¼·ý°ú ÆÛ½ÃÆ®ÅÏÆ®º¼·ýŬ·¹ÀÓ 03. GKE¿¡ MySQLÀ» ¸¶½ºÅÍ-½½·¹ÀÌºê ±¸¼ºÀ¸·Î ±¸Ãà ½ºÅ丮ÁöŬ·¡½º(StorageClass) ½ºÅ×ÀÌƮǮ¼¼Æ®(StatefulSet) 04. GKE¿¡ TODO API¸¦ ±¸Ãà 05. GKE¿¡ TODO À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ±¸ÃàÇϱâ 06. Àα׷¹½º·Î À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ³ëÃâÇϱâ Ŭ·¯½ºÅ͸¦ ±¸ÃàÇÒ ¼¹ö ÁغñÇϱâ 08. ¿ÂÇÁ·¹¹Ì½º ȯ°æ¿¡¼ Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ ±¸Ãà 09. kubespray¸¦ »ç¿ëÇÑ Äí¹ö³×Ƽ½º Ŭ·¯½ºÅÍ ±¸Ãà ÀÛ¾÷¿ë ¼¹öÀÇ SSH °ø°³Å° µî·Ï IPv4 Æ÷¿öµù È°¼ºÈ Ŭ·¯½ºÅÍ ¼³Á¤ Ŭ·¯½ºÅÍ ±¸Ãà Àâ 07Àå: Äí¹ö³×Ƽ½º ½ÇÀüÆí01. Äí¹ö³×Ƽ½ºÀÇ ±× ¿Ü ¸®¼Ò½º Å©·ÐÀâ ½ÃÅ©¸´ 02. »ç¿ëÀÚ °ü¸®¿Í RBAC RBAC¸¦ ÀÌ¿ëÇÑ ±ÇÇÑ Á¦¾î ¼ºñ½º °èÁ¤ 03. Ç︧Ç︧ ¼³Ä¡ Ç︧ÀÇ ÁÖ¿ä °³³ä Â÷Æ® ¼³Ä¡Çϱâ Â÷Æ®·Î ¼³Ä¡ÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç Á¦°ÅÇϱâ RBAC¸¦ Áö¿øÇÏ´Â ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Ä¡Çϱ⠻ç¿ëÀÚ Â÷Æ® »ý¼ºÇϱ⠷Ѹµ ¾÷µ¥ÀÌÆ® 04. Äí¹ö³×Ƽ½º ¹èÆ÷ Àü·« ½ÇÇà ÁßÀÎ ÄÁÅ×À̳ʿ¡ ´ëÇÑ Çコ üũ ¼³Á¤ ºí·ç-±×¸° ¹èÆ÷ 08Àå: ÄÁÅ×ÀÌ³Ê ¿î¿µ01. ·Î±ë ¿î¿µ ÄÁÅ×À̳ʿ¡¼ »ý¼ºµÇ´Â ·Î±× ·Î±ë µå¶óÀ̹ö ÄÁÅ×ÀÌ³Ê ·Î±× ´Ù·ç±â Fluentd¿Í Elasticsearch¸¦ ÀÌ¿ëÇÑ ·Î±× ¼öÁý ¹× °Ë»ö ±â´É ±¸Ãà fluentd ·Î±ë µå¶óÀ̹öÀÇ ¿î¿µ ±¸Á¶ Äí¹ö³×Ƽ½º¿¡¼ ·Î±× °ü¸®ÇÏ±â ±× ¿ÜÀÇ ·Î±× ¼öÁý µµ±¸ ÄÁÅ×À̳ÊÀÇ ¶óÀÌºê ¸®½ºÅä¾î 02. µµÄ¿ È£½ºÆ® ¹× µ¥¸ó ¿î¿µ dockerd Æ©´×Çϱ⠵µÄ¿ ¿î¿µ ½ÃÀÇ Àå¾Ö ´ëÃ¥ 03. Àå¾Ö ´ëÃ¥ Äí¹ö³×Ƽ½º ¿î¿µ ½ÃÀÇ Àå¾Ö ´ëÃ¥ Ç︧ÀÇ ¸±¸®½º È÷½ºÅ丮 Á¦ÇÑ 09Àå: °¡º¿î µµÄ¿ À̹ÌÁö ¸¸µé±â01. °¡º¿î µµÄ¿ À̹ÌÁö°¡ ¿Ö ÇÊ¿äÇÒ±î À̹ÌÁö Å©±â Áõ°¡¿¡ µû¶ó ³ªÅ¸³ª´Â ¹®Á¦ 02. ±â¹Ý À̹ÌÁö¸¦ °¡º±°Ô scratch BusyBox ¾ËÆÄÀÎ ¸®´ª½º ¹èÆ÷ ´ë»ó ¾ÖÇø®ÄÉÀ̼ÇÀÇ Å©±â ÁÙÀ̱â 03. °¡º¿î µµÄ¿ À̹ÌÁö ¸¸µé±â µµÄ¿ À̹ÌÁöÀÇ ·¹ÀÌ¾î ±¸Á¶ °í·ÁÇϱ⠺ôµå ÄÁÅ×ÀÌ³Ê¿Í ½ÇÇà ÄÁÅ×À̳ÊÀÇ ºÐ¸® 04. ¸ÖƼ ½ºÅ×ÀÌÁö ºôµå ¼ÒÇÁÆ®¿þ¾î ¹× µµ±¸ ÅëÀÏ 10Àå: ´Ù¾çÇÑ µµÄ¿ È°¿ë ¹æ¹ý01. ÆÀ °³¹ß¿¡¼ °³¹ß ȯ°æ ÅëÀÏÇϱ⠰³¹ß ȯ°æÀº Áý´ÜÁö¼ºÀÇ °á°ú 02. µµÄ¿ ÄÁÅ×À̳ʿ¡¼ ¸í·ÉÇà µµ±¸(CLI) »ç¿ëÇϱâ À̹ÌÁö¿¡¼ ¸í·ÉÇà µµ±¸ ¹öÀü º¯°æÇϱ⠵µÄ¿ ÄÁÅ×À̳ʷΠ¼Ð ½ºÅ©¸³Æ® ½ÇÇàÇϱâ Å×½ºÆ® ȯ°æ ±¸Ãà 03. ºÎÇÏ Å×½ºÆ® ¸¶½ºÅÍ-½½·¹ÀÌºê ±¸¼ºÀ¸·Î ºÎÇÏ Å×½ºÆ®Çϱ⠺ηÏA: º¸¾È01. °ø°³µÈ µµÄ¿ À̹ÌÁöÀÇ ¾ÈÀü¼º µµÄ¿ Çãºê Quay.io Docker Bench for Security 02. ¾ÈÀüÇÑ µµÄ¿ À̹ÌÁö¿Í µµÄ¿ ¿î¿µ ü°è ²Ù¸®±â ÄÁÅ×À̳ʿ¡ ÆÄÀÏÀ» Ãß°¡ÇÏ¸é¼ ¹ß»ýÇÏ´Â À§Çè ÀûÀýÇÑ Á¢±Ù Á¦¾î ±â¹ÐÁ¤º¸ Ãë±Þ ºÎ·ÏB: µµÄ¿·Î °³¹ßÀ» Áö¿øÇÏ´Â µµ±¸ ¹× ¼ºñ½º01. ÀÎÇϿ콺 µµÄ¿ ·¹Áö½ºÆ®¸® ±¸Ãà Registry(Docker Distribution) CircleCI 02. µµÄ¿¿Í CI/CD ¼ºñ½º ¿¬µ¿ 03. ECS¿¡¼ AWS Fargate¸¦ ÀÌ¿ëÇÑ ÄÁÅ×ÀÌ³Ê ¿ÀÄɽºÆ®·¹ÀÌ¼Ç Fargate·Î ECS Ŭ·¯½ºÅÍ ±¸ÃàÇϱâ ECS¸¦ Á¶ÀÛÇØ ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÆ÷Çϱ⠺ηÏC: ÁÖ¿ä ¸í·É¾î Á¤¸®01. µµÄ¿ ¸í·É¾î 02. Dockerfile ÀνºÆ®·°¼Ç 03. µµÄ¿ ÄÄÆ÷Áî ¸í·É¾î 04. µµÄ¿ ½º¿ú/½ºÅà ¸í·É¾î helm init 05. Ç︧ ¸í·É¾î helm version helm create helm lint helm package helm repo list helm repo add helm repo remove helm repo update helm search helm fetch helm serve helm install helm update helm list helm get helm delete