이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
하이브리드 노드용 프록시 구성
데이터 센터 또는 엣지 환경에서 나가는 트래픽에 대해 온프레미스 환경에서 프록시 서버를 사용하는 경우 프록시 서버를 사용하려면 노드와 클러스터를 개별적으로 구성해야 합니다.
- 클러스터
-
클러스터에서 프록시 서버를 사용하도록
kube-proxy를 구성해야 합니다. Amazon EKS 클러스터를 생성한 후kube-proxy를 구성해야 합니다. - 노드
-
노드에서 프록시 서버를 사용하도록 운영 체제,
containerd,kubelet및 Amazon SSM 에이전트를 구성해야 합니다. 운영 체제 이미지의 빌드 프로세스 중에 또는 각 하이브리드 노드에서nodeadm init을 실행하기 전에 변경할 수 있습니다.
노드 수준 구성
운영 체제 이미지에 또는 각 하이브리드 노드에서 nodeadm init를 실행하기 전에 다음 구성을 적용해야 합니다.
containerd 프록시 구성
containerd는 Kubernetes의 기본 컨테이너 관리 런타임입니다. 인터넷 액세스에 프록시를 사용하는 경우 Kubernetes 및 Amazon EKS에 필요한 컨테이너 이미지를 가져올 수 있도록 containerd를 구성해야 합니다.
/etc/systemd/system/containerd.service.d 디렉터리의 http-proxy.conf라는 각 하이브리드 노드에 다음 콘텐츠로 파일을 생성합니다. proxy-domain과 port를 해당 환경의 값으로 바꿉니다.
[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"
사용자 데이터의 containerd 구성
이 파일에 대해 containerd.service.d 디렉터리를 생성해야 합니다. 재부팅하지 않고 구성 파일을 픽업하려면 systemd를 다시 로드해야 합니다. AL2023에서는 스크립트가 실행될 때 서비스가 이미 실행 중일 수 있으므로 서비스를 다시 시작해야 합니다.
mkdir -p /etc/systemd/system/containerd.service.d echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf systemctl daemon-reload systemctl restart containerd
kubelet 프록시 구성
kubelet는 각 Kubernetes 노드에서 실행되는 Kubernetes 노드 에이전트이며 해당 노드에서 실행되는 노드 및 포드를 관리할 책임이 있습니다. 온프레미스 환경에서 프록시를 사용하는 경우 Amazon EKS 클러스터의 퍼블릭 또는 프라이빗 엔드포인트와 통신할 수 있도록 kubelet를 구성해야 합니다.
/etc/systemd/system/kubelet.service.d/ 디렉터리의 http-proxy.conf라는 각 하이브리드 노드에 다음 콘텐츠로 파일을 생성합니다. proxy-domain과 port를 해당 환경의 값으로 바꿉니다.
[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"
kubelet 사용자 데이터의 구성
이 파일에 대한 kubelet.service.d 디렉터리를 생성해야 합니다. 재부팅하지 않고 구성 파일을 픽업하려면 systemd를 다시 로드해야 합니다. AL2023에서는 스크립트가 실행될 때 서비스가 이미 실행 중일 수 있으므로 서비스를 다시 시작해야 합니다.
mkdir -p /etc/systemd/system/kubelet.service.d echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf systemctl daemon-reload systemctl restart kubelet
ssm 프록시 구성
ssm은 하이브리드 노드를 초기화하는 데 사용할 수 있는 자격 증명 공급자 중 하나입니다. ssm은 AWS를 사용하여 인증하고 kubelet에서 사용하는 임시 자격 증명을 생성할 책임이 있습니다. 온프레미스 환경에서 프록시를 사용하고 노드에서 자격 증명 공급자로 ssm을 사용하는 경우 Amazon SSM 서비스 엔드포인트와 통신할 수 있도록 ssm을 구성해야 합니다.
운영 체제에 따라 아래 경로에서 http-proxy.conf라는 파일을 각 하이브리드 노드에 생성합니다.
-
Ubuntu -
/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf -
Amazon Linux 2023 및 Red Hat Enterprise Linux -
/etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf
다음 콘텐츠로 파일을 채웁니다. proxy-domain과 port를 해당 환경의 값으로 바꿉니다.
[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"
ssm 사용자 데이터의 구성
이 파일에 대한 ssm systemd 서비스 파일 디렉터리를 생성해야 합니다. 디렉터리 경로는 노드에서 사용되는 운영 체제에 따라 다릅니다.
-
Ubuntu -
/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d -
Amazon Linux 2023 및 Red Hat Enterprise Linux -
/etc/systemd/system/amazon-ssm-agent.service.d
노드에서 사용되는 운영 체제에 따라 아래 재시작 명령의 시스템 서비스 이름을 바꿉니다.
-
Ubuntu -
snap.amazon-ssm-agent.amazon-ssm-agent -
Amazon Linux 2023 및 Red Hat Enterprise Linux -
amazon-ssm-agent
mkdir -psystemd-service-file-directory echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >>systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf systemctl daemon-reload systemctl restart [.replaceable]#systemd-service-name
운영 체제 프록시 구성
인터넷 액세스에 프록시를 사용하는 경우 운영 체제의 패키지 관리자에서 하이브리드 노드 종속성을 가져올 수 있도록 운영 체제를 구성해야 합니다.
Ubuntu
-
다음 명령으로 프록시를 사용하도록
snap을 구성합니다.sudo snap set system proxy.https=http://proxy-domain:portsudo snap set system proxy.http=http://proxy-domain:port -
apt에 대한 프록시를 활성화하려면/etc/apt/디렉터리에서apt.conf라는 파일을 생성합니다. 프록시 도메인과 포트를 해당 환경의 값으로 바꿉니다.Acquire::http::Proxy "http://proxy-domain:port"; Acquire::https::Proxy "http://proxy-domain:port";
Amazon Linux 2023
-
프록시를 사용하도록
dnf을 구성합니다. 환경의 프록시 도메인 및 포트 값을 사용하여/etc/dnf/dnf.conf파일을 생성합니다.proxy=http://proxy-domain:port
Red Hat Enterprise Linux
-
프록시를 사용하도록
yum을 구성합니다. 환경의 프록시 도메인 및 포트 값을 사용하여/etc/yum.conf파일을 생성합니다.proxy=http://proxy-domain:port
IAM Roles Anywhere 프록시 구성
IAM Roles Anywhere 자격 증명 공급자 서비스는 enableCredentialsFile 플래그와 함께 IAM Roles Anywhere를 사용할 때 자격 증명을 새로 고치는 역할을 합니다(EKS Pod Identity 에이전트 참조). 온프레미스 환경에서 프록시를 사용하는 경우 IAM Roles Anywhere 엔드포인트와 통신할 수 있도록 서비스를 구성해야 합니다.
각 하이브리드 노드의 /etc/systemd/system/aws_signing_helper_update.service.d/ 디렉터리에 다음 콘텐츠로 http-proxy.conf라는 파일을 생성합니다. proxy-domain과 port를 해당 환경의 값으로 바꿉니다.
[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"
클러스터 전체 구성
이 섹션의 구성은 Amazon EKS 클러스터를 생성한 후 각 하이브리드 노드에서 nodeadm init를 실행하기 전에 적용해야 합니다.
kube-proxy 프록시 구성
Amazon EKS는 하이브리드 노드가 클러스터에 조인할 때 각 하이브리드 노드에 DaemonSet로 kube-proxy를 자동으로 설치합니다. kube-proxy를 사용하면 Amazon EKS 클러스터의 포드가 지원하는 서비스 간에 라우팅할 수 있습니다. 각 호스트를 구성하려면 kube-proxy에서 Amazon EKS 클러스터 엔드포인트에 대한 DNS 확인이 필요합니다.
-
다음 명령을 사용하여
kube-proxyDaemonSet를 편집합니다.kubectl -n kube-system edit ds kube-proxy그러면 구성된 편집기에서
kube-proxyDaemonSet 정의가 열립니다. -
HTTP_PROXY및HTTPS_PROXY에 대한 환경 변수를 추가합니다.NODE_NAME환경 변수가 구성에 이미 있어야 합니다.proxy-domain과port를 해당 환경의 값으로 바꿉니다.containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME) env: - name: HTTP_PROXY value: http://proxy-domain:port- name: HTTPS_PROXY value: http://proxy-domain:port- name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName