저는 현재 Github Actions만 사용하여 하는 CI/CD 강의까지 들었는데 이 방식은 결국 sudo fuser -k -n tcp 블라블라 를 하고 다시 nohup java -jar 블라블라 명령어로 서버를 띄우는 데까지는 서버가 꺼져있는 것 같습니다. 결국 이는 CI/CD는 무중단 배포와 관련은 있지만 CI/CD + {어떤 기술} = 무중단 배포 가 되는 것인 거죠?
안녕하세요. MSA 강의부터 젠킨스까지 강의 재밌게 듣고 있습니다. 강의를 듣다가 ansible의 역할에 대해 궁금한 점이 생겨 질문드립니다. 현재 저희가 구축한 환경은 젠킨스 -> ansible -> k8s로 이루어진 환경으로 알고있습니다. 젠킨스가 빌드하고 빌드된 파일을 ansible로 보내서 ansible에서 이미지를 빌드 및 푸시하고 k8s에서 해당 이미지를 사용하여 배포하는 과정이라고 이해했습니다. 저는 여기서 ansible의 역할이 jenkins만으로 충분히 대체될 수 있다는 생각이 들었습니다. 이미지를 빌드하고 푸시하는 과정을 jenkins의 exec command나 script로 따로 짜서 진행하면 ansible의 역할을 대체할 수 있나요? 만약 대체할 수 있다면 그럼에도 불구하고 ansible을 사용하는 이유가 분명이 있을 것이라 사료되는데요, 저희가 구축한 환경 혹은 현업에서 ansible이 또 어떤 방식으로 활용될 수 있을지가 궁금해서 질문드립니다. 감사합니다.
5분 42초에 말씀하신 Cmd는 띄어쓰기를 인식이 안되어 띄어쓰기 기준으로 배열로 저장된다고 해주셨는데요, daemon off도 띄어쓰기가 되어있는데, 띄어쓰기의 기준이 명령어 한개로 보는건가요? daemon off => 명령어 한개 라서 배열 하나에 들어간건지 궁금합니다
안녕하세요 강의 들으면서 진행중인 토이 프로젝트에 적용시켜 보고 있습니다. gitignore 처리 된 yml 파일을 관리하는 부분에서 궁금증이 생겨 질문 드립니다. 현재 프로젝트엔 yml파일이 3종류 있는데(jwt, oauth 관련) 이렇게 yml 파일이 여러개인 경우 APPLICATION_PROPERTIES1,2,3 이렇게 여러개 만들어서 각각 적용해 주려고 합니다. 이게 좋은 방법일까요? 다른 방법이 있는지도 궁금합니다! 그리고 cat 명령어로 yml 파일의 내용을 읽어 봤는데 강의에서처럼 파일 자체의 내용이 나오지 않고 APPLICATION_PROPERTIES 이라고 나오는데 정상적인건가요?
강의에서 SonarQube를 설치하기 위해 사용했던 코드는 sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.6.zip 였습니다. 하지만, openjdk-17버전에서 위의 SonarQube 버전으로 작업을 했을 때, SonarQube가 최신 JVM 버전에서 더 이상 지원되지 않는 UseConcMarkSweepGC 옵션을 사용하므로 실행이 되지 않습니다. 따라서, openjdk-17버전으로 자바를 설치하신 분들은 sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.1.69595.zip 위 명령어를 사용하셔서 진행하시면 될 것 같습니다. :)
강의내용에 ssh-copy-id root@172.17.0.2 로 되어있습니다. 처음부터 강의 따라왔다면 172.17.0.2 는 jenkins-server일텐데 강의 내용대로 172.17.0.2 에 copy하는게 맞나요?? 아니면 강의순서대로 올 경우 ansible ip는 172.17.0.4니까 copy는 172.17.0.3에 하는기 맞나요?? 실습 따라하기 너무 햇갈리내요
실행시 마지막에 ...access permission. 에러시 아래 참고 ※ 윈도우 10022포트 확인하여 아래 적용 후 1번 시작 - 10022포트 막혀있는지 확인: netsh interface ipv4 show excludedportrange protocol=tcp - winnat 정지: net stop winnat - 10022포트 허용: netsh int ipv4 add excludedportrange protocol=tcp startport=10022 numberofports=1 - winnat 시작: net start winnat
https://learn.microsoft.com/ko-kr/windows-server/administration/openssh/openssh_install_firstuse?tabs=powershell 를 따라서 window ssh 서버 클라이언트 설치하고 ansinble-server와 윈도우 pc(쿠버네티스 돌아갈 host)에 python 3.9로 설치해줬고, ansible-server에서 pip install pywinrm 설치 linux에서 ssh-keygen 한 것 윈도우 pc에 authorized_key에 직접 복사해줬음 https://github.com/AlbanAndrieu/ansible-windows/blob/master/files/ConfigureRemotingForAnsible.ps 에서 파일 직접 받아서 파워쉘에서 powershell.exe -ExecutionPolicy ByPass -File C:\Users\user\Downloads\ConfigureRemotingForAnsible.ps1 파워쉘에서 실행 ansible-server에서 vi /ect/ansible/host [local] localhost [docker] 172.17.0.3 [windows] 본인 컴퓨터(윈도우) host pc의 ip입력 [windows:vars] ansible_password='본인 컴퓨터((윈도우) host pc 비밀번호 입력' ansible_connection=winrm ansible_winrm_server_cert_validation=ignore ansible_user=user ansible_port=5986 를 작성해서 저장 ansible windows -m win_ping -u user win_ping으로 핑 테스트 하면 정상 동작함 ➕ ./k8s/hosts파일 에서 [kubernetes]도 [kubernetes:vars] 위와 같이 작성해줘야 -i ./k8s/hosts kubernetes 로 win_ping 보냈을 때 응답 받을 수 있어요
실습강의처럼 똑같이 docker run -d -p 80:80 --name my-simple-web zxcxz01/my-simple-web:0.1 해서도 안되고 포트번호가 안되는건가 싶어서 포트번호를 바꿔서 docker run -d -p 8080:3000 --name my-simple-web zxcxz01/my-simple-web:0.1 를 해도 안돼서 무슨 문제인지 모르겠습니다.. 강의랑 똑같이 했는데 이 전 섹션에서 이미지받아온걸론 8080:3000을 했을땐 잘됐어서 포트번호를 바꿔서 해봤는데 요번섹션은 저렇게 나와서 해결도 못하고 있습니다.. 계속 지웠다가 다시해도 안되고
안녕하세요 선생님, 영상을 계속 보다보니 궁금한 게 생겨서 질문드립니다. docker run ~~~~ 하고 맨 끝에 CMD 를 덮어쓸 명령어를 작성하실 때 저는 당연히 "/bin/bash" 처럼 작성할 줄 알았는데, "bin/bash" 로 입력하시더라구요. 그런데 이게 또 되니까 더 신가하더군요. 이뿐만 아니라 docker cp 할 때도 docker cp . gradle:app 을 할 때도 gradle:/app 이 아니라 gradle:app 처럼 작성해도 정상 동작이 됩니다. 이렇게 "/" 경로를 앞에 붙이지 않아도 동작이 되는 이유가 뭔지 알 수 있을까요?
강사님 안녕하세요! 이미지 관리 풀스택 강의부터 너무 잘 들어서 몽고DB랑 AWS 배포 완벽 가이드까지 너무너무 잘 듣고 있습니다. AWS 배포 완벽 가이드 - 섹션 10: AWS Elastic Container Service (ECS) 자세히 알아보기! 를 듣던 중, 아래와 같이 redis 태스크 정의를 하였습니다. 클러스터 내부에서 redis 서비스를 만들 때, 아래와 같이 서비스 연결을 활성화했습니다. 같은 클러스터 내부에서 express 서비스를 만들 때, 환경변수 설정시 REDIS_URL을 2번 서비스 연결 항목에서 tcp를 redis로 바꾸어서 설정하였습니다. 그런데, cloudWatch로 express 로그를 찍어보니 아래와 같이 redis 연결이 안 되더라구요 ㅠㅠ 그런데, 클러스터 내부 redis 보안 그룹의 인바운드 규칙에 아래와 같이 같은 보안 그룹을 가진 인바운드 트래픽은 6379 포트를 열게 설정했더니 갑자기 문제가 해결되었습니다.. 강사님께서 강의를 찍으실 때 클러스터 내부에서 레디스 서비스 생성시 보안 그룹은 따로 설정을 안 해주신 걸로 아는데, 혹시 제가 놓친 부분이라든지 강의 이후에 달라진 게 있을까요?? 문제를 당장 해결은 했는데,,, 원인을 모르겠습니다 ㅠㅠ 앞으로도 좋은 강의 많이 내주세요! 감사합니다!
강의 잘 듣고 있습니다! 제가 AWS는 잘 몰라서 질문이 있습니다. IAM >역할에서 EC2의 권한을 추가할때 예전에 S3 접근 권한은 수업 내용 중 'code-deploy-ec2-policy'라는 정책을 만들고 IAM > 역할에서 EC2의 권한을 부여했는데요, ECR의 접근 권한을 부여할때는 정책을 따로 만들어서 권한을 부여하지 않고, 'AmazonEC2ContainerRegistryFullAccess' 권한을 직접 추가한 이유가 따로 있으신가요? 결과적으로 둘다 같지만 정책을 별도로 추가해서 작업하는 것은 JSON에서 커스텀할 수 있기 때문인가요?
안녕하세요. 쿠버네티스를 vm에 직접 구축해서 서비스를 올려보려고 하고 있습니다. 네트워크 관련해서 여쭤보려고 하는데요. 쿠버네티스 클러스터(master node, worker node 들)는 private zone에 두고 metal lb에 공인 ip를 줘서 외부에서 통신이 들어올 때, 쿠버네티스 클러스터로 직접 들어오는 것이 아니라 metal lb를 통해서 들어오게 구성하고 싶은데, 이게 가능한 구조 일까요? 혹시 저 방법이 아니면 위와 같은 구조를 설계하려고 할 때 어떤 방식으로 인프라 설계를 해야되는지 여쭤보고자 합니다. 감사합니다.
compose.yml과 프로젝트 소스를 Git Push Github Actions 에서 도커 이미지 생성 생성한 이미지 도커 허브에 전달 Github Actions 에서 EC2로 compose.yml 전송 Github Actions 에서 SSH로 EC2에 접속해서 docker compose down docker compose pull docker compose up 제가 생각하기에는 이 순서로 진행해야 할 것 같은데 혹시 잘못된게 있을까요?