diff --git a/content/blog/k8s/access-entry/index.md b/content/blog/k8s/access-entry/index.md index af8820ec..6b00fa3e 100644 --- a/content/blog/k8s/access-entry/index.md +++ b/content/blog/k8s/access-entry/index.md @@ -218,6 +218,70 @@ EKS 테라폼 모듈에서는 워커노드의 권한에 대한 Access Entry(`EC2   +Access Entry에 사용할 수 있는 모든 정책 목록을 확인하려면 다음 명령어를 실행합니다. + +```bash +export AWS_PROFILE= +aws eks list-access-policies +``` + +Access Policy를 조회하는 주체(Principal)에는 `eks:ListAccessPolicies` 권한이 있어야 합니다. + +  + +`list-access-policies` 명령어는 다음과 같은 형식으로 출력됩니다. + +```json +{ + "accessPolicies": [ + { + "name": "AmazonEKSAdminPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy" + }, + { + "name": "AmazonEKSAdminViewPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminViewPolicy" + }, + { + "name": "AmazonEKSClusterAdminPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy" + }, + { + "name": "AmazonEKSEditPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSEditPolicy" + }, + { + "name": "AmazonEKSHybridPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSHybridPolicy" + }, + { + "name": "AmazonEKSViewPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy" + }, + { + "name": "AmazonEMRJobPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonEMRJobPolicy" + }, + { + "name": "AmazonSagemakerHyperpodClusterPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonSagemakerHyperpodClusterPolicy" + }, + { + "name": "AmazonSagemakerHyperpodControllerPolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonSagemakerHyperpodControllerPolicy" + }, + { + "name": "AmazonSagemakerHyperpodSystemNamespacePolicy", + "arn": "arn:aws:eks::aws:cluster-access-policy/AmazonSagemakerHyperpodSystemNamespacePolicy" + } + ] +} +``` + +특정 Access Entry에서 사용할 Access Policy의 `arn` 값을 확인한 다음 테라폼 코드의 `policy_arn`에 추가합니다. + +  + Terraform EKS 모듈 v20.x 기준으로 `aws_auth` configMap은 EKS 서브모듈에서 관리합니다. 아래는 `eks` 모듈에 `aws_auth` 서브모듈을 포함해서 생성한 테라폼 구조 예시입니다. diff --git a/content/blog/tinyproxy-install/index.md b/content/blog/tinyproxy-install/index.md index 0c4636b3..50c6254d 100644 --- a/content/blog/tinyproxy-install/index.md +++ b/content/blog/tinyproxy-install/index.md @@ -37,7 +37,7 @@ Network Load Balancer(NLB)의 헬스체크 요청을 제대로 처리하지 못 ![NLB Healthcheck](./2.png) -[#438](https://github.com/tinyproxy/tinyproxy/issues/438)에서 tinyproxy 메인테이너의 설명에 따르면, 이는 실제 문제가 아닌 의도된 동작이라고 합니다. tinyproxy는 요청의 출처와 관계없이 모든 오류를 기록합니다. 근본적인 문제는 NLB의 "health-check" 데몬이 제대로 형식화된 HTTP 요청을 보내지 않고 연결을 즉시 끊는 데 있습니다. +[tinyproxy doesn't handle TCP health checks well and logs errors #438](https://github.com/tinyproxy/tinyproxy/issues/438)에서 tinyproxy 메인테이너의 설명에 따르면, 이는 실제 문제가 아닌 의도된 동작이라고 합니다. tinyproxy는 요청의 출처와 관계없이 모든 오류를 기록합니다. 근본적인 문제는 NLB의 "health-check" 데몬이 제대로 형식화된 HTTP 요청을 보내지 않고 연결을 즉시 끊는 데 있습니다.   @@ -57,12 +57,12 @@ ERROR Oct 02 06:31:38.701 [16213]: read_request_line: Client (file descripto **v1.11.x의 주요 개선사항** 이러한 문제들을 해결하기 위해 `tinyproxy`를 `v1.8.3`에서 `v1.11.2`로 업그레이드하는 것을 강력히 권장합니다. v1.11.0부터 도입된 주요 개선 사항은 다음과 같습니다: -- **성능 향상**: 인바운드 연결에 대한 역방향 DNS 조회(Reverse DNS Lookup)를 기본적으로 수행하지 않아 더 빠르고 안정적인 성능을 제공합니다. [#383](https://github.com/tinyproxy/tinyproxy/issues/383#issuecomment-1887250882) +- **성능 향상**: 인바운드 연결에 대한 역방향 DNS 조회(Reverse DNS Lookup)를 기본적으로 수행하지 않아 더 빠르고 안정적인 성능을 제공합니다. 자세한 사항은 [Tinyproxy hangs at some point #383](https://github.com/tinyproxy/tinyproxy/issues/383#issuecomment-1887250882) 이슈를 참고합니다. - **버그 수정**: 이전 버전에서 발생하던 여러 안정성 문제들이 해결되었습니다.   -이 가이드에서는 2024년 10월 기준으로 최신 버전인 v1.11.2로의 수동 설치 및 업그레이드 과정을 상세히 설명합니다. +이 가이드에서는 2024년 11월 기준으로 최신 버전인 v1.11.2로의 수동 설치 및 업그레이드 과정을 상세히 설명합니다. > **참고**: > - 업그레이드 전 반드시 현재 환경을 백업하고, 테스트 환경에서 먼저 진행하는 것을 추천합니다. @@ -84,7 +84,7 @@ ERROR Oct 02 06:31:38.701 [16213]: read_request_line: Client (file descripto ### 다운로드 및 설치 -모든 설치 및 설정 작업을 root 권한으로 수행하기 위해 먼저 root 사용자로 전환합니다. 이는 시스템 수준의 변경과 특정 디렉토리에 대한 접근 권한이 필요하기 때문입니다. +모든 설치 및 설정 작업을 `root` 권한으로 수행하기 위해 먼저 `root` 사용자로 전환합니다. 이는 시스템 수준의 변경과 특정 디렉토리에 대한 접근 권한이 필요하기 때문입니다. ```bash # NOTE: YOU NEED TO INSTALL TINYPROXY AS ROOT USER! @@ -95,7 +95,13 @@ sudo -i 먼저 필요한 빌드 도구와 의존성 패키지를 설치합니다. 이는 tinyproxy를 소스로부터 컴파일하고 빌드하는 데 필요합니다. 만약 이미 설치되어 있다면 이 설치과정을 건너뛰어도 됩니다. +> ⚠️ **패키지 관리자의 종류**: 현재 시나리오는 Ubuntu 16.04 운영체제에 `tinyproxy`를 설치하는 것이므로 패키지 관리자로 `apt-get`을 사용합니다. 다른 리눅스 배포판(Distribution)에서는 패키지 관리자가 `yum`, `dnf`, `apk` 등 다른 종류일 수 있습니다. 자신의 환경에 맞는 패키지 관리자를 사용하세요. + ```bash +# Check your OS distribution and confirm the package manager +cat /etc/os-release + +# Install build dependencies to compile tinyproxy from source apt-get update apt-get install build-essential apt-get install autoconf @@ -106,11 +112,41 @@ apt-get install autoconf   -tinyproxy 소스 코드를 다운로드하고 압축을 해제합니다. +서버에 다운로드 받을 tinyproxy 버전을 [releases](https://github.com/tinyproxy/tinyproxy/releases) 페이지에서 확인한 후 `VERSION` 변수에 할당합니다. + +```bash +# Optional: install jq to parse JSON +apt-get install jq +jq --version + +# List all available versions +curl -s https://api.github.com/repos/tinyproxy/tinyproxy/releases \ + | jq '.[].tag_name' \ + | tr -d '"' +``` + +```bash +1.11.2 +1.11.1 +1.11.0 +1.11.0-rc1 +1.10.0 +1.8.4 +``` + +  + +최신 버전인 `1.11.2`를 설치하기 위해 `VERSION` 변수에 버전 정보를 할당합니다. ```bash -# Download tinyproxy VERSION=1.11.2 +``` + +  + +tinyproxy 소스 코드를 다운로드하고 압축을 해제합니다. + +```bash wget https://github.com/tinyproxy/tinyproxy/releases/download/${VERSION}/tinyproxy-${VERSION}.tar.bz2 tar -jxvf tinyproxy-${VERSION}.tar.bz2 cd tinyproxy-${VERSION}/ @@ -179,7 +215,24 @@ Allow ::1 ViaProxyName "tinyproxy" ``` -원본 기본 설정은 [tinyproxy/etc/tinyproxy.conf.in](https://github.com/tinyproxy/tinyproxy/blob/master/etc/tinyproxy.conf.in) 파일에서 확인할 수 있습니다. +  + +사내 네트워크의 프록시 서버로 `tinyproxy`를 사용할 경우, 아래 예시와 같이 VLAN 대역의 IP 혹은 클라이언트가 위치한 VPC CIDR 대역을 허용하도록 설정합니다. + +```bash +# /etc/tinyproxy/tinyproxy.conf +User nobody +Group nogroup +Port 8888 +# ... omitted for brevity ... +Allow 127.0.0.1 +Allow 172.10.10.0/24 +Allow 10.200.0.0/16 +Allow ::1 +ViaProxyName "my-prd-tinyproxy" +``` + +`tinyproxy.conf` 설정파일의 원본은 [tinyproxy/etc/tinyproxy.conf.in](https://github.com/tinyproxy/tinyproxy/blob/master/etc/tinyproxy.conf.in) 파일에서 확인할 수 있습니다.   @@ -217,12 +270,14 @@ tinyproxy 1.11.2 커넥션 테스트: -tinyproxy가 제대로 설정되었는지 확인하기 위해 디버그 모드로 실행합니다. +tinyproxy가 제대로 설정되었는지 확인합니다. ```bash tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf ``` +`tinyproxy` 명령어에서 `-d` 옵션은 디버그 모드로 실행합니다. `-c` 옵션은 설정 파일 경로를 지정합니다. +   이 테스트는 tinyproxy가 정상적으로 시작되고 HTTP 프록시 연결을 수신할 준비가 되었는지 보여줍니다. @@ -290,24 +345,24 @@ systemctl status tinyproxy.service 포트 리스닝 상태를 확인하기 위해 `net-tools` 패키지를 설치합니다. ```bash -# net-tools 패키지 설치 apt-get install net-tools ```   -리스닝 포트 검증 +리스닝 포트 상태를 확인합니다. ```bash -# tinyproxy의 리스닝 포트 확인 $ netstat -antpl | grep tinyproxy tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 8236/tinyproxy tcp6 0 0 :::8888 :::* LISTEN 8236/tinyproxy ``` +기본적으로 `tinyproxy`는 TCP 8888 포트를 리스닝합니다. +   -만약 `netstat` 명령어를 사용할 수 없는 경우, `lsof` 명령어를 사용하여 포트 리스닝 상태를 확인할 수 있습니다: +OS 환경에서 `netstat` 명령어를 사용할 수 없는 경우, `lsof` 명령어를 사용하여 포트 리스닝 상태를 확인할 수 있습니다: ```bash $ lsof -i:8888 @@ -326,12 +381,17 @@ tinyproxy 8236 nobody 4u IPv6 34120 0t0 TCP *:8888 (LISTEN) tail -f /var/log/tinyproxy/tinyproxy.log ``` +설정 파일의 로그 경로는 `/etc/tinyproxy/tinyproxy.conf` 파일에서 직접 확인할 수 있습니다. +   ## 관련자료 **Github** -[tinyproxy github](https://github.com/tinyproxy/tinyproxy) +- [tinyproxy github](https://github.com/tinyproxy/tinyproxy): Github repository +- [tinyproxy doesn't handle TCP health checks well and logs errors #438](https://github.com/tinyproxy/tinyproxy/issues/438): Github issue +- [Tinyproxy hangs at some point #383](https://github.com/tinyproxy/tinyproxy/issues/383#issuecomment-1887250882): Github issue **Stack Overflow** -[tinyproxy: How to manually install the most recent version 1.11.0 on Ubuntu? [closed]](https://stackoverflow.com/questions/71717463/tinyproxy-how-to-manually-install-the-most-recent-version-1-11-0-on-ubuntu) \ No newline at end of file + +- [tinyproxy: How to manually install the most recent version 1.11.0 on Ubuntu? [closed]](https://stackoverflow.com/questions/71717463/tinyproxy-how-to-manually-install-the-most-recent-version-1-11-0-on-ubuntu): Question