configmapでssl-session-cache値を設定する方法--kubernetes?

アレクサンダーコリン

ingress-controllerのconfigmapでssl-session-cacheの値を設定しようとしています。

問題は、それを正しく書く方法が見つからないことです。

nginx設定で次の変更が必要です:

ssl-session-cache builtin:3000 shared:SSL:100m

ssl-session-timeout: 3000

構成ssl-session-timeout: "3000"マップに追加すると、正しく機能します。これは、数秒後にnginx-configで確認できます。

しかし、どのようにssl-session-cacheを書くべきですか?

ssl-session-cache: builtin:"3000" shared:SSL:"100m" うまくいきますが、nginxに変更はありません

ssl-session-cache: "builtin:3000 shared:SSL:100m" うまくいきますが、nginxに変更はありません

ssl-session-cache "builtin:3000 shared:SSL:100m" 構文エラー-configmapを変更できません

ssl-session-cache builtin:"3000 shared:SSL:100m" 構文エラー-configmapを変更できません

誰かがconfigmapでssl-session-cacheを正しく設定する方法を知っていますか?

ありがとうございました!

KoopaKiller

TL; DR

私のラボで同じシナリオを掘り下げてテストした後、それを機能させる方法を見つけました。

ここでわかるよう、パラメーターにssl-session-cacheは、有効にするかどうかを指定するためのブール値が必要です。

必要な変更はパラメーターによって処理され、ssl_session_cache_size文字列が必要です。値をに変更しても機能すると想定するのは正しいですbuiltin:3000 shared:SSL:100mが、再現してnginx構成に飛び込んだ後、オプションbuiltin:1000が次のようになっているため、機能しないと結論付けました。ハードコードされています。

期待どおりに機能させるために、nginxテンプレートをconfigMapボリュームとしてnginx-controllerポッドなどにマウントconfigMapしてパラメーターを変更するソリューションを見つけましたssl_session_cache_size

回避策

nginx-ingress-controllerポッドのファイルの343行目を見てください/etc/nginx/template

bash-5.0$ grep -n 'builtin:' nginx.tmpl 
343:    ssl_session_cache builtin:1000 shared:SSL:{{ $cfg.SSLSessionCacheSize }};

ご覧のとおり、オプションbuiltin:1000ハードコーディングされており、YouTubeのカスタムデータを使用して変更することはできません。

ただし、それを機能させる方法はいくつかあります。テンプレートファイルをポッドに直接変更することもできますが、ポッドが何らかの理由で停止すると、これらの変更は失われます...またはnginx-にマウントされたカスタムテンプレートを使用できます。configMapコントローラポッド。

この場合、configMap行343の値を目的の値に変更するnginx.tmplコンテンツを使用して作成しましょう

  1. nginx-ingress-controllerポッドからテンプレートファイルを取得すると、nginx.tmplローカルと呼ばれるファイルが作成されます。

注:名前空間が正しいことを確認してください。

$ NGINX_POD=$(kubectl get pods -n ingress-nginx -l=app.kubernetes.io/component=controller -ojsonpath='{.items[].metadata.name}')

$ kubectl exec $NGINX_POD -n ingress-nginx -- cat template/nginx.tmpl > nginx.tmpl
  1. 行343の値をbuiltin:1000からbuiltin:3000:に変更します
$ sed -i '343s/builtin:1000/builtin:3000/' nginx.tmpl

すべてが問題ないかどうかを確認します。

$ grep builtin nginx.tmpl 
ssl_session_cache builtin:3000 shared:SSL:{{ $cfg.SSLSessionCacheSize }};

さて、この時点nginx.tmplで、目的のパラメータが変更されファイルがあります。

configMap次に進み、カスタムnginx.tmplファイルを使用してを作成しましょう

$ kubectl create cm nginx.tmpl --from-file=nginx.tmpl
configmap/nginx.tmpl created

これにより、名前空間にconfigMap呼び出さnginx.tmplれたingress-nginx名前空間が作成さます。入力の名前空間が異なる場合は、適用する前に適切な変更を加えてください。

その後、nginx-ingressデプロイメントを編集し、コンテナー仕様に新しいvolumeを追加する必要がありますvolumeMount私の場合、名前空間ingress-nginx-controller内のnginx-ingressデプロイメント名ingress-nginx

デプロイメントファイルを編集します。

$ kubectl edit deployment -n ingress-nginx ingress-nginx-controller

そして、次の構成を正しい場所に追加します。

...
        volumeMounts:
        - mountPath: /etc/nginx/template
          name: nginx-template-volume
          readOnly: true
...
      volumes:
      - name: nginx-template-volume
        configMap:
          name: nginx.tmpl
          items:
          - key: nginx.tmpl
            path: nginx.tmpl
...

ファイルを保存した後、nginxコントローラーポッドがconfigMapファイルとしてポッドにマウントされた状態で再作成されます。

変更が伝播されたかどうかを確認しましょう。

$ kubectl exec -n ingress-nginx $NGINX_POD -- cat nginx.conf | grep -n ssl_session_cache
223:    ssl_session_cache builtin:3000 shared:SSL:10m;

これで、最初の部分は完了です。

これで、shared:SSL:10mすでに使用したのと同じアプローチを使用できますconfigMapこのドキュメントに記載されている特定のパラメータを使用します

nginx.tmplで覚えている場合、SSLSessionCacheshared:SSLという変数があるためソースコードでは、変数がオプションで表されていることを確認できます{{ $cfg.SSLSessionCacheSize }}ssl-session-cache-size

340  // Size of the SSL shared cache between all worker processes.
341  // http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache
342  SSLSessionCacheSize string `json:"ssl-session-cache-size,omitempty"`

したがって、必要なのはconfigMap、このパラメーターと目的の値を使用して作成することだけです。

kind: ConfigMap
apiVersion: v1
metadata:
  name: ingress-nginx-controller
  namespace: ingress-nginx
data:
  ssl-session-cache-size: "100m"

注:ご使用の環境に相当する名前空間とconfigMap名を調整してください。

このconfigMapNGINXを適用すると、構成が再ロードされ、構成ファイルに変更が加えられます。

結果の確認:

$ NGINX_POD=$(kubectl get pods -n ingress-nginx -l=app.kubernetes.io/component=controller -ojsonpath='{.items[].metadata.name}')

$ kubectl exec -n ingress-nginx $NGINX_POD -- cat nginx.conf | grep -n ssl_session_cache
223:    ssl_session_cache builtin:3000 shared:SSL:100m;

結論

期待どおりに機能しますが、残念ながら、に変数を追加する方法が見つからないため、ハードコードbuiltin:して引き続き使用しますが、現時点では、必要に応じて簡単に変更できるconfigMapになります。

参照:

NGINXIngressカスタムテンプレート

NGINXIngressソースコード

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Kubernetes:configMapでブール型変数を設定する方法

分類Dev

Kubernetes yamlファイルで動的な値を設定する方法

分類Dev

kubernetesでstatefulsetを使用してpvcを設定する方法は?

分類Dev

SpringでRedis Http Session TimoutをUnlimitedに設定する方法

分類Dev

kubernetesでnginx入力設定を編集する方法は?

分類Dev

EKSでKubernetesノードの名前を設定する方法

分類Dev

Kubernetes / Helmで環境変数にconfigmapを使用する利点

分類Dev

kubernetesでconfigmapを編集し、別のyamlファイルの値をオーバーライドする方法は?

分類Dev

Helm NginX IngressコントローラーでConfigMap構成を使用する方法-Kubernetes

分類Dev

Kubernetesで活性/準備プローブの頻度を設定する方法

分類Dev

GKEでkubernetes設定アクセストークンを更新する方法

分類Dev

kubernetesで、更新されたconfigmapを使用するようにポッドを更新する方法

分類Dev

kubernetesでtargetPortを文字列値で設定するにはどうすればよいですか?

分類Dev

ConfigMapで変数からパスワードを取得し、kubernetesデプロイメントで使用する方法

分類Dev

名前空間間でkubernetesのconfigMapを共有する方法はありますか?

分類Dev

Spring Security + Spring Sessionで認証をtrueに設定する

分類Dev

同じサイトでSession-Cookieを設定するPHP

分類Dev

kubernetesでボリュームマウントを使用して2つのconfigmapをマージする方法

分類Dev

KubernetesでマスターのAWSpublicIPを設定する

分類Dev

Kubernetes- Ingressを設定する方法は?

分類Dev

RShiny-Shinyモジュール内で「session $ sendCustomMessage」を使用して入力値を設定する

分類Dev

GKEでKubernetes IngressにSSLを強制する方法

分類Dev

GKEでKubernetes IngressにSSLを強制する方法

分類Dev

configmapでパスワードを設定する方法

分類Dev

Azure kubernetes-configmapを読み取るPython?

分類Dev

Kubernetesからconfigmap自体を削除します

分類Dev

SQLでbool値を設定する方法

分類Dev

useContext()で値を設定する方法は?

分類Dev

moduleENで値を設定する方法-VHDL

Related 関連記事

  1. 1

    Kubernetes:configMapでブール型変数を設定する方法

  2. 2

    Kubernetes yamlファイルで動的な値を設定する方法

  3. 3

    kubernetesでstatefulsetを使用してpvcを設定する方法は?

  4. 4

    SpringでRedis Http Session TimoutをUnlimitedに設定する方法

  5. 5

    kubernetesでnginx入力設定を編集する方法は?

  6. 6

    EKSでKubernetesノードの名前を設定する方法

  7. 7

    Kubernetes / Helmで環境変数にconfigmapを使用する利点

  8. 8

    kubernetesでconfigmapを編集し、別のyamlファイルの値をオーバーライドする方法は?

  9. 9

    Helm NginX IngressコントローラーでConfigMap構成を使用する方法-Kubernetes

  10. 10

    Kubernetesで活性/準備プローブの頻度を設定する方法

  11. 11

    GKEでkubernetes設定アクセストークンを更新する方法

  12. 12

    kubernetesで、更新されたconfigmapを使用するようにポッドを更新する方法

  13. 13

    kubernetesでtargetPortを文字列値で設定するにはどうすればよいですか?

  14. 14

    ConfigMapで変数からパスワードを取得し、kubernetesデプロイメントで使用する方法

  15. 15

    名前空間間でkubernetesのconfigMapを共有する方法はありますか?

  16. 16

    Spring Security + Spring Sessionで認証をtrueに設定する

  17. 17

    同じサイトでSession-Cookieを設定するPHP

  18. 18

    kubernetesでボリュームマウントを使用して2つのconfigmapをマージする方法

  19. 19

    KubernetesでマスターのAWSpublicIPを設定する

  20. 20

    Kubernetes- Ingressを設定する方法は?

  21. 21

    RShiny-Shinyモジュール内で「session $ sendCustomMessage」を使用して入力値を設定する

  22. 22

    GKEでKubernetes IngressにSSLを強制する方法

  23. 23

    GKEでKubernetes IngressにSSLを強制する方法

  24. 24

    configmapでパスワードを設定する方法

  25. 25

    Azure kubernetes-configmapを読み取るPython?

  26. 26

    Kubernetesからconfigmap自体を削除します

  27. 27

    SQLでbool値を設定する方法

  28. 28

    useContext()で値を設定する方法は?

  29. 29

    moduleENで値を設定する方法-VHDL

ホットタグ

アーカイブ