Redisは非HTTPポート(80,443)である6379で動作します。したがって、nginxingressコントローラーでTCP/UDPサポートを有効にする必要があります。ここにあるminikubeのドキュメントは、redisでそれを行う方法を示しています。
TCPおよび/またはUDPサービスの構成マップを更新します
ingress nginxコントローラーを使用したTCPおよびUDPサービスの構成に関するチュートリアルから借用して、minikubeingressアドオンを有効にするときにデフォルトでインストールされる構成マップを編集する必要があります。
2つの構成マップがあります。1つはTCPサービス用で、もう1つはUDPサービス用です。デフォルトでは、次のようになります。
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx
---
apiVersion: v1
kind: ConfigMap
metadata:
name: udp-services
namespace: ingress-nginx
これらの構成マップは一元化されており、構成が含まれている可能性があるため、完全に上書きするのではなく、パッチを適用するだけでよいのです。
このredisデプロイメントを例として使用してみましょう:
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-deployment
namespace: default
labels:
app: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- image: redis
imagePullPolicy: Always
name: redis
ports:
- containerPort: 6379
protocol: TCP
ファイルredis-deployment.yaml
を作成します 上記の内容を貼り付けます。次に、次のコマンドを使用してredisデプロイメントをインストールします。
kubectl apply -f redis-deployment.yaml
次に、トラフィックをポッドにルーティングできるサービスを作成する必要があります。
apiVersion: v1
kind: Service
metadata:
name: redis-service
namespace: default
spec:
selector:
app: redis
type: ClusterIP
ports:
- name: tcp-port
port: 6379
targetPort: 6379
protocol: TCP
ファイルを作成するredis-service.yaml
上記の内容を貼り付けます。次に、次のコマンドを使用してredisサービスをインストールします。
kubectl apply -f redis-service.yaml
TCPサービスをnginxingressコントローラーに追加するには、次のコマンドを実行できます。
kubectl patch configmap tcp-services -n kube-system --patch '{"data":{"6379":"default/redis-service:6379"}}'
場所:
6379
:サービスがminikube仮想マシンの外部からリッスンする必要があるポート
default
:サービスがインストールされている名前空間
redis-service
:サービスの名前
次のコマンドを使用して、リソースにパッチが適用されていることを確認できます。
kubectl get configmap tcp-services -n kube-system -o yaml
次のように表示されます:
apiVersion: v1
data:
"6379": default/redis-service:6379
kind: ConfigMap
metadata:
creationTimestamp: "2019-10-01T16:19:57Z"
labels:
addonmanager.kubernetes.io/mode: EnsureExists
name: tcp-services
namespace: kube-system
resourceVersion: "2857"
selfLink: /api/v1/namespaces/kube-system/configmaps/tcp-services
uid: 4f7fac22-e467-11e9-b543-080027057910
検証する必要がある唯一の値は、dataプロパティの下に次のような値があることです。
"6379": default/redis-service:6379
ingress-nginx-controllerをパッチします
外部クラスターから接続を取得するために実行する必要がある最後のステップが1つあります。 nginxコントローラーにパッチを適用して、ポート6379でリッスンし、トラフィックをサービスにルーティングできるようにする必要があります。これを行うには、パッチファイルを作成する必要があります。
spec:
template:
spec:
containers:
- name: ingress-nginx-controller
ports:
- containerPort: 6379
hostPort: 6379
ingress-nginx-controller-patch.yaml
というファイルを作成します 上記の内容を貼り付けます。
次に、次のコマンドを使用して変更を適用します。
kubectl patch deployment ingress-nginx-controller --patch "$(cat ingress-nginx-controller-patch.yaml)" -n kube-system