저는 windows 10 환경에서 실습 진행하려는데, 초기에 각 repo clone 하는것을 로컬 pc에 해오는게 맞나요? reousrces 설정한 이후에 제 로컬 windows 에서 bootstrap.sh 실행하는게 맞나요? sh자체가 실행할수가 없어서, gitbash 로 실행해봐도 오류가 나네요. windows 기준으로 초기 설정 sh bootstrap.sh 실행을 안내해주시면 감사하겠습니다.
ec2 여러대에서 각각 jenkins, ansible 등등을 host 에 직접 설치하는 특별한 이유가 있을까요? ec2 각각 안에서도 그냥 docker 로 띄워도 되지 않나요? 특별한 이유가 있는지, 어떤 수업의 방향성 때문인지, 장단 등등에 대해서 궁금합니다. 좋은 강의 감사합니다.
안녕하세요 좋은 강의 감사합니다. docker run --privileged --name jenkins-node1 -itd -p 30022:22 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init 로 접속한 후에요. docker ps -a | grep jenkins-node 잘 떠있는 것 확인한 후에 ssh root@localhost -p 3022 로 접근하면 P@ssw0rd 패스워드 입력하잖아요? 그 패스워드는 강의 선생님께서 해당 도커 이미지 생성하실 때 root / P@ssw0rd 로 설정을 하신 건가요? 미리 감사드립니다.
"이름 때문에 기대가 너무 컸던 Secret" 강의 내용에 대한 질문 입니다. secret type 중 docker-registry 를 소개해주셨는데 공식 문서에서 해당 타입을 사용하는 예로 써 kubectl 명령어를 이용한 생성에 대한 언급만 있습니다. docker-registry 유형은 yaml 로 생성하여 사용 가능한것인지가 궁금합니다 ..! cafe: https://inf.run/X6Tbp
우선 레포만 생성하는 workflow는 성공하였으며, slack 기능을 추가하는 과정에서 오류를 겪고 있습니다. gh repo create oddong-action/${{ inputs.prefix }}-${{ inputs.name }} --public --add-readme 새로운 레포를 만드는 명령 수행 시에 아래와 같이 권한 오류가 발생하고 있습니다. 어떤 설정을 추가로 해주어야 할지 문의드립니다.
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요] 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요] (https://www.inflearn.com/blogs/1719) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://inf.run/Ljaer ) [질문 하기] k apply -f ./w1-affinity-leader.yaml k apply -f ./deployment-podAffinity.yaml k get po -o wide # w1에만 배포 확인 k apply -f ./w3-affinity-leader.yaml 안녕하세요 현재 위와 같이 실습 중 w3-affinity-leader 가 계속 pending 상태인데 어떻게 해결해야 할지 몰라 질문드립니다. root@cp-k8s:~/_Lecture_k8s_learning.kit/ch7/7.8# cat w3-affinity-leader.yaml apiVersion: v1 kind: Pod metadata: labels: run: sleepy affinity: leader name: w3-affinity-leader spec: containers: - image: sysnet4admin/sleepy name: sleepy nodeSelector: kubernetes.io/hostname: w3-k8s root@cp-k8s:~/_Lecture_k8s_learning.kit/ch7/7.8# k describe po w3-affinity-leader Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 12s (x2 over 5m29s) default-scheduler 0/4 nodes are available: 1 node(s) had untolerated taint {DB: customer-info}, 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 2 node(s) didn't match Pod's node affinity/selector. preemption: 0/4 nodes are available: 4 Preemption is not helpful for scheduling.
안녕하세요. 재밌고 좋은 강의를 해주셔서 감사합니다. 아직 70%정도 보고 있지만 궁금하게 있습니다. 현재 백엔드 개발자로 근무하고 있는데 저희 환경은 aws의 ec2에 직접 올려 백엔드 서버(spring-boot)를 운영하고 있습니다. 점차 쿠버네티스 환경으로 변경하려고 인프라담당자들과 백엔드 개발자들이 스터디 및 환경 구축하고 있는데요. 만약 실무에서 쿠버네티스 환경으로 바뀐다면 개발자들의 로컬 개발 환경은 어떻게 하시는지 궁금합니다. 대부분 자바, 스프링 환경이면 인텔리제이등으로 개발 후 테스트를 해볼텐데 컨테이너에서 다른 개발자들과 다 같은 환경에서 테스트를 해보고 빌드해보고 해야 하지 않는가 싶어서요. 실무에선 어떤식으로 개발자들이 개발하는지 개발, 테스트 , 운영 배포 까지 플로우가 어떻게 되는지 궁금합니다.
안녕하세요 docker run --privileged -itd --name ansible-server -p 20022:22 -p 8082:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/ansible-server:m1 /usr/sbin/init 위 명령어로 도커 이미지 설치 후 ssh 로 접속해서 패스워드 치고 들어가면, ansible --version 이 먹히지 않는 것으로 보면 ansible 이 설치가 되어있지 않은 것 같아요. 참고로 저는 맥 m1 OS 입니다.
안녕하세요 우선 저는 gradle 로 진행을 했습니다. 다른건 다 동일하게 했고 젠킨스 도커 안에 들어가서 cd /var/jenkins_home/workspace/My-Third-Proejct nohup java -jar build/libs/jenkins_cicd_project-0.0.1-SNAPSHOT.jar --server.port=9000 --server.address=0.0.0.0 > app.log 2>&1 & 로 실행을 하면 브라우저에서 localhost:9000 으로 접근이 잘 됩니다. 그런데 젠킨스 스크립트로 실행을 하게 되면 젠킨스 도커 내의 로그를 확인해보면 계속 꺼져요. 이유가 있을까요? 젠킨스 구성 설정의 shell script 는 아래와 같아요. # 기존 프로세스 종료 PID=$(ps -ef | grep "jenkins_cicd_project-0.0.1-SNAPSHOT.jar" | grep -v grep | awk '{print $2}') if [ ! -z "$PID" ]; then echo "종료 중인 애플리케이션 PID: $PID" kill -15 $PID sleep 5 fi # 새 프로세스 시작 (setsid 사용하여 별도 세션에서 실행) echo "애플리케이션 시작 중..." setsid nohup java -jar build/libs/jenkins_cicd_project-0.0.1-SNAPSHOT.jar --server.port=9000 --server.address=0.0.0.0 > app.log 2>&1 & APP_PID=$! echo "애플리케이션 PID: $APP_PID" # 시작 확인 sleep 10 ps -p $APP_PID > /dev/null if [ $? -eq 0 ]; then echo "애플리케이션이 PID $APP_PID로 실행 중입니다." curl -s http://localhost:9000 > /dev/null if [ $? -eq 0 ]; then echo "애플리케이션에 정상적으로 접근할 수 있습니다." else echo "애플리케이션 접근 테스트 실패!" fi else echo "애플리케이션 시작 실패!" exit 1 fi 그리고 젠킨스 빌드 console out 도 아래와 같습니다.Started by user 허강준 Running as SYSTEM Building in workspace /var/jenkins_home/workspace/My-Third-Proejct The recommended git tool is: NONE No credentials specified > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/My-Third-Proejct/.git # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://github.com/Highjune/jenkins_cicde_project.git # timeout=10 Fetching upstream changes from https://github.com/Highjune/jenkins_cicde_project.git > git --version # timeout=10 > git --version # 'git version 2.39.5' > git fetch --tags --force --progress -- https://github.com/Highjune/jenkins_cicde_project.git +refs/heads/*:refs/remotes/origin/* # timeout=10 > git rev-parse refs/remotes/origin/main^{commit} # timeout=10 Checking out Revision 6353899ff277302005bce6da4d498211ebeab06b (refs/remotes/origin/main) > git config core.sparsecheckout # timeout=10 > git checkout -f 6353899ff277302005bce6da4d498211ebeab06b # timeout=10 Commit message: "포트번호 수정" > git rev-list --no-walk 6353899ff277302005bce6da4d498211ebeab06b # timeout=10 [My-Third-Proejct] $ /bin/sh -xe /tmp/jenkins9188074144619929309.sh + ps -ef + grep jenkins_cicd_project-0.0.1-SNAPSHOT.jar + grep -v grep + awk {print $2} + PID=283 + [ ! -z 283 ] + echo 종료 중인 애플리케이션 PID: 283 종료 중인 애플리케이션 PID: 283 + kill -15 283 + sleep 5 + echo 애플리케이션 시작 중... 애플리케이션 시작 중... + APP_PID=420 + echo 애플리케이션 PID: 420 애플리케이션 PID: 420 + sleep 10 + setsid nohup java -jar build/libs/jenkins_cicd_project-0.0.1-SNAPSHOT.jar --server.port=9000 --server.address=0.0.0.0 + ps -p 420 + [ 0 -eq 0 ] + echo 애플리케이션이 PID 420로 실행 중입니다. 애플리케이션이 PID 420로 실행 중입니다. + curl -s http://localhost:9000 + [ 0 -eq 0 ] + echo 애플리케이션에 정상적으로 접근할 수 있습니다. 애플리케이션에 정상적으로 접근할 수 있습니다. Finished: SUCCESS 그런데 계속 Graceful shutdown complete 가 뜹니다. 참고로 다른 포트랑 충돌같은 것은 없습니다 원래 8081로 진행하다가 일부러 다른 포트로 시도해보려고 9000으로 했습니다. 이렇게 젠킨스 내 컨테이너 내에서 수동 실행하면 되는데 왜 젠킨스 빌드로 하면 꺼지는 걸까요? 참고로 젠킨스 도커 실행 명령어는 아래와 같습니다. docker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 9000:9000 -p 50000:50000 --restart=on-failure --name jenkins-server jenkins/jenkins:lts-jdk21
강의중 파드가 5개인데..처음에 2개가 생성되는건 maxSurge 25% 5개 파드의 25% 여서 2개인건가요? 그런다음에 왜 maxUnavailable 25%에 대해서는 2개 삭제가 아닌 1개만 삭제되는지도 이해가 안되구요 같은 25%인데요... 그럼 그상태에서는 4개만 서비스가 되는건가요? 아니면 추가로 생성된 2개도 서비스가 같이 되고있는건가요? 그럼 총 6개가 서비스되고 있는상태에서 또 몇개가 생성되고 몇개가 죽나요? 이게 일단 기동시간이 같다는 전제하에 블루그린방식과 같다는게 좀 이해가 안갑니다. 새로 올라온 서버는 서비스가 안되는건가요?
중요하다고 생각해서 여러번 보는데도 api입장에서는 이해가 잘 안되네요..제가 생각한 결론은 liveniessProbe는 pod재기동을 위한 api 상태체크같고 readinessProbe는 service에 pod를 연결시킬거냐 말거냐를 결정하는거 같은데... 이걸 호출하는 api 를 봤을땐 liveness와 readiness의 api를 실무에서 어떻게 각각 구별해서 만들수가 있을까 싶은거에요... 또한 app초기화 user초기화로 구분했던것도 실은 서버가 올라옴과 동시에 거의 강사님이 말씀하신 app초기화와 user초기화는 거의 순식간에 끝나는거 아닌지요? 막말로 톰캣서버올라오는 순간 모든 api들은 정상호출되는거 아닌지요..그리고 그렇게 user초기화를 위한 과정이 서버 기동시 그렇게 오래 올라올까 싶기도 하고..만약 실제로 그렇다면 굳이 startupProbe가 왜 필요할까 싶기도 해요...어차피 startupProbe가 성공하던 말던 중요한건 readiness에서 서비스연결할지 여부를 결정할거고 liveness에서 재기동까지 결정할텐데..굳이 startupProbe까지 넣을필요있는지.....설명은 이해가 되지만 실제로 의미가 있을까 하는 생각뿐이에요..