Kubernetes上のSquid用Podをプロキシとしてnginx用Podにアクセスしたい
これをプロキシサーバとして、クラスタ外からnginx用Podにアクセスしたい 次のようなManifestをapplyすれば問題ないはず...
code:manifest.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: squid-deployment
spec:
replicas: 1
selector:
matchLabels:
app: squid
template:
metadata:
labels:
app: squid
spec:
containers:
- name: squid
image: ubuntu/squid
ports:
- containerPort: 3128
resources:
limits:
memory: "128Mi"
cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
name: squid-service
spec:
type: NodePort
selector:
app: squid
ports:
- port: 3128
nodePort: 30000
アクセス先のnginx用DeploymentとServiceについて
今回は、nginx用のPodにクラスタ外から直接アクセスできる必要はないものとする
したがって、nginx用のPod群に対するNodePort型のServiceは不要である
ドメイン名を使ってServiceにアクセスする
クラスタ外からアクセスしたい場合は、nginx用のServiceにどのようなDNSレコードが割り当てられるのかを意識しなければならない
「deployable」は今回実験用に作ったNamespaceである。
cluster.localの部分は何ですか?
外部からの接続が上手く行かなかったときのメモ(原因不明)
クラスタ内では適切にプロキシが動作している
検証方法
nginxのPodが2つ存在する状況を作る
そのうえで、もう一つのnginx用Podにcurlする
検証結果
nginxからのレスポンスが返ってきた
クラスタ外ではプロキシを適切に利用できない
検証方法
Docker / Kubernetesとは無関係なWSLディストリビューションから同様のcurlコマンドを発行する
ただし、プロキシについてはIPアドレスをlocalhost、PortをSquid用ServiceのnodePortとした
検証結果
squidからエラーが返ってきた
エラーの内容はメモしていなかった。
access.logにはリクエストメソッドが-、URLが/という行が記録されていた
Dockerでsquidを単体で立て、外側から利用したところ、やはりsquixが同様の挙動をした
このとき試したのはgoogle.comへの接続
何もしていないが、直った