묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
CodeDeploy Amazon Ec2 인스턴스
ec2 러닝 중이고 탄력적 IP 까지 할당 받았는데, 키 , 값 선택이 안 뜰수가 있나요? 만약 안뜨면 그냥 직접 입력 하면 될까요??
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
alb에 있는 도메인을 프라이빗 서브넷에 있는 백엔드 서버에 연결하는 것이 맞는지 고민 중입니다.
위 그림은 제가 구현한 아키텍처입니다. 제 프론트 서버에서 도메인/api 경로로 백엔드로 요청을 보내기 때문에 ALB에 기본 도메인은 프론트서버로 라우팅, 도메인/api 주소는 백엔드 서버로 라우팅되게 하였습니다. 그런데 프라이빗 서브넷은 외부로부터 접근을 못하는 것에 의미가 있는데 도메인이 연결된 로드밸런서에 프라이빗 서브넷을 연결하면 route53에서 로드밸런서 ip주소에 요청을 보내고 로드밸런서는 /api가 붙어 있는 것을 확인하고 백엔드 서버 대상 그룹으로 요청을 보냅니다. 즉 백엔드 서버 자체의 공인ip가 없어도 사용자가 웹 브라우저에 https://grow-farm.com/api/auth/health 라고 적으면 백엔드 서버에 직접 요청을 할 수 있고 응답도 그대로 돌아옵니다 물론 이것은 헬스체크라서 열어둔거고 다른 API는 앱 내부 차원에서 프론트를 통한 요청으로만 접근 할 수 있게 조치는 취해놨지만 인프라 차원에서 서버가 개방되어있으니 이 설계가 베스트 프랙티스가 아닌 것 같다는 생각이 들었습니다. 제가 기존에 했던 방법으로 도메인을 가지고 있는 로드밸런서에서 프라이빗서브넷에 있는 ec2에 /api를 붙여서 경로를 붙이는 것이 자주 쓰이는 방법이고 제가 잘못 생각한 것이라 큰 문제가 없는지 궁금합니다! 만약 1번이 문제가 있는 방법이라면 대안으로 프론트 서버는 10.0.2.2 같은 백엔드 내부 ip주소로 요청을 보내게 코드를 바꾸고 로드밸런서에서 백엔드 서버를 해제하면 사용자들은 브라우저창에 10.0.2.2/api/auth/health 를 검색하더라도 백엔드 서버에 접근할 수 없는 숨겨진 공간이 될 수 있을 것 같은데 혹시 괜찮은 방법인지 궁금합니다.감사합니다!
-
해결됨비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
로드밸런서의 DNS로 들어가면 통신이 되는데 ip를 검색하면 안되는 경우는 어떤경우가 있을까요?
완강했습니다!! 처음 올린 질문이 해결이 되어서 질문을 수정했습니다!위 사진은 제가 만드려고 하는 아키텍쳐입니다사진에는 빠졌지만 alb도 있고 프론트서버에 연결되어있습니다현재까지는 프론트서버만 만든상태입니다.퍼블릭 서브넷에서 인터넷 게이트웨이 설치하고 접속이 되는건 확인했습니다.alb는 80,443 허용하였고 프론트는 22,80,443,3000허용하였습니다. (22는 나중에 배스천호스트로 옮길 생각입니다)대상그룹은 프론트 ec2로 설정하였고 http 3000으로 설정해서 healty 연결된걸 확인하였습니다.1. 로드밸런서의 dns로 들어가면 접속이 됩니다2. ec2내에서 로컬호스트로 들어가면 접속이 됩니다3. 도메인이나 ip를 검색하면 접속이 안됩니다4. 로컬에서 nslookup하면 제 서버 ip를 찾지 못합니다.어떤부분에서 빠뜨린게 있을까요? 이것저것 찾아보고 고민해도 해결이안되어서 4시간동안 찾다가 질문 드려봅니다 ㅠㅠ조금 걸리는 점은 제가 도메인사고 인증서받고나서 모든 ec2와 보안그룹들을 다 지워서 비용이 안 나가게한 적이 있습니다. 그 이후에 다시 vpc, ec2 등등 만들고 기존 도메인과 인증서를 연결했는데 인증서를 새로 발급받지 않고 기존 것을 쓴 것이 혹시 문제되지 않았을까? 라는 것이 약간 걸립니다그런데 도메인뿐만아니라 ec2의 ip로도 접근이 안되기 때문에 관련이 없다고 생각하여 그 부분은 건들지는 않았습니다 ㅠ
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Error: Process completed with exit code 126.
Run ./gradlew clean build2./gradlew clean build3 shell: /usr/bin/bash -e {0}4 env:5 JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.7-6/x646 JAVA_HOME_21_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.7-6/x647/home/runner/work/_temp/24e2a6f8-136d-471b-b2ea-6203042af791.sh: line 1: ./gradlew: Permission deniedError: Process completed with exit code 126.찾아보니깐 실행 권한이 없어서 ./gradlew 스크립트를 실행하지 못했다는 뜻이라고 하는데즉, Gradle Wrapper 파일에 실행 권한이 없어서 생긴 문제가 맞을까요? - name: gradlew 실행 권한 부여 run: chmod +x ./gradlew이렇게 붙여줬더니 되긴 하더라고요. 맞는 방법이 몰라서 여쭤봅니다.
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
강의내용설명중 이해안가는부분이 있습니다.
15분 정도 강의내용중에 "StatefulSet 경우는 스토리지 클래스가 먼저 만들어져 있는 상태에서 StatefulSets에 이 VolumeClaimTemplage이라는 속성에storageClass이름을 넣으면 이렇게 각각의 파드들이 생길때마다 PVC와 PV가 만들어지고 볼륨이 만들어지고 이 구성들이복잡해지는데 VolumeClaimTemplage사용하면 이렇게 storageclass가 있으면 statefulSet에서 사용만하면되서 구성방법은더 쉬워졌다."이말씀이 있습니다.같은 말인거 같은데요...전자 후자 모두 VolumeClaimTemplage 사용하는데 앞 내용에서는 복잡하고 뒤에서는 쉬워졌다고 말씀하시니 헷갈립니다.똑같이 VolumeClaimTemplage 사용하는 내용같은데 말이죠~
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
EC2 와 CodeDeploy 연결 에러
The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.CodeDeploy Agent는 EC2에서 active 상태이고, S3에 업로드도 잘 되었으며, IAM 역할도 다음과 같이 설정했습니다:- EC2 인스턴스 역할: code-deploy-ec2-role (정책: code-deploy-ec2-policy세부 S3)- CodeDeploy 서비스 역할: AWSCodeDeployRole 포함하지만 배포 시 아래와 같은 에러가 납니다:> The overall deployment failed because too many individual instances failed deployment, or too few healthy instances...추가로 EC2 내에서 /var/log/aws/codedeploy-agent/ 로그 폴더가 존재하지 않습니다. appspec.yml 및 start.sh도 정상 포함했고, S3에 .tar.gz도 업로드 확인했습니다.
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
tls ingress 기본값 설정
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true"tls 적용된 ingress는 redirect 기본값이 true라고 적어주셨는데kubectl get ingress -n anotherclass-322 portal-3222 -o yaml 로 보면 안나오는데위에 기본값은 원래 있다는 의미로 저렇게 적어만 주셨던걸까요? 그리고 portal.com:31443/hostname으로 접속하면 페이지가 열리는데 portal.com:31080/hostname 요청하면 https로 리다이렉션 되니 페이지가 열려야 하는거죠?그런데 노드포트가 아니니 안열리는것 뿐인거고...실제는 portal.com:31443/hostname이거 요청했을때와 똑같은 페이지가 열려야 하는거죠?
-
해결됨비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
프론트서버와 net인스턴스 서버는 nano 인스턴스로도 충분할까요??
제가 프론트서버 백서버 NAT인스턴스 역할을 하는 서버 이렇게 EC2를 3개 쓰려구합니다!!백서버는 프리티어인 t2.micro로 하고프론트서버는 t4g.nano로 하려고합니다1. 프론트서버라 메모리가 백서버만큼 먹진않을거같고2. t4g.nano가 nano중에 제일 싼데 성능은 제일 좋고3. arm64기반이긴한데 Next.js 서버가 충분히 호환된다고 들어서입니당Net인스턴스서버는 t3a.nano 쓰려고합니다1. Net게이트웨이 대용이라 nano면 충분할거같고2. Net Ami가 x86_64기반이라 arm64기반은 어려워 t4g.nano는 쓰지못하여 다음으로 저렴한 x86_64기반인 t3a.nano를 택했습니다근데 걱정이 일단 t2.micro의 성능은 확인해서 백서버가 돌아가는건 확인했는데 nano인스턴스들이 프론트서버와 net인스턴스의 제 역할을 해줄지 성능이 부족하진 않을지 걱정이네요 ㅠㅠ 혹시 이정도면 충분한 성능이 될까용??
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
cicd 전과정 잘 들었습니다
안녕하세요! 강의 잘 들었습니다. 저는 여기에 추가로 rds로 db 연결, 그리고 Dockerfile 세팅작업에서 나아가 compose.yml로 nginx,redis 등 세팅 해주려 하는데 그것도 이 기본 세팅 위에서 작업하면 되는건가요..? 감사합니다. 그리고 단일 프로젝트에서는 codedeploy까지는 안해도 괜찮은 건지 궁금하고 추후 무중단 배포로 갈때는 blue/green 이런 전략을 찾아보고 채택하면 되는지 질문드립니다!
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
cicd Vagrant 파일 다운로드 404 에러가 발생합니다.
[👍좋은 질문을 했을 때 좋은 답변이 돌아 옵니다]1. 실습 중 본인의 환경이 가이드와 다른 부분이 있었다면 말씀해주세요.2. 해당 문제의 발생 빈도(재설치 여부)와 문제 해결을 위해 시도해본 케이스를 말씀해 주시면 원인 파악에 큰 도움이 됩니다.3. 에러 메시지만 봐서는 저도 모르는 경우가 많아요. 그전에 했던 작업이 포함된 캡쳐 화면도 부탁 드려요.4. 영상 내용에 대한 질문 시 해당 시간을 같이 올려 주시면 답변을 드리는 시간이 더 빨라집니다.5. 긴 로그는 제 메일로 보내주세요. (k8s.1pro@gmail.com)6. 카페 [강의 자료실]에도 많은 질문과 답변들이 있어요!curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/cicd-server/vagrant-2.4.3/Vagrantfile nano Vagrantfile404: Not Found파일 안에 위와 같이 적혀 있습니다.
-
해결됨비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
이 경우에는 인프라 설계를 어떤식으로 해야 비용을 가장 절감할 수 있을까요?
안녕하세요 강의를 보면서 실제 운영할 서비스를 AWS에 올리고 있습니다지금 AWS 기본편을 끝내고 중급편을 수강중입니다. 프리티어 사용중이고 서버는 스프링부트 프론트는 Next.js로 만들었습니다.저는 로컬에서 도커 이미지를 프론트, 백 각각 만들어서 Elastic Continer Registry로 전송하고 EC2 하나의 인스턴스에서 두개의 이미지를 다 받아와서 사용중입니다.DB는 RDS쓰고 있습니다. 기본편을 보고 따라 만들었지만 실제 운영할 목적이라 조금 변화를 주면서 따라했습니다.RDS의 보안그룹의 인바운드 규칙은 EC2의 인바운드 규칙을 포함시켰고 추가규칙으로 제 IP로만 접근가능하게 했습니다 .로드밸런서는 대상그룹을 프론트, 백 2개 만들어서 기본은 프론트로 보내고 /api/루트는 백으로 보내게 했습니다. 기타 보안그룹 설정도 조금씩 바꾸었어요사진은 서비스의 인프라 흐름 입니다 그런데 RDS와 EC2 공인ip 할당받은게 2개니 하루에 0.24달러 나가는 것은 알고있었는데확인해보니 VPC에서 하루에 0.72달러씩 나가고 있더라고요 아직 중급편 초반부라 서브넷 배우고 있어서 중급에서 추가로 설정한건 없습니다. 0.24달러가 나가야하는데 0.72달러가 나갔는데 제가 변화를 준 것 중에 추가로 돈이 나갈만한 것이 있었는지 궁금합니다. 아직 서비스를 당장 운영할 것은 아니어서 DB나 EC2등 이미 만든 것은 잠깐 지우고 싶은데 제가 도메인을 결제해서 이미 만든 것을 지우다가 도메인 산 것도 지워질까 무서워서 못 지우고 있습니다. 혹시 어떤 부분만 안 지우면 되는지 궁금합니다. 뒤에 배울 Net 게이트웨이를 써야만 보안이 가능한지 아니면 중급편에서 배울 다른 내용들로 충분한 보안이 가능한지 궁금합니다. Net 게이트웨이 비용이 무섭더라구요 ㅠ 제 상황에서 어떻게 인프라를 구성해야 가장 비용 절감을 할 수 있는지 궁금합니다. (EC2 t2.micro를 2개 만들어서 사용 시간 비용을 좀 내더라도 탄력적ip는 인스턴스 하나에만 할당하고 인스턴스끼리 통신은 프라이빗ip로 통신하고 다른 인프라를 삭제해서 비용을 아끼는 것을 생각해본적이 있습니다) 늘 좋은 강의 해주셔셔 감사합니다! 부하테스트랑 SQL튜닝 레디스도 결제했습니다!
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
tls인증서 관련시
반면, nginx에 인증서를 넣을때는 이런 도메인이름( DNS Name : *.com ) 을 사면 여러 어플리케이션에 적욜수 있는데 이때는 비용이 더든다는 단점!이 있다고 말씀하셨는데요 nginx에 인증서를 넣을때 말고 ingress에 저런 도메인을 넣을수는 없다는 얘긴가요? nginx에 인증서 넣을때 *.com만 넣을수있는것처럼 반면, 말씀하셔서....헷갈려서 여쭤봅니다. 하나의 명확한 도메인은 ingress에만 넣을수 있다는것이죠? * 로 만든 여러 인증서는 nginx에만 넣을수있고, 또 사설만 가능하구요?
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
노트포트타입서비스 만들때 관한 설명
모든 노드에 포트가 만들어진다.이포트에 들어온 트래픽은 각각의 워커노드에 있는 iptables로 들어간다고 하셨는데요.동시에 각각 들어간다는 말이 아니고 특정 워커노드로 들어가서 그 노드의 iptables로 들어가는거지요? 그런데 kube-proxy라 다른 노드의 있는 파드로 라우팅을 해준다고 했는데 그럼 iptables와 kube-proxy역할이 각각 다른건가요? iptables는 로드밸런싱역할을 해주는것인가요?
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
노드 cpu사용량
매번 새로운 job실행시마다 cpu가 100% 차고 그래서테스트가 순조롭게 진행되지 않느데느려질때보면 cpu가 99%찹니다.해결방법이 있을까요?;;
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Pull requests에 대해
안녕하세요 강의 잘 봤습니다.제가 토이프로젝트에서 작업했을 때는 깃허브에 직접 들어가 Pull requests 메뉴에 들어가서 버튼누르니까 자동으로 merge하고 테스트, 실행까지 다하던데 pull requests 역할이 무슨 뜻이고, 이것도 설정을 어떻게 하는건지 궁금합니다.그리고 강의에서는 merge까지는 안 알려주시던데 deploy.yml에서 코드 작성하면 되는건가요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
aws CodeCommit에 대해
안녕하세요 강의 잘 보고 있습니다.예전 회사에서 깃허브 대신 Aws의 CodeCommit을 이용하여 코드 보관했는데 이때 git action이 사용가능한지 궁금합니다.만약에 안되면 다른 방식으로 어떻게 CI/CD 를 구현하는지 궁금합니다. 하는 방법 링크좀 부탁드립니다그리고 다른 회사들도 git hub 말고 svn 등 다른것도 쓸텐데 이때는 젠킨스를 쓸 수밖에 없는건지 궁금하네요
-
미해결비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편)
퍼블릭 ip 자동 할당 질문
default vpc로 인스턴스를 생성했을 때는 퍼블릭 자동 할당 활성화를 해주지 않았던 것 같은데 default vpc의 경우에만 활성화를 해주지 않아도 자동 할당 되는건가요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
시크릿 값 확인
안녕하세요 강의 잘 보고 있습니다.settings에서 비밀값 설정시 다시 확인하고 싶을때는 어떻게 확인하나요? 공식 문서에서 찾아봐도 못찾겠네요
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
3211 app소스 경로
3211 item만들고 설정에서 경로는 모두 제 repository를 했습니다.jenkinfile내용을 보면 앱소스 github도 제 경로로 바꿨습니다.https://github.com/odark/kubernetes-anotherclass-api-tester.git// App용 Github - Api-Tester App 소스코드를 Fork 하신 분이라고 jenkinsfile에는 있는데 이것만fork할게아니라 3.0.0브랜치도 fork후에 받아서 별도로 push해야하는거 아닌가요? 그리고 소스 cicd서버에 체크아웃후 파일을 내려받던데 그 소스가 어느시점에 사라집니다. 왜 내려받은 소스코드는 사라지고 class파일과 jar파일만 남는가요?
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
어떻게 파일을 읽나요?
postgresql:filepath: "/usr/src/myapp/datasource/postgresql-info.yaml"이 경로를 application.yaml에 설정해놨고이 위치에 yaml파일을 읽어서 driver class name이나 url을 읽어서 properties에 넣는 소스인데...저 filepath에 잇는 파일은 존재하지 않는데 어떻게 y.load(yamlFile) 읽어서 properties에 셋팅을 하는건지 몰겠네요?applicaiton-local.yaml에는 그정보가 있긴하지만 소스는 filepath에있는 yaml파일을 읽도록 되어잇어서요...