BackEnd22 CI/CD - 기초 1. 개념테스트(Test), 통합 (Merge) , 배포 (Deploy)의 과정을 자동화 하는 것CI : continuous IntegrationCD : continuous deploy코드의 수정이 일어날 때마다 반복하기 귀찮고, 번거롭기 때문에 이러한 반복적인 과정을 자동화 시키기 위해 CI/CD 인프라를 구축하는 것이다2. CI/CD 구축 시 사용할 Github ActionsCI/CD 구축 ToolGithub Actions, Jenkins, Circle CI, Travis CI etc.현업에서 많이 사용하면서, 무료로 사용할 수 있고, 빌드용 서버가 필요 없는 Github Actions을 활용하는 경우가 많음Jenkins 도 많이 사용하지만, 단점으로 별도의 서버 구축이 필요하여 비용이 발생하기 된다.. 2024. 12. 25. 도커와 쿠버네티스 -K8S(spring boot 의 통신 with Ingress) 4. K8S 에서의 spring boot 통신4-1. K8S 와 spring boot 로 통신이란통신 흐름 client 의 request → Ingress → ClusterIP → pod(java.jar)사용하는 서비스Ingress K8S Cluster 외부에서 내부에 존재하는 K8S 서비스에 접근하기 위해 HTTP/HTTPS 를 활용한 라우팅 규칙을 제공하는 객체 Ingress를 사용하게 되면 K8S Cluster 내부에 존재하는 다수의 서비스들을 외부에 노출할 수 있어 프로덕션 환경에서 유용하게 사용할 수 있다Service ( ClusterIP) K8S Cluster 내부에서만 접근 가능한 IP를 할당하며 외부에서는 접근할 수 없다4-2. K8S Ingress 클러스터 설치 및 설정설치kind.si.. 2024. 12. 2. 도커와 쿠버네티스 -K8S(네트워크 통신_pod들의 통신) 1. IngressIngress 란기본적으로 ingress라는 용어는 네트워크에서 나왔다네트워크 트래픽에서 외부에서 내부로 들어오는 트래픽을 Ingress, 반대는 egress 라고 한다쿠버네티스에서의 Ingress 는 외부로부터 접근을 관리하는 API 오브젝트이다즉, URL을 통해 HTTP 접근 경로를 만들어서 외부 트래픽이 내부의 어디에 도달할 수 있는지에 대해 정의한 규칙 모음이다추가 : 서비스(Service)파드들은 각각 클러스터 안에서 새로운 IP를 발급 받고 관리를 하게 된다. 그러나 쿠버네티스에서 파드들은 하나의 노드(마스터, 워크)에 고정으로 존재하지 않고 다른 노드로 옮겨지거나 삭제 될 수 있다 이렇게 변화가 있을 때마다 파드의 IP주소가 변경되기 때문에 파드 간의 통신이나, 다른 노드 .. 2024. 11. 24. 도커와 쿠버네티스 -K8S(스토리지 볼륨) 1. 스토리지 볼륨K8S에서 컨테이너 파일을 보존하기 위해 사용되는 객체노드 내부의 일부 디스크 공간을 pod와 공유하는 방식으로 제공노드 외부의 스토리지 시스템과 연결하는 방식1-1. K8S 스토리지 볼륨 종류emptyDir : pod 내부에서 임시적으로 사용하는 볼륨(저장소)hostPath: 노드 내에 데이터를 저장할 수 있는 볼륨(저장소)PersistentVolume: 외부 서버(노드 외부)에 데이터를 저장하는 볼륨(저장소)1-2. emptyDirpod 내부에서 임시적으로 사용하는 볼륨(저장소)pod가 노드에 할당될 때 처음 생성pod가 노드에서 실행하는 동안만 존재(pod가 삭제되면 볼륨도 삭제됨)apiVersion: v1kind: Podmetadata: name: my-ev-podspec.. 2024. 11. 20. 도커와 쿠버네티스 -K8S(환경 변수) 1. 환경 변수0. 환경 변수 설정 방법컨테이너 내부에 직접 설정configMapsecret환경 변수는 컨테이너 단위로 정의가 되기 때문에 공통으로 사용될 환경 변수도 중복 해서 컨테이너에 정의될 수 있다또한 비밀번호, API KEY 등은 공개가 되면 공개가 되면 안되기 때문에 이러한 부분들을 해결하기 위한 ConfigMqp, Secret 객체가 존재ConfigMap, Secret 는 K8S에서 설정값을 저장하는 객체이다ConfigMap : 외부에 공개되어도 문제가 되지 않는 값을 저장 (Database Host Name, Database User)Secret : 외부에 공개가 되면 안되는 값을 저장 (Database Password)컨테이너 입장에서의 K8S 환경 변수의 장점K8S 입장에서의 환경 변수.. 2024. 11. 17. 도커와 쿠버네티스 -K8S (Deployment) 1. Deployment1-1. Deployment 개념구성 요소ReplicaSet 의 버전을 관리해주는 객체 (컨트롤러)ReplicaSet 내의 pod 들의 배포, 업데이트까지 담당하는 객체⇒ K8S 에 어떤 pod를 배포한다는 것은 결국 그 pod 의 버전까지 관리해야 하는 경우가 대부분⇒ 실제로 개발자들이 K8S 를 사용할 때 pod 나 ReplicaSet을 직접 사용하는 경우는 잘 없다⇒ Deployment를 사용해서 pod 나 ReplicaSEt ⇒ 그러므로 K8S 의 객체를 직접 생성하는 것보다 Deployment의 spec을 작성하고 관리하는 경우가 많아졌다1-2. Deployment spec 작성ReplicaSet의 spec을 포함하고 있다 그러므로 spec 이 동일하다strategy 가 .. 2024. 11. 14. 도커와 쿠버네티스 -K8S (multi container & replicaset) 1. 다중 컨테이너초기 컨테이너를 설정하고, 그 다음 동작할 컨테이너를 설정해 준다다중 컨테이너 설정 (정상 작동)kind: Podmetadata: name: my-multi-container-podspec: initContainers: - name: my-initializer image: busybox command: ["sh", "-c", "sleep 10"] containers: - name: nginx image: nginx:1.24 - name: redis image: reids다중 컨테이너 설정( 비정상 작동)apiVersion: v1kind: Podmetadata: na.. 2024. 11. 11. 도커와 쿠버네티스 - (h2+config+eureka+gateway+item) 0. 네트워크 구성 정보h2 : h2-version2jdbc:h2:tcp://172.20.0.2:1521/test172.20.0.2:8081config: config-servereurekagatewayitem1. network 설정docker network create msa-version2docker network lsdocker network inspect msa-version22. H2 생성컨테이너 다운 받아 생성docker run --network msa-version2 -d -p 1521:1521 -p 8081:81 -e H2_OPTIONS="-ifNotExists" --name=h2-version2 oscarfonts/h2데이터베이스 기본 설정docker exec -it h2-version2 .. 2024. 10. 25. 도커와 쿠버네티스 - (h2 + config + service server) 마이크로 서비스 h2 + spring config server + spring service serverh2 : 8081config server : 8080service server : 5000실행 순서1. 개별 네트워크 생성docker network create msa-clouddocker network lsdocker network inspect msa-cloud2. h2 컨테이너 생성컨테이너 다운 받아 생성docker run --network msa-cloud -d -p 1521:1521 -p 8081:81 -e H2_OPTIONS="-ifNotExists" --name=h2-cloud oscarfonts/h2데이터베이스 기본 설정docker exec -it h2-cloud /bin/bashcd /.. 2024. 10. 20. 이전 1 2 3 다음