๐Ÿงฐ DevOps

CircleCI๋กœ SpringBoot+Postgresql ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋ฐฐํฌํ•˜๊ธฐ(1)

์—ฐ_์šฐ๋ฆฌ 2022. 3. 18. 17:43
๋ฐ˜์‘ํ˜•

CircleCI๋กœ SpringBoot+Postgresql ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋ฐฐํฌํ•˜๊ธฐ(1)

๋นŒ๋“œ ๋ฐฐํฌ ํ๋ฆ„
์‚ฌ์ „์ค€๋น„
AWS IAM ์—ญํ• (Role) ์„ค์ •
     EC2CodeDeployRole ์ƒ์„ฑ
     CodeDeployRole ์ƒ์„ฑ
AWS EC2 IAM ์—ญํ•  ์ˆ˜์ •
AWS IAM ์‚ฌ์šฉ์ž ์ถ”๊ฐ€

CircleCI๋กœ SpringBoot+Postgresql ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋ฐฐํฌํ•˜๊ธฐ(2)

AWS S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ
AWS CodeDeploy ์ƒ์„ฑ
AWS EC2 ์ ‘์†ํ•˜์—ฌ CodeDeploy Agent ์„ค์น˜
AWS EC2 Postgresql ์„ค์น˜

CircleCI๋กœ SpringBoot+Postgresql ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋ฐฐํฌํ•˜๊ธฐ(3)

์†Œ์Šค์ฝ”๋“œ ์ˆ˜์ •
     .circleci > config.ymlํŒŒ์ผ
     ํ”„๋กœ์ ํŠธํด๋” > appspec.yml
     ํ”„๋กœ์ ํŠธํด๋” > scripts > deploy.sh
     ํ”„๋กœ์ ํŠธํด๋” > src > main > resources > application.yml
CircleCI Context์„ค์ •
     AWS ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ €์žฅ
     ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ €์žฅ
๊นƒํ—ˆ๋ธŒ ์†Œ์Šค์ฝ”๋“œ pushํ•˜์—ฌ ๋นŒ๋“œ ๋ฐฐํฌ ํ™•์ธ

 

ํŒ€ํ”Œํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์ด๋‹ค (์‚ฌ์‹ค ๊ณต๋ถ€๋„ ์•„๋‹ˆ๊ณ  ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋งŒ ์ฐ์–ด๋จน์–ด๋ณธ ์ •๋„..)
์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ๋ถ€๋ถ„๋„ ๋งŽ๊ณ  ์—„์ฒญ ํ—ค๋งค์—ˆ๋‹ค. ์ผ๋‹จ ์–ด๋–ป๊ฒŒ ๋™์ž‘๋˜์—ˆ๋Š”์ง€ ๋‚จ๊ฒจ๋†“๋Š” ์šฉ๋„๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ธ€์ด๋‹ค

 

 

๋นŒ๋“œ ๋ฐฐํฌ ํ๋ฆ„

Git -> CircleCI -> AWS S3 -> AWS CodeDeploy -> AWS EC2

CircleCI๋Š” Git์—์„œ ๊ฐ€์ ธ์˜จ ์ฝ”๋“œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ , ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•ด์„œ S3์— ๋ณด๋‚ด์ค€๋‹ค

S3์— ์ €์žฅ๋œ ์••์ถ•ํŒŒ์ผ์€ CodeDeploy๋ฅผ ํ†ตํ•ด EC2์— ์ „์†ก๋œ๋‹ค

EC2๋Š” ๋ฐ›์€ ํŒŒ์ผ์„ ๋ฐฐํฌํ•œ๋‹ค

 

 

์‚ฌ์ „์ค€๋น„

์ผ๋‹จ SpringBoot ํ”„๋กœ์ ํŠธ๋กœ ์ง„ํ–‰ํ–ˆ๊ณ , CircleCI ์—ฐ๋™์ด ์™„๋ฃŒ๋œ Github Repository, AWS EC2๋ฅผ ์ค€๋น„ํ•œ๋‹ค

 

 

 

AWS IAM ์—ญํ• (Role) ์„ค์ •

EC2CodeDeployRole ์ƒ์„ฑ

1. ์—ญํ• ๋งŒ๋“ค๊ธฐ ํด๋ฆญ

 

2. 

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์—”ํ„ฐํ‹ฐ ์œ ํ˜• : AWS ์„œ๋น„์Šค 

์‚ฌ์šฉ์‚ฌ๋ก€ : EC2

 

3. AmazonEC2RoleforAWSCodeDeploy ๊ฒ€์ƒ‰ํ•˜์—ฌ ์„ ํƒ > ๋‹ค์Œ

 

4. ์—ญํ•  ์ด๋ฆ„ EC2CodeDeployRoleTest, ํƒœ๊ทธ Name:EC2CodeDeployRoleTest ์ž…๋ ฅ

 

CodeDeployRole ์ƒ์„ฑ

1. ์—ญํ•  ๋งŒ๋“ค๊ธฐ ํด๋ฆญ

 

 

2. 

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์—”ํ„ฐํ‹ฐ ์œ ํ˜• : AWS ์„œ๋น„์Šค

์‚ฌ์šฉ์‚ฌ๋ก€ > ๋‹ค๋ฅธ AWS ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€ : CodeDeploy > CodeDeploy ์„ ํƒ

 

3. AWSCodeDeployRole ์„ ํƒ๋˜์–ด์žˆ๋Š”๊ฒƒ ํ™•์ธ ํ›„ ๋‹ค์Œ

 

4. ์—ญํ• ์ด๋ฆ„ : CodeDeployRoleTest, ํƒœ๊ทธ Name:CodeDeployRoleTest ์ž…๋ ฅ

 

5. ์ด 2๊ฐœ์˜ ์—ญํ• ์ด ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉด ์™„๋ฃŒ

 

 

 

 

AWS EC2 IAM ์—ญํ•  ์ˆ˜์ •

1. EC2๋ฅผ ์šฐํด๋ฆญํ•˜์—ฌ ๋ณด์•ˆ > IAM ์—ญํ•  ์ˆ˜์ • ํด๋ฆญ

 

2. ์œ„์—์„œ ์ƒ์„ฑํ–ˆ๋˜ EC2CodeDeployRoleTest์„ ํƒ ํ›„ ์ €์žฅ

 

3. ์ธ์Šคํ„ด์Šค ์žฌ๋ถ€ํŒ…ํ•˜์—ฌ ์—ญํ•  ์ ์šฉ

 

 

 

 

AWS IAM ์‚ฌ์šฉ์ž ์ถ”๊ฐ€

1. ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ํด๋ฆญ

 

2. 

์‚ฌ์šฉ์ž์ด๋ฆ„ : CodeDeployUser

์ž๊ฒฉ์ฆ๋ช…์œ ํ˜• : ์•ก์„ธ์Šคํ‚ค - ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ฐฉ์‹ ์•ก์„ธ์Šค

 

3. ๊ธฐ์กด ์ •์ฑ… ์ง์ ‘ ์—ฐ๊ฒฐ > AmazonS3FullAccess, AWSCodeDeployFullAccess ์„ ํƒ ํ›„ ๋‹ค์Œ

 

 

4. Name : CodeDeployUser ์ž…๋ ฅ

 

 

5. ๋‚ด์šฉ ํ™•์ธ ํ›„ ์‚ฌ์šฉ์ž ๋งŒ๋“ค๊ธฐ ํด๋ฆญ

 

 

 

6. ์‚ฌ์šฉ์ž ์•ก์„ธ์Šคํ‚ค์™€ ์‹œํฌ๋ฆฟํ‚ค ๋‹ค์šด

์•„๋ž˜ ํ™”๋ฉด์€ ํ•œ๋ฒˆ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!! ๋งŒ์•ฝ csv๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ƒˆ๋กœ ๋ฐœ๊ธ‰๋ฐ›์œผ๋ฉด๋œ๋‹ค (6-1๋ฒˆ ์ฐธ๊ณ )

 

6-1. csv๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ณด์•ˆ์ž๊ฒฉ์ฆ๋ช…์— ๋“ค์–ด๊ฐ€ ์•ก์„ธ์Šคํ‚ค ๋งŒ๋“ค๊ธฐํ•˜์—ฌ csv๋ฅผ ์ €์žฅํ•˜๋ฉด๋œ๋‹ค (๋งˆ์ฐฌ๊ฐ€์ง€๋กœ csv๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์€ ํ•œ๋ฒˆ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค)

 

 

๋ฐ˜์‘ํ˜•
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ํŠธ์œ„ํ„ฐ ๊ณต์œ ํ•˜๊ธฐ
  • ๊ตฌ๊ธ€ ํ”Œ๋Ÿฌ์Šค ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜คํ†ก ๊ณต์œ ํ•˜๊ธฐ