sql >> データベース >  >> NoSQL >> Redis

IngressNginxコントローラーでRedisを公開する

    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
    



    1. データの10倍のメモリ使用量をRedis

    2. サンタンデールUKでの次世代データウェアハウジング

    3. サーバーがSASL認証ステップでエラーを返しました:認証に失敗しました

    4. マングースユニーク:本当は機能しない