Skip to content

Commit

Permalink
chore: Update contents
Browse files Browse the repository at this point in the history
  • Loading branch information
younsl committed Nov 27, 2024
1 parent bddb890 commit fe833b8
Show file tree
Hide file tree
Showing 2 changed files with 138 additions and 14 deletions.
64 changes: 64 additions & 0 deletions content/blog/k8s/access-entry/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,70 @@ EKS 테라폼 모듈에서는 워커노드의 권한에 대한 Access Entry(`EC2

 

Access Entry에 사용할 수 있는 모든 정책 목록을 확인하려면 다음 명령어를 실행합니다.

```bash
export AWS_PROFILE=<YOUR_PROFILE_NAME>
aws eks list-access-policies
```

Access Policy를 조회하는 주체(Principal)에는 `eks:ListAccessPolicies` 권한이 있어야 합니다.

&nbsp;

`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`에 추가합니다.

&nbsp;

Terraform EKS 모듈 v20.x 기준으로 `aws_auth` configMap은 EKS 서브모듈에서 관리합니다.

아래는 `eks` 모듈에 `aws_auth` 서브모듈을 포함해서 생성한 테라폼 구조 예시입니다.
Expand Down
88 changes: 74 additions & 14 deletions content/blog/tinyproxy-install/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 요청을 보내지 않고 연결을 즉시 끊는 데 있습니다.

&nbsp;

Expand All @@ -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) 이슈를 참고합니다.
- **버그 수정**: 이전 버전에서 발생하던 여러 안정성 문제들이 해결되었습니다.

&nbsp;

이 가이드에서는 2024년 10월 기준으로 최신 버전인 v1.11.2로의 수동 설치 및 업그레이드 과정을 상세히 설명합니다.
이 가이드에서는 2024년 11월 기준으로 최신 버전인 v1.11.2로의 수동 설치 및 업그레이드 과정을 상세히 설명합니다.

> **참고**:
> - 업그레이드 전 반드시 현재 환경을 백업하고, 테스트 환경에서 먼저 진행하는 것을 추천합니다.
Expand All @@ -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!
Expand All @@ -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
Expand All @@ -106,11 +112,41 @@ apt-get install autoconf

&nbsp;

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
```

&nbsp;

최신 버전인 `1.11.2`를 설치하기 위해 `VERSION` 변수에 버전 정보를 할당합니다.

```bash
# Download tinyproxy
VERSION=1.11.2
```

&nbsp;

tinyproxy 소스 코드를 다운로드하고 압축을 해제합니다.

```bash
wget https://github.com/tinyproxy/tinyproxy/releases/download/${VERSION}/tinyproxy-${VERSION}.tar.bz2
tar -jxvf tinyproxy-${VERSION}.tar.bz2
cd tinyproxy-${VERSION}/
Expand Down Expand Up @@ -179,7 +215,24 @@ Allow ::1
ViaProxyName "tinyproxy"
```

원본 기본 설정은 [tinyproxy/etc/tinyproxy.conf.in](https://github.com/tinyproxy/tinyproxy/blob/master/etc/tinyproxy.conf.in) 파일에서 확인할 수 있습니다.
&nbsp;

사내 네트워크의 프록시 서버로 `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) 파일에서 확인할 수 있습니다.

&nbsp;

Expand Down Expand Up @@ -217,12 +270,14 @@ tinyproxy 1.11.2

커넥션 테스트:

tinyproxy가 제대로 설정되었는지 확인하기 위해 디버그 모드로 실행합니다.
tinyproxy가 제대로 설정되었는지 확인합니다.

```bash
tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf
```

`tinyproxy` 명령어에서 `-d` 옵션은 디버그 모드로 실행합니다. `-c` 옵션은 설정 파일 경로를 지정합니다.

&nbsp;

이 테스트는 tinyproxy가 정상적으로 시작되고 HTTP 프록시 연결을 수신할 준비가 되었는지 보여줍니다.
Expand Down Expand Up @@ -290,24 +345,24 @@ systemctl status tinyproxy.service
포트 리스닝 상태를 확인하기 위해 `net-tools` 패키지를 설치합니다.

```bash
# net-tools 패키지 설치
apt-get install net-tools
```

&nbsp;

리스닝 포트 검증
리스닝 포트 상태를 확인합니다.

```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 포트를 리스닝합니다.

&nbsp;

만약 `netstat` 명령어를 사용할 수 없는 경우, `lsof` 명령어를 사용하여 포트 리스닝 상태를 확인할 수 있습니다:
OS 환경에서 `netstat` 명령어를 사용할 수 없는 경우, `lsof` 명령어를 사용하여 포트 리스닝 상태를 확인할 수 있습니다:

```bash
$ lsof -i:8888
Expand All @@ -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` 파일에서 직접 확인할 수 있습니다.

&nbsp;

## 관련자료

**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)

- [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

0 comments on commit fe833b8

Please sign in to comment.