このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「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 は認証情報プロバイダーの 1 つであり、これを使用するとハイブリッドノードを初期化できます。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 システムサービスファイルディレクトリを作成する必要があります。ディレクトリパスは、ノードで使用されているオペレーティングシステムによって異なります。
-
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
ノードで使用されているオペレーティングシステムに応じて、以下の restart コマンドの systemd サービス名を置き換えます。
-
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という名前のファイルを作成します。proxy-domain と port を環境の値に置き換えます。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