--- title: k8s es 設定檔 tags: Elasticsearch description: View the slide with "Slide Mode". --- # 如何用 elastic helm 的 values.yaml 進行 es 設定 ## 一、基本運作 ### 1. 直接寫在values.yaml的最外層,設定環境變數 ```yaml= esJavaOpts: "-Xmx1g -Xms1g" clusterName: "elasticsearch" networkHost: "0.0.0.0" ``` ### 2. 寫在 `esConfig` ```yaml= esConfig: elasticsearch.yml: | cluster.initial_master_nodes: elasticsearch-master-headless ``` ### 3. 設定 `log` 紀錄到特定路徑 - [參考](https://github.com/elastic/elasticsearch/blob/master/distribution/src/config/log4j2.properties),但是要將 `ECSJsonLayout` 改成 `ESJsonLayout` - 要注意[格式問題](http://hk.uwenku.com/question/p-xojjvogh-wy.html),行尾不能有空格 :::spoiler 設定檔 ```yaml= esConfig: {} log4j2.properties: | status = error appender.console.type = Console appender.console.name = console appender.console.layout.type = PatternLayout appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n ######## Server JSON ############################ appender.rolling.type = RollingFile appender.rolling.name = rolling appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json appender.rolling.layout.type = ESJsonLayout appender.rolling.layout.type_name = server appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz appender.rolling.policies.type = Policies appender.rolling.policies.time.type = TimeBasedTriggeringPolicy appender.rolling.policies.time.interval = 1 appender.rolling.policies.time.modulate = true appender.rolling.policies.size.type = SizeBasedTriggeringPolicy appender.rolling.policies.size.size = 128MB appender.rolling.strategy.type = DefaultRolloverStrategy appender.rolling.strategy.fileIndex = nomax appender.rolling.strategy.action.type = Delete appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path} appender.rolling.strategy.action.condition.type = IfFileName appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-* appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB ################################################ ######## Server - old style pattern ########### appender.rolling_old.type = RollingFile appender.rolling_old.name = rolling_old appender.rolling_old.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log appender.rolling_old.layout.type = PatternLayout appender.rolling_old.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n appender.rolling_old.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.log.gz appender.rolling_old.policies.type = Policies appender.rolling_old.policies.time.type = TimeBasedTriggeringPolicy appender.rolling_old.policies.time.interval = 1 appender.rolling_old.policies.time.modulate = true appender.rolling_old.policies.size.type = SizeBasedTriggeringPolicy appender.rolling_old.policies.size.size = 128MB appender.rolling_old.strategy.type = DefaultRolloverStrategy appender.rolling_old.strategy.fileIndex = nomax appender.rolling_old.strategy.action.type = Delete appender.rolling_old.strategy.action.basepath = ${sys:es.logs.base_path} appender.rolling_old.strategy.action.condition.type = IfFileName appender.rolling_old.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-* appender.rolling_old.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize appender.rolling_old.strategy.action.condition.nested_condition.exceeds = 2GB ################################################ rootLogger.level = info rootLogger.appenderRef.console.ref = console rootLogger.appenderRef.rolling.ref = rolling rootLogger.appenderRef.rolling_old.ref = rolling_old ######## Deprecation JSON ####################### appender.deprecation_rolling.type = RollingFile appender.deprecation_rolling.name = deprecation_rolling appender.deprecation_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_deprecation.json appender.deprecation_rolling.layout.type = ESJsonLayout appender.deprecation_rolling.layout.type_name = deprecation appender.deprecation_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_deprecation-%i.json.gz appender.deprecation_rolling.policies.type = Policies appender.deprecation_rolling.policies.size.type = SizeBasedTriggeringPolicy appender.deprecation_rolling.policies.size.size = 1GB appender.deprecation_rolling.strategy.type = DefaultRolloverStrategy appender.deprecation_rolling.strategy.max = 4 ################################################# logger.deprecation.name = org.elasticsearch.deprecation logger.deprecation.level = warn logger.deprecation.appenderRef.deprecation_rolling.ref = deprecation_rolling logger.deprecation.additivity = false ######## Search slowlog JSON #################### appender.index_search_slowlog_rolling.type = RollingFile appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling appender.index_search_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs\ .cluster_name}_index_search_slowlog.json appender.index_search_slowlog_rolling.layout.type = ESJsonLayout appender.index_search_slowlog_rolling.layout.type_name = index_search_slowlog appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs\ .cluster_name}_index_search_slowlog-%i.json.gz appender.index_search_slowlog_rolling.policies.type = Policies appender.index_search_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy appender.index_search_slowlog_rolling.policies.size.size = 1GB appender.index_search_slowlog_rolling.strategy.type = DefaultRolloverStrategy appender.index_search_slowlog_rolling.strategy.max = 4 ################################################# ################################################# logger.index_search_slowlog_rolling.name = index.search.slowlog logger.index_search_slowlog_rolling.level = trace logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = index_search_slowlog_rolling logger.index_search_slowlog_rolling.additivity = false ######## Indexing slowlog JSON ################## appender.index_indexing_slowlog_rolling.type = RollingFile appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}\ _index_indexing_slowlog.json appender.index_indexing_slowlog_rolling.layout.type = ESJsonLayout appender.index_indexing_slowlog_rolling.layout.type_name = index_indexing_slowlog appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}\ _index_indexing_slowlog-%i.json.gz appender.index_indexing_slowlog_rolling.policies.type = Policies appender.index_indexing_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy appender.index_indexing_slowlog_rolling.policies.size.size = 1GB appender.index_indexing_slowlog_rolling.strategy.type = DefaultRolloverStrategy appender.index_indexing_slowlog_rolling.strategy.max = 4 ################################################# logger.index_indexing_slowlog.name = index.indexing.slowlog.index logger.index_indexing_slowlog.level = trace logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling logger.index_indexing_slowlog.additivity = false ``` ::: ## 二、開啟 xpack ### 1. 先在一般模式進入 es pod 產生憑證 ```bash= bin/elasticsearch-certutil ca bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 ``` - 透過 `mount` 的方式將檔案運出 `pod` ### 2. 將憑證放入 k8s secrets - values.yaml設定 mountPath ### 3. 建立 `elastic`帳號的密碼 ```bash= kubectl create secret generic elastic-credentials --from-literal=password=自訂密碼 --from-literal=username=elastic --namespace=default ``` ### 4. 在 `esConfig` 設定 ```yaml= xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.verification_mode: certificate ``` ## ( 補充文件 ) 在設定檔內可以寫的 ```yaml= cluster.name discovery.zen.minimum_master_nodes [7.0]Deprecated in 7.0. cluster.initial_master_nodes [7.0]Added in 7.0. network.host network.publish_host path.data path.logs xpack.security.authc.reserved_realm.enabled xpack.security.enabled xpack.security.http.ssl.certificate xpack.security.http.ssl.enabled xpack.security.http.ssl.key xpack.security.transport.ssl.certificate xpack.security.transport.ssl.enabled xpack.security.transport.ssl.key xpack.security.transport.ssl.verification_mode ``` [官方文件](https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-reserved-settings.html#k8s-reserved-settings) <!-- Put the link to this slide here so people can follow --> ##