<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>DevOps on jaylab-log</title><link>https://jaylab.link/categories/devops/</link><description>Recent content in DevOps on jaylab-log</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Thu, 07 Aug 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://jaylab.link/categories/devops/index.xml" rel="self" type="application/rss+xml"/><item><title>배포할 때마다 끊기던 서비스를 무중단으로: Jenkins Rolling Deployment에서 내린 네 가지 결정</title><link>https://jaylab.link/jenkins-rolling-deploy-pipeline/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://jaylab.link/jenkins-rolling-deploy-pipeline/</guid><description>타겟 그룹 전체를 동시에 재시작하던 Jenkins 파이프라인을 서버별 순차 배포와 LB 제어로 바꾸며 내린 네 가지 결정과 아직 남은 한계</description></item><item><title>SonarQube를 brew에서 Docker로 옮겼다</title><link>https://jaylab.link/brew-sonarqube-install-and-sast/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/brew-sonarqube-install-and-sast/</guid><description>SonarQube Java 분석의 .class 요구 에러를 빌드로 풀고, brew 없이도 돌도록 서버와 Scanner를 Docker로 옮긴 기록</description></item><item><title>Ansible 첫 ping은 publickey에서 막혔다</title><link>https://jaylab.link/ansible-simple-playbook-practice/</link><pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/ansible-simple-playbook-practice/</guid><description>첫 Ansible ping이 publickey 오류로 막혔고, 인벤토리에 키를 지정해 풀었다. 이어서 ad-hoc 명령과 첫 플레이북까지 돌렸다.</description></item><item><title>Multipass VM 두 대로 Ansible 실습 환경 만들기</title><link>https://jaylab.link/ansible-multipass-environment/</link><pubDate>Wed, 06 Nov 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/ansible-multipass-environment/</guid><description>맥북에 Multipass VM 두 대를 띄워 제어노드에 Ansible을 설치하고, 관리노드로 SSH 키 접속을 여는 과정을 정리했다.</description></item><item><title>Mac에서 컨테이너 IP로 접속이 안 되는 이유</title><link>https://jaylab.link/docker-container-network-arch/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/docker-container-network-arch/</guid><description>Mac에서 컨테이너 IP가 보이는데도 접속되지 않는 건 Docker 네트워크가 Linux VM 안에만 있어서다.</description></item><item><title>Docker Container SSH 접속 설정</title><link>https://jaylab.link/docker-ssh-setting/</link><pubDate>Mon, 02 Sep 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/docker-ssh-setting/</guid><description>현재 진행 중인 PoC를 위해 SSH 접속 방식 테스트가 필요했다. 그러나 Ubuntu Docker image에는 기본적으로 SSH(즉, openssh-server)가 설치되어있지 않기 때문에 이번에 Docker + SSH 접속 방식을 테스트하고 기록했다.</description></item><item><title>CloudWatch Alarm 활용한 ECS Fargate 스케일아웃</title><link>https://jaylab.link/cloudwatch-alarm-ecs-task-auto-scaling/</link><pubDate>Wed, 24 Jul 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/cloudwatch-alarm-ecs-task-auto-scaling/</guid><description>시간이 흐를수록 점점 분석 Batch 프로세스가 오래걸리기 시작하면서 점점 하루를 넘어가기 시작. 이를 해결하기 위해 ECS Service에 CloudWatch를 활용한 오토스케일링을 적용하였고 그 과정을 기록하였다.</description></item><item><title>Docker ELK 구성에 Metricbeat 추가</title><link>https://jaylab.link/docker-elk-metricbeat/</link><pubDate>Wed, 10 Jul 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/docker-elk-metricbeat/</guid><description>앞서 Docker를 활용한 ELK 구성에 이어서, 이번에는 Metricbeat를 붙여보았다</description></item><item><title>Aurora MySQL 업그레이드 5.7 to 8.0, 작업 전 알아두면 좋았을 주요 포인트</title><link>https://jaylab.link/aurora-mysql-upgrade-8-key-points/</link><pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/aurora-mysql-upgrade-8-key-points/</guid><description>AWS Aurora MySQL 버전 업그레이드 작업 전 알아두면 좋을 내용들을 정리하였다.</description></item><item><title>Docker Buildx를 사용한 멀티 아키텍처 이미지 빌드, Github Actions 적용 사례</title><link>https://jaylab.link/docker-buildx-multiarch-and-git-actions/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/docker-buildx-multiarch-and-git-actions/</guid><description>Docker Buildx는 다양한 아키텍처에서 실행 가능한 이미지를 빌드할 수 있는 Docker CLI이다. 이를 활용하면 특정 아키텍쳐에서 지원하는 이미지로 빌드할 수 있다.</description></item><item><title>[ArgoCD] Error: Unable to create ‘..git/index.lock’: File exists</title><link>https://jaylab.link/argocd-index-lock-error/</link><pubDate>Thu, 02 May 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/argocd-index-lock-error/</guid><description>&lt;h4 id="argocd-application-생성시-에러-발생"&gt;ArgoCD Application 생성시 에러 발생&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;▼ Error message&lt;/strong&gt;
Unable to create application: application spec for saassss is invalid: InvalidSpecError: Unable to get app details: rpc error: code = Internal desc = Failed to checkout FETCH_HEAD: &lt;code&gt;git checkout --force FETCH_HEAD&lt;/code&gt; failed exit status 128: fatal: Unable to create ‘..git/index.lock’: File exists. Another git process seems to be running in this repository, e.g. an editor opened by ‘git commit’. Please make sure all processes are terminated then try again. If it still fails, a git process may have crashed in this repository earlier: remove the file manually to continue.&lt;/p&gt;</description></item><item><title>[CI/CD] Github Actions: build, push, update another repo file</title><link>https://jaylab.link/git-actions-build-push-update/</link><pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/git-actions-build-push-update/</guid><description>Github Actions을 사용하여 멀티플랫폼이 지원되는 이미지 빌드 방법과 Docker Hub 혹은 ECR에 Push하는 방법. 그리고 제 3의 Git Repo 파일 내용 변경 방법을 정리해보았다.</description></item><item><title>[Terraform] DB Instance 삭제된 VPC 참조 현상</title><link>https://jaylab.link/terraform-error-create-intance-by-old-vpc-id/</link><pubDate>Thu, 11 Apr 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/terraform-error-create-intance-by-old-vpc-id/</guid><description>Terraform으로 DB Instance 생성시 존재하지 않는 VPC를 참조하는 현상에 대하여</description></item><item><title>Github Actions &amp; ArgoCD CI/CD (for K8S, Java App)</title><link>https://jaylab.link/git-actions-argocd-cicd-minikube/</link><pubDate>Fri, 05 Apr 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/git-actions-argocd-cicd-minikube/</guid><description>Github Actions를 활용해서 애플리케이션 Build &amp;amp; Image push. 애플리케이션과 Kubernetes manifest 파일 변경점 발생시 ArgoCD를 통하여 로컬 Minikube 환경에 자동배포 환경 구축하기</description></item><item><title>ArgoCD 활용 Minikube 환경에 배포(feat. AWS ECR)</title><link>https://jaylab.link/argocd-ecr-image-pull-error/</link><pubDate>Thu, 28 Mar 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/argocd-ecr-image-pull-error/</guid><description>ArgoCD를 통해 내 로컬에 Minikube 클러스터 환경이 구성되도록 만들었다. 그리고 Dockerhub Public image를 가져오던 기존방식에서 AWS ECR의 image를 pull 하는 방식으로 바꿔보았고, 이 과정에서 발생한 문제에 대해 알게된 원인과 해결방법을 기록해보았다.</description></item><item><title>About Netcat and Netstat</title><link>https://jaylab.link/netcat-and-netstat/</link><pubDate>Fri, 15 Mar 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/netcat-and-netstat/</guid><description>&lt;h2 id="netcat"&gt;netcat&lt;/h2&gt;
&lt;p&gt;netcat: 네트워크 연결을 테스트하고 다른 서버와 포트의 통신 상태를 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;netcat&lt;/code&gt;은 많은 Linux 배포판에서 사용할 수 있는 네트워킹 유틸리티로, 다양한 패키지 매니저를 통해 설치할 수 있다.&lt;/p&gt;
&lt;p&gt;주요 Linux 배포판별로 &lt;code&gt;netcat&lt;/code&gt;을 설치하고 사용하는 방법을 다음과 같이 정리했다&lt;/p&gt;
&lt;h4 id="1-debian-ubuntu-apt-사용"&gt;&lt;strong&gt;1. Debian, Ubuntu (apt 사용)&lt;/strong&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install netcat-openbsd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nc -zv 10.244.0.74 &lt;span class="m"&gt;9092&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="2-fedora-centos-dnf-또는-yum-사용"&gt;&lt;strong&gt;2. Fedora, CentOS (dnf 또는 yum 사용)&lt;/strong&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install nc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 또는 CentOS에서는 yum이 보편적인 방식&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install nc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nc -zv 10.244.0.74 &lt;span class="m"&gt;9092&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-arch-linux-pacman-사용"&gt;&lt;strong&gt;3. Arch Linux (pacman 사용)&lt;/strong&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Syu gnu-netcat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nc -zv 10.244.0.74 &lt;span class="m"&gt;9092&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="4-opensuse-zypper-사용"&gt;&lt;strong&gt;4. openSUSE (zypper 사용)&lt;/strong&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo zypper install netcat-openbsd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nc -zv 10.244.0.74 &lt;span class="m"&gt;9092&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="5-alpine-linux-apk-사용"&gt;&lt;strong&gt;5. Alpine Linux (apk 사용)&lt;/strong&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apk update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apk add netcat-openbsd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nc -zv 10.244.0.74 &lt;span class="m"&gt;9092&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="6-amazon-linux-yum-또는-dnf-사용"&gt;&lt;strong&gt;6. Amazon Linux (yum 또는 dnf 사용)&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Amazon Linux 2의 경우:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install nc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nc -zv 10.244.0.74 &lt;span class="m"&gt;9092&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Amazon Linux 2023의 경우:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dnf install nc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nc -zv 10.244.0.74 &lt;span class="m"&gt;9092&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ss"&gt;ss&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;netstat -tuln&lt;/code&gt;:
시스템의 네트워크 연결, 라우팅 테이블, 인터페이스 통계, masquerade 연결, 멀티캐스트 멤버십 등을 보여준다.&lt;/p&gt;</description></item><item><title>Local K8S 환경 Kafka Application 구성(feat. Minikube)</title><link>https://jaylab.link/minikube-build-kafka-app/</link><pubDate>Tue, 12 Mar 2024 00:00:00 +0000</pubDate><guid>https://jaylab.link/minikube-build-kafka-app/</guid><description>&lt;h4 id="구축-환경"&gt;구축 환경&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Mac Apple Sillicon (arm64)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;기존 docker-compose.yaml 파일을 k8s 클러스터 구성하기 위한 yaml 파일로 convert하기 위해 &lt;strong&gt;kompose&lt;/strong&gt; 툴 사용&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install kompose
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kompose convert -f docker-compose.yml --out converted.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;converted.yaml&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;minikube, 위의 converted.yaml 활용하여 로컬에 k8s 클러스터 구축&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="minikube-사용하여-기존-kafka-application-구축"&gt;minikube 사용하여 기존 Kafka Application 구축&lt;/h3&gt;
&lt;h4 id="minikube-설치"&gt;minikube 설치&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install minikube
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="minikube-클러스터-시작"&gt;minikube 클러스터 시작&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minikube start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading="lazy" src="https://jaylab.link/minikube-build-kafka-app/image-1.png"&gt;&lt;/p&gt;
&lt;p&gt;(설치하고나면 ~/.kube/config 파일에 클러스터와 컨텍스트 관련 정보 자동으로 설정 완료)&lt;/p&gt;
&lt;h4 id="option-사용할-namespace-설정"&gt;(option) 사용할 Namespace 설정&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl create ns kafka-app
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl config set-context --current --namespace&lt;span class="o"&gt;=&lt;/span&gt;kafka-app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="로컬-image-사용하도록-설정"&gt;로컬 image 사용하도록 설정&lt;/h4&gt;
&lt;p&gt;Registry에 올리지 않은, 로컬에만 있는 image를 사용하기 위해서는 다음과 같은 커맨드 실행이 필요하다.&lt;/p&gt;</description></item></channel></rss>