k8s上にプロキシサーバー(squid)を建てる

概要

マンションで共通の回線を使っているものの、しょっちゅう Port unrechable でパケロスする ポート足りてない疑惑があるので外にプロキシを建てたくなった。

k8sクラスタを運用していてそこの上で動かせると管理が楽なので動かしてみた ついでにhpaの設定とかもしてみた。自分一人だと負荷がかからないので多分スケールすることはない。 ググって出てくる情報がすくなかったので備忘録

環境

  • Provider: rke1
  • Kubernetes Version: v1.24.8
  • ingress-nginx(community)

準備

まず外に置く関係でbasic認証は必須になるので以下のコマンドで用意する

htpasswd -c passwords neko

これで生成された内容をconfigmapで指定します

チャートの準備

https://github.com/Im-neko/helm-charts/tree/main/charts/squid

cm.yamlのpasswordsを準備で用意した認証情報に書き換える

apiVersion: v1
kind: ConfigMap
metadata:
  name: squid-config
data:
  squid.conf: |
    auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwords
    acl authenticated proxy_auth REQUIRED
    http_access allow authenticated
    http_port 3128
  passwords: |
    neko:$apr1$Ev1wvaWR$UPshePkqojOo2Tx8kVtRH

ingress-nginxの設定

tcpでリクエストを渡してあげないと上手くいかなかったので設定する

# -- TCP service key-value pairs
## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md
##
tcp:
  3128: "internal-service/squid:3128"

デプロイ

それぞれingress-nginx, squidのチャートがあるディレクトリで

helm upgrade ingress-nginx ingress-nginx
helm upgrade --install squid squid

動作確認

# proxy無し
curl ifconfig.me

# proxy有り
curl ifconfig.me -x http://neko:[email protected]:3128

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です