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を正しく設定する方法を知っていますか?
ありがとうございました!
私のラボで同じシナリオを掘り下げてテストした後、それを機能させる方法を見つけました。
ここでわかるように、パラメーターに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コンテンツを使用してを作成しましょう。
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
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で覚えている場合、SSLSessionCache()shared: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名を調整してください。
このconfigMap
NGINXを適用すると、構成が再ロードされ、構成ファイルに変更が加えられます。
結果の確認:
$ 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になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加