diff --git a/apis/fluentd/v1alpha1/plugins/output/es.go b/apis/fluentd/v1alpha1/plugins/output/es.go
index eca1dcadf..e9a7209b3 100644
--- a/apis/fluentd/v1alpha1/plugins/output/es.go
+++ b/apis/fluentd/v1alpha1/plugins/output/es.go
@@ -3,7 +3,7 @@ package output
import "github.com/fluent/fluent-operator/v2/apis/fluentd/v1alpha1/plugins"
// Elasticsearch defines the parameters for out_es output plugin
-type Elasticsearch struct {
+type ElasticsearchCommon struct {
// The hostname of your Elasticsearch node (default: localhost).
Host *string `json:"host,omitempty"`
// The port number of your Elasticsearch node (default: 9200).
@@ -21,12 +21,6 @@ type Elasticsearch struct {
CloudId *plugins.Secret `json:"cloudId,omitempty"`
// Authenticate towards Elastic Cloud using cloudAuth.
CloudAuth *plugins.Secret `json:"cloudAuth,omitempty"`
- // IndexName defines the placeholder syntax of Fluentd plugin API. See https://docs.fluentd.org/configuration/buffer-section.
- IndexName *string `json:"indexName,omitempty"`
- // If true, Fluentd uses the conventional index name format logstash-%Y.%m.%d (default: false). This option supersedes the index_name option.
- LogstashFormat *bool `json:"logstashFormat,omitempty"`
- // LogstashPrefix defines the logstash prefix index name to write events when logstash_format is true (default: logstash).
- LogstashPrefix *string `json:"logstashPrefix,omitempty"`
// Optional, The login credentials to connect to Elasticsearch
User *plugins.Secret `json:"user,omitempty"`
// Optional, The login credentials to connect to Elasticsearch
@@ -42,3 +36,21 @@ type Elasticsearch struct {
// Optional, password for ClientKey file
ClientKeyPassword *plugins.Secret `json:"clientKeyPassword,omitempty"`
}
+
+type Elasticsearch struct {
+ ElasticsearchCommon `json:",inline"`
+
+ // IndexName defines the placeholder syntax of Fluentd plugin API. See https://docs.fluentd.org/configuration/buffer-section.
+ IndexName *string `json:"indexName,omitempty"`
+ // If true, Fluentd uses the conventional index name format logstash-%Y.%m.%d (default: false). This option supersedes the index_name option.
+ LogstashFormat *bool `json:"logstashFormat,omitempty"`
+ // LogstashPrefix defines the logstash prefix index name to write events when logstash_format is true (default: logstash).
+ LogstashPrefix *string `json:"logstashPrefix,omitempty"`
+}
+
+type ElasticsearchDataStream struct {
+ ElasticsearchCommon `json:",inline"`
+
+ // You can specify Elasticsearch data stream name by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ DataStreamName *string `json:"dataStreamName"`
+}
diff --git a/apis/fluentd/v1alpha1/plugins/output/types.go b/apis/fluentd/v1alpha1/plugins/output/types.go
index 3797e1008..e7bf28186 100644
--- a/apis/fluentd/v1alpha1/plugins/output/types.go
+++ b/apis/fluentd/v1alpha1/plugins/output/types.go
@@ -34,6 +34,8 @@ type Output struct {
Http *Http `json:"http,omitempty"`
// out_es plugin
Elasticsearch *Elasticsearch `json:"elasticsearch,omitempty"`
+ // out_es datastreams plugin
+ ElasticsearchDataStream *ElasticsearchDataStream `json:"elasticsearchDataStream,omitempty"`
// out_opensearch plugin
Opensearch *Opensearch `json:"opensearch,omitempty"`
// out_kafka plugin
@@ -135,6 +137,11 @@ func (o *Output) Params(loader plugins.SecretLoader) (*params.PluginStore, error
return o.elasticsearchPlugin(ps, loader)
}
+ if o.ElasticsearchDataStream != nil {
+ ps.InsertType(string(params.ElasticsearchDataStreamOutputType))
+ return o.elasticsearchDataStreamPlugin(ps, loader)
+ }
+
if o.Opensearch != nil {
ps.InsertType(string(params.OpensearchOutputType))
return o.opensearchPlugin(ps, loader)
@@ -383,65 +390,75 @@ func (o *Output) httpPlugin(parent *params.PluginStore, loader plugins.SecretLoa
return parent
}
-func (o *Output) elasticsearchPlugin(parent *params.PluginStore, loader plugins.SecretLoader) (*params.PluginStore, error) {
- if o.Elasticsearch.Host != nil {
- parent.InsertPairs("host", fmt.Sprint(*o.Elasticsearch.Host))
+func (o *Output) elasticsearchPluginCommon(common *ElasticsearchCommon, parent *params.PluginStore, loader plugins.SecretLoader) (*params.PluginStore, error) {
+ if common.Host != nil {
+ parent.InsertPairs("host", fmt.Sprint(*common.Host))
}
- if o.Elasticsearch.Port != nil {
- parent.InsertPairs("port", fmt.Sprint(*o.Elasticsearch.Port))
+ if common.Port != nil {
+ parent.InsertPairs("port", fmt.Sprint(*common.Port))
}
- if o.Elasticsearch.Hosts != nil {
- parent.InsertPairs("hosts", fmt.Sprint(*o.Elasticsearch.Hosts))
+ if common.Hosts != nil {
+ parent.InsertPairs("hosts", fmt.Sprint(*common.Hosts))
}
- if o.Elasticsearch.User != nil {
- user, err := loader.LoadSecret(*o.Elasticsearch.User)
+ if common.User != nil {
+ user, err := loader.LoadSecret(*common.User)
if err != nil {
return nil, err
}
parent.InsertPairs("user", user)
}
- if o.Elasticsearch.Password != nil {
- pwd, err := loader.LoadSecret(*o.Elasticsearch.Password)
+ if common.Password != nil {
+ pwd, err := loader.LoadSecret(*common.Password)
if err != nil {
return nil, err
}
parent.InsertPairs("password", pwd)
}
- if o.Elasticsearch.SslVerify != nil {
- parent.InsertPairs("ssl_verify", fmt.Sprint(*o.Elasticsearch.SslVerify))
+ if common.SslVerify != nil {
+ parent.InsertPairs("ssl_verify", fmt.Sprint(*common.SslVerify))
}
- if o.Elasticsearch.CAFile != nil {
- parent.InsertPairs("ca_file", fmt.Sprint(*o.Elasticsearch.CAFile))
+ if common.CAFile != nil {
+ parent.InsertPairs("ca_file", fmt.Sprint(*common.CAFile))
}
- if o.Elasticsearch.ClientCert != nil {
- parent.InsertPairs("client_cert", fmt.Sprint(*o.Elasticsearch.ClientCert))
+ if common.ClientCert != nil {
+ parent.InsertPairs("client_cert", fmt.Sprint(*common.ClientCert))
}
- if o.Elasticsearch.ClientKey != nil {
- parent.InsertPairs("client_key", fmt.Sprint(*o.Elasticsearch.ClientKey))
+ if common.ClientKey != nil {
+ parent.InsertPairs("client_key", fmt.Sprint(*common.ClientKey))
}
- if o.Elasticsearch.ClientKeyPassword != nil {
- pwd, err := loader.LoadSecret(*o.Elasticsearch.ClientKeyPassword)
+ if common.ClientKeyPassword != nil {
+ pwd, err := loader.LoadSecret(*common.ClientKeyPassword)
if err != nil {
return nil, err
}
parent.InsertPairs("client_key_pass", pwd)
}
- if o.Elasticsearch.Scheme != nil {
- parent.InsertPairs("scheme", fmt.Sprint(*o.Elasticsearch.Scheme))
+ if common.Scheme != nil {
+ parent.InsertPairs("scheme", fmt.Sprint(*common.Scheme))
+ }
+
+ if common.Path != nil {
+ parent.InsertPairs("path", fmt.Sprint(*common.Path))
}
- if o.Elasticsearch.Path != nil {
- parent.InsertPairs("path", fmt.Sprint(*o.Elasticsearch.Path))
+ return parent, nil
+}
+
+func (o *Output) elasticsearchPlugin(parent *params.PluginStore, loader plugins.SecretLoader) (*params.PluginStore, error) {
+
+ parent, err := o.elasticsearchPluginCommon(&o.Elasticsearch.ElasticsearchCommon, parent, loader)
+ if err != nil {
+ return nil, err
}
if o.Elasticsearch.IndexName != nil {
@@ -459,6 +476,20 @@ func (o *Output) elasticsearchPlugin(parent *params.PluginStore, loader plugins.
return parent, nil
}
+func (o *Output) elasticsearchDataStreamPlugin(parent *params.PluginStore, loader plugins.SecretLoader) (*params.PluginStore, error) {
+
+ parent, err := o.elasticsearchPluginCommon(&o.ElasticsearchDataStream.ElasticsearchCommon, parent, loader)
+ if err != nil {
+ return nil, err
+ }
+
+ if o.ElasticsearchDataStream.DataStreamName != nil {
+ parent.InsertPairs("data_stream_name", fmt.Sprint(*o.ElasticsearchDataStream.DataStreamName))
+ }
+
+ return parent, nil
+}
+
func (o *Output) opensearchPlugin(parent *params.PluginStore, loader plugins.SecretLoader) (*params.PluginStore, error) {
if o.Opensearch.Host != nil {
parent.InsertPairs("host", fmt.Sprint(*o.Opensearch.Host))
diff --git a/apis/fluentd/v1alpha1/plugins/params/const.go b/apis/fluentd/v1alpha1/plugins/params/const.go
index 63f91cd76..a449819cb 100644
--- a/apis/fluentd/v1alpha1/plugins/params/const.go
+++ b/apis/fluentd/v1alpha1/plugins/params/const.go
@@ -25,17 +25,18 @@ const (
ParserPlugin PluginName = "parser"
StdoutPlugin PluginName = "stdout"
- ReLabelPlugin PluginName = "relabel"
- LabelPlugin PluginName = "label"
- LabelRouterPlugin PluginName = "label_router"
- S3Plugin PluginName = "s3"
- KafkaPlugin PluginName = "kafka2"
- ElasticsearchPlugin PluginName = "elasticsearch"
- OpensearchPlugin PluginName = "opensearch"
- MatchPlugin PluginName = "match"
- BufferPlugin PluginName = "buffer"
- CloudWatchPlugin PluginName = "cloudwatch_logs"
- DatadogPlugin PluginName = "datadog"
+ ReLabelPlugin PluginName = "relabel"
+ LabelPlugin PluginName = "label"
+ LabelRouterPlugin PluginName = "label_router"
+ S3Plugin PluginName = "s3"
+ KafkaPlugin PluginName = "kafka2"
+ ElasticsearchPlugin PluginName = "elasticsearch"
+ ElasticsearchDataStreamPlugin PluginName = "elasticsearch_data_stream"
+ OpensearchPlugin PluginName = "opensearch"
+ MatchPlugin PluginName = "match"
+ BufferPlugin PluginName = "buffer"
+ CloudWatchPlugin PluginName = "cloudwatch_logs"
+ DatadogPlugin PluginName = "datadog"
BufferTag string = "tag"
LabelTag string = "tag"
@@ -60,17 +61,18 @@ const (
StdoutFilterType FilterType = "stdout"
// Enums the supported output types
- ForwardOutputType OutputType = "forward"
- HttpOutputType OutputType = "http"
- StdOutputType OutputType = "stdout"
- KafkaOutputType OutputType = "kafka2"
- ElasticsearchOutputType OutputType = "elasticsearch"
- OpensearchOutputType OutputType = "opensearch"
- S3OutputType OutputType = "s3"
- LokiOutputType OutputType = "loki"
- CloudWatchOutputType OutputType = "cloudwatch_logs"
- DatadogOutputType OutputType = "datadog"
- CopyOutputType OutputType = "copy"
+ ForwardOutputType OutputType = "forward"
+ HttpOutputType OutputType = "http"
+ StdOutputType OutputType = "stdout"
+ KafkaOutputType OutputType = "kafka2"
+ ElasticsearchOutputType OutputType = "elasticsearch"
+ ElasticsearchDataStreamOutputType OutputType = "elasticsearch_data_stream"
+ OpensearchOutputType OutputType = "opensearch"
+ S3OutputType OutputType = "s3"
+ LokiOutputType OutputType = "loki"
+ CloudWatchOutputType OutputType = "cloudwatch_logs"
+ DatadogOutputType OutputType = "datadog"
+ CopyOutputType OutputType = "copy"
)
var (
diff --git a/apis/fluentd/v1alpha1/tests/expected/fluentd-cluster-cfg-output-copy-es-data-stream.cfg b/apis/fluentd/v1alpha1/tests/expected/fluentd-cluster-cfg-output-copy-es-data-stream.cfg
new file mode 100644
index 000000000..478eeb7e4
--- /dev/null
+++ b/apis/fluentd/v1alpha1/tests/expected/fluentd-cluster-cfg-output-copy-es-data-stream.cfg
@@ -0,0 +1,52 @@
+
+
+ @id main
+ @type label_router
+
+ @label @a2170d34e9940ec56d328100e375c43e
+
+ namespaces default,kube-system
+
+
+
+
\ No newline at end of file
diff --git a/apis/fluentd/v1alpha1/tests/expected/fluentd-cluster-cfg-output-es-data-stream.cfg b/apis/fluentd/v1alpha1/tests/expected/fluentd-cluster-cfg-output-es-data-stream.cfg
new file mode 100644
index 000000000..29d31c623
--- /dev/null
+++ b/apis/fluentd/v1alpha1/tests/expected/fluentd-cluster-cfg-output-es-data-stream.cfg
@@ -0,0 +1,24 @@
+
+
+ @id main
+ @type label_router
+
+ @label @a2170d34e9940ec56d328100e375c43e
+
+ namespaces default,kube-system
+
+
+
+
\ No newline at end of file
diff --git a/apis/fluentd/v1alpha1/tests/helper_test.go b/apis/fluentd/v1alpha1/tests/helper_test.go
index bba1b7712..13332a1d2 100644
--- a/apis/fluentd/v1alpha1/tests/helper_test.go
+++ b/apis/fluentd/v1alpha1/tests/helper_test.go
@@ -131,7 +131,6 @@ func Test_ClusterCfgOutput2ES(t *testing.T) {
i := 0
for i < maxRuntimes {
config, errs := psr.RenderMainConfig(false)
- fmt.Println(config)
g.Expect(errs).NotTo(HaveOccurred())
g.Expect(string(getExpectedCfg("./expected/fluentd-cluster-cfg-output-es.cfg"))).To(Equal(config))
@@ -139,6 +138,59 @@ func Test_ClusterCfgOutput2ES(t *testing.T) {
}
}
+func Test_ClusterCfgOutput2ESDataStream(t *testing.T) {
+ g := NewGomegaWithT(t)
+ sl := plugins.NewSecretLoader(nil, Fluentd.Namespace, logr.Logger{})
+
+ psr := fluentdv1alpha1.NewGlobalPluginResources("main")
+ psr.CombineGlobalInputsPlugins(sl, Fluentd.Spec.GlobalInputs)
+
+ clustercfgRouter, err := psr.BuildCfgRouter(&FluentdClusterFluentdConfig1)
+ g.Expect(err).NotTo(HaveOccurred())
+ clusterFilters := []fluentdv1alpha1.ClusterFilter{}
+ clusterOutputs := []fluentdv1alpha1.ClusterOutput{FluentdclusterOutput2ESDataStream}
+ clustercfgResources, _ := psr.PatchAndFilterClusterLevelResources(sl, FluentdClusterFluentdConfig1.GetCfgId(), []fluentdv1alpha1.ClusterInput{}, clusterFilters, clusterOutputs)
+ err = psr.WithCfgResources(*clustercfgRouter.Label, clustercfgResources)
+ g.Expect(err).NotTo(HaveOccurred())
+
+ // we should not see any permutations in serialized config
+ i := 0
+ for i < maxRuntimes {
+ config, errs := psr.RenderMainConfig(false)
+ g.Expect(errs).NotTo(HaveOccurred())
+ g.Expect(string(getExpectedCfg("./expected/fluentd-cluster-cfg-output-es-data-stream.cfg"))).To(Equal(config))
+
+ i++
+ }
+}
+
+func Test_ClusterCfgOutput2CopyESDataStream(t *testing.T) {
+ g := NewGomegaWithT(t)
+ sl := NewSecretLoader(logr.Logger{}, esCredentials)
+
+ psr := fluentdv1alpha1.NewGlobalPluginResources("main")
+ psr.CombineGlobalInputsPlugins(sl, Fluentd.Spec.GlobalInputs)
+
+ clustercfgRouter, err := psr.BuildCfgRouter(&FluentdClusterFluentdConfig1)
+ g.Expect(err).NotTo(HaveOccurred())
+ clusterFilters := []fluentdv1alpha1.ClusterFilter{}
+ clusterOutputs := []fluentdv1alpha1.ClusterOutput{FluentdclusterOutput2CopyESDataStream}
+ clustercfgResources, _ := psr.PatchAndFilterClusterLevelResources(sl, FluentdClusterFluentdConfig1.GetCfgId(), []fluentdv1alpha1.ClusterInput{}, clusterFilters, clusterOutputs)
+ err = psr.IdentifyCopyAndPatchOutput(clustercfgResources)
+ err = psr.WithCfgResources(*clustercfgRouter.Label, clustercfgResources)
+ g.Expect(err).NotTo(HaveOccurred())
+
+ // we should not see any permutations in serialized config
+ i := 0
+ for i < maxRuntimes {
+ config, errs := psr.RenderMainConfig(false)
+ g.Expect(errs).NotTo(HaveOccurred())
+ g.Expect(string(getExpectedCfg("./expected/fluentd-cluster-cfg-output-copy-es-data-stream.cfg"))).To(Equal(config))
+
+ i++
+ }
+}
+
func Test_Cfg2OpenSearch(t *testing.T) {
g := NewGomegaWithT(t)
sl := plugins.NewSecretLoader(nil, Fluentd.Namespace, logr.Logger{})
diff --git a/apis/fluentd/v1alpha1/tests/tools.go b/apis/fluentd/v1alpha1/tests/tools.go
index dcad8f515..5ce942547 100644
--- a/apis/fluentd/v1alpha1/tests/tools.go
+++ b/apis/fluentd/v1alpha1/tests/tools.go
@@ -367,6 +367,73 @@ spec:
logstashPrefix: ks-logstash-log
`
+ FluentdclusterOutput2ESDataStream fluentdv1alpha1.ClusterOutput
+ FluentdclusterOutput2ESDataStreamRaw = `
+apiVersion: fluentd.fluent.io/v1alpha1
+kind: ClusterOutput
+metadata:
+ name: fluentd-output-es
+ labels:
+ output.fluentd.fluent.io/enabled: "true"
+spec:
+ outputs:
+ - elasticsearchDataStream:
+ host: elasticsearch-logging-data.kubesphere-logging-system.svc
+ port: 9200
+ dataStreamName: test-ds
+`
+ FluentdclusterOutput2CopyESDataStream fluentdv1alpha1.ClusterOutput
+ FluentdclusterOutput2CopyESDataStreamRaw = `
+apiVersion: fluentd.fluent.io/v1alpha1
+kind: ClusterOutput
+metadata:
+ name: fluentd-output-es-copy
+labels:
+ output.fluentd.fluent.io/enabled: "true"
+spec:
+ outputs:
+ - copy:
+ copyMode: no_copy
+ - elasticsearchDataStream:
+ host: elasticsearch-logging-data.kubesphere-logging-system.svc
+ dataStreamName: es1-notag-1
+ port: 9243
+ scheme: https
+ sslVerify: false
+ user:
+ valueFrom:
+ secretKeyRef:
+ key: username
+ name: es-credentials
+ password:
+ valueFrom:
+ secretKeyRef:
+ key: password
+ name: es-credentials
+ buffer:
+ type: memory
+ flushMode: immediate
+ - elasticsearchDataStream:
+ host: elasticsearch-logging-data.kubesphere-logging-system.svc
+ dataStreamName: es1-notag-2
+ port: 9243
+ scheme: https
+ sslVerify: false
+ user:
+ valueFrom:
+ secretKeyRef:
+ key: username
+ name: es-credentials
+ password:
+ valueFrom:
+ secretKeyRef:
+ key: password
+ name: es-credentials
+ buffer:
+ type: memory
+ flushMode: immediate
+`
+
FluentdOutput2ES1 fluentdv1alpha1.Output
FluentdOutput2ES1Raw = `
apiVersion: fluentd.fluent.io/v1alpha1
@@ -971,6 +1038,8 @@ func init() {
ParseIntoObject(FluentdClusterOutputBufferRaw, &FluentdClusterOutputBuffer)
ParseIntoObject(FluentdClusterOutputMemoryBufferRaw, &FluentdClusterOutputMemoryBuffer)
ParseIntoObject(FluentdclusterOutput2ESRaw, &FluentdclusterOutput2ES)
+ ParseIntoObject(FluentdclusterOutput2ESDataStreamRaw, &FluentdclusterOutput2ESDataStream)
+ ParseIntoObject(FluentdclusterOutput2CopyESDataStreamRaw, &FluentdclusterOutput2CopyESDataStream)
ParseIntoObject(FluentdOutput2ES1Raw, &FluentdOutput2ES1)
ParseIntoObject(FluentdOutput2ES2Raw, &FluentdOutput2ES2)
ParseIntoObject(FluentdOutput2ES3Raw, &FluentdOutput2ES3)
diff --git a/charts/fluent-operator/Chart.yaml b/charts/fluent-operator/Chart.yaml
index c79d5c5f0..2f5cf5c9f 100644
--- a/charts/fluent-operator/Chart.yaml
+++ b/charts/fluent-operator/Chart.yaml
@@ -15,12 +15,12 @@ description: A Helm chart for Kubernetes
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 2.8.0
+version: 2.9.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
-appVersion: 2.8.0
+appVersion: 2.9.0
dependencies:
- name: fluent-bit-crds
diff --git a/charts/fluent-operator/charts/fluentd-crds/crds/fluentd.fluent.io_clusteroutputs.yaml b/charts/fluent-operator/charts/fluentd-crds/crds/fluentd.fluent.io_clusteroutputs.yaml
index ce1713fc5..2098a414f 100644
--- a/charts/fluent-operator/charts/fluentd-crds/crds/fluentd.fluent.io_clusteroutputs.yaml
+++ b/charts/fluent-operator/charts/fluentd-crds/crds/fluentd.fluent.io_clusteroutputs.yaml
@@ -765,6 +765,212 @@ spec:
type: object
type: object
type: object
+ elasticsearchDataStream:
+ description: out_es datastreams plugin
+ properties:
+ caFile:
+ description: Optional, Absolute path to CA certificate file
+ type: string
+ clientCert:
+ description: Optional, Absolute path to client Certificate
+ file
+ type: string
+ clientKey:
+ description: Optional, Absolute path to client private Key
+ file
+ type: string
+ clientKeyPassword:
+ description: Optional, password for ClientKey file
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudAuth:
+ description: Authenticate towards Elastic Cloud using cloudAuth.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudId:
+ description: Authenticate towards Elastic Cloud using CloudId.
+ If set, cloudAuth must be set as well and host, port,
+ user and password are ignored.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ dataStreamName:
+ description: You can specify Elasticsearch data stream name
+ by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ type: string
+ host:
+ description: 'The hostname of your Elasticsearch node (default:
+ localhost).'
+ type: string
+ hosts:
+ description: Hosts defines a list of hosts if you want to
+ connect to more than one Elasticsearch nodes
+ type: string
+ password:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ path:
+ description: 'Path defines the REST API endpoint of Elasticsearch
+ to post write requests (default: nil).'
+ type: string
+ port:
+ description: 'The port number of your Elasticsearch node
+ (default: 9200).'
+ format: int32
+ maximum: 65535
+ minimum: 1
+ type: integer
+ scheme:
+ description: 'Specify https if your Elasticsearch endpoint
+ supports SSL (default: http).'
+ type: string
+ sslVerify:
+ description: Optional, Force certificate validation
+ type: boolean
+ user:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ required:
+ - dataStreamName
+ type: object
format:
description: format section
properties:
diff --git a/charts/fluent-operator/charts/fluentd-crds/crds/fluentd.fluent.io_outputs.yaml b/charts/fluent-operator/charts/fluentd-crds/crds/fluentd.fluent.io_outputs.yaml
index 09dc988e1..dde16f778 100644
--- a/charts/fluent-operator/charts/fluentd-crds/crds/fluentd.fluent.io_outputs.yaml
+++ b/charts/fluent-operator/charts/fluentd-crds/crds/fluentd.fluent.io_outputs.yaml
@@ -765,6 +765,212 @@ spec:
type: object
type: object
type: object
+ elasticsearchDataStream:
+ description: out_es datastreams plugin
+ properties:
+ caFile:
+ description: Optional, Absolute path to CA certificate file
+ type: string
+ clientCert:
+ description: Optional, Absolute path to client Certificate
+ file
+ type: string
+ clientKey:
+ description: Optional, Absolute path to client private Key
+ file
+ type: string
+ clientKeyPassword:
+ description: Optional, password for ClientKey file
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudAuth:
+ description: Authenticate towards Elastic Cloud using cloudAuth.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudId:
+ description: Authenticate towards Elastic Cloud using CloudId.
+ If set, cloudAuth must be set as well and host, port,
+ user and password are ignored.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ dataStreamName:
+ description: You can specify Elasticsearch data stream name
+ by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ type: string
+ host:
+ description: 'The hostname of your Elasticsearch node (default:
+ localhost).'
+ type: string
+ hosts:
+ description: Hosts defines a list of hosts if you want to
+ connect to more than one Elasticsearch nodes
+ type: string
+ password:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ path:
+ description: 'Path defines the REST API endpoint of Elasticsearch
+ to post write requests (default: nil).'
+ type: string
+ port:
+ description: 'The port number of your Elasticsearch node
+ (default: 9200).'
+ format: int32
+ maximum: 65535
+ minimum: 1
+ type: integer
+ scheme:
+ description: 'Specify https if your Elasticsearch endpoint
+ supports SSL (default: http).'
+ type: string
+ sslVerify:
+ description: Optional, Force certificate validation
+ type: boolean
+ user:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ required:
+ - dataStreamName
+ type: object
format:
description: format section
properties:
diff --git a/config/crd/bases/fluentd.fluent.io_clusteroutputs.yaml b/config/crd/bases/fluentd.fluent.io_clusteroutputs.yaml
index ce1713fc5..2098a414f 100644
--- a/config/crd/bases/fluentd.fluent.io_clusteroutputs.yaml
+++ b/config/crd/bases/fluentd.fluent.io_clusteroutputs.yaml
@@ -765,6 +765,212 @@ spec:
type: object
type: object
type: object
+ elasticsearchDataStream:
+ description: out_es datastreams plugin
+ properties:
+ caFile:
+ description: Optional, Absolute path to CA certificate file
+ type: string
+ clientCert:
+ description: Optional, Absolute path to client Certificate
+ file
+ type: string
+ clientKey:
+ description: Optional, Absolute path to client private Key
+ file
+ type: string
+ clientKeyPassword:
+ description: Optional, password for ClientKey file
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudAuth:
+ description: Authenticate towards Elastic Cloud using cloudAuth.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudId:
+ description: Authenticate towards Elastic Cloud using CloudId.
+ If set, cloudAuth must be set as well and host, port,
+ user and password are ignored.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ dataStreamName:
+ description: You can specify Elasticsearch data stream name
+ by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ type: string
+ host:
+ description: 'The hostname of your Elasticsearch node (default:
+ localhost).'
+ type: string
+ hosts:
+ description: Hosts defines a list of hosts if you want to
+ connect to more than one Elasticsearch nodes
+ type: string
+ password:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ path:
+ description: 'Path defines the REST API endpoint of Elasticsearch
+ to post write requests (default: nil).'
+ type: string
+ port:
+ description: 'The port number of your Elasticsearch node
+ (default: 9200).'
+ format: int32
+ maximum: 65535
+ minimum: 1
+ type: integer
+ scheme:
+ description: 'Specify https if your Elasticsearch endpoint
+ supports SSL (default: http).'
+ type: string
+ sslVerify:
+ description: Optional, Force certificate validation
+ type: boolean
+ user:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ required:
+ - dataStreamName
+ type: object
format:
description: format section
properties:
diff --git a/config/crd/bases/fluentd.fluent.io_outputs.yaml b/config/crd/bases/fluentd.fluent.io_outputs.yaml
index 09dc988e1..dde16f778 100644
--- a/config/crd/bases/fluentd.fluent.io_outputs.yaml
+++ b/config/crd/bases/fluentd.fluent.io_outputs.yaml
@@ -765,6 +765,212 @@ spec:
type: object
type: object
type: object
+ elasticsearchDataStream:
+ description: out_es datastreams plugin
+ properties:
+ caFile:
+ description: Optional, Absolute path to CA certificate file
+ type: string
+ clientCert:
+ description: Optional, Absolute path to client Certificate
+ file
+ type: string
+ clientKey:
+ description: Optional, Absolute path to client private Key
+ file
+ type: string
+ clientKeyPassword:
+ description: Optional, password for ClientKey file
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudAuth:
+ description: Authenticate towards Elastic Cloud using cloudAuth.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudId:
+ description: Authenticate towards Elastic Cloud using CloudId.
+ If set, cloudAuth must be set as well and host, port,
+ user and password are ignored.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ dataStreamName:
+ description: You can specify Elasticsearch data stream name
+ by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ type: string
+ host:
+ description: 'The hostname of your Elasticsearch node (default:
+ localhost).'
+ type: string
+ hosts:
+ description: Hosts defines a list of hosts if you want to
+ connect to more than one Elasticsearch nodes
+ type: string
+ password:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ path:
+ description: 'Path defines the REST API endpoint of Elasticsearch
+ to post write requests (default: nil).'
+ type: string
+ port:
+ description: 'The port number of your Elasticsearch node
+ (default: 9200).'
+ format: int32
+ maximum: 65535
+ minimum: 1
+ type: integer
+ scheme:
+ description: 'Specify https if your Elasticsearch endpoint
+ supports SSL (default: http).'
+ type: string
+ sslVerify:
+ description: Optional, Force certificate validation
+ type: boolean
+ user:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ required:
+ - dataStreamName
+ type: object
format:
description: format section
properties:
diff --git a/docs/plugins/fluentd/output/es.md b/docs/plugins/fluentd/output/es.md
index 28202f27a..8498c09e7 100644
--- a/docs/plugins/fluentd/output/es.md
+++ b/docs/plugins/fluentd/output/es.md
@@ -1,4 +1,4 @@
-# Elasticsearch
+# ElasticsearchCommon
Elasticsearch defines the parameters for out_es output plugin
@@ -12,9 +12,6 @@ Elasticsearch defines the parameters for out_es output plugin
| path | Path defines the REST API endpoint of Elasticsearch to post write requests (default: nil). | *string |
| cloudId | Authenticate towards Elastic Cloud using CloudId. If set, cloudAuth must be set as well and host, port, user and password are ignored. | *[plugins.Secret](../secret.md) |
| cloudAuth | Authenticate towards Elastic Cloud using cloudAuth. | *[plugins.Secret](../secret.md) |
-| indexName | IndexName defines the placeholder syntax of Fluentd plugin API. See https://docs.fluentd.org/configuration/buffer-section. | *string |
-| logstashFormat | If true, Fluentd uses the conventional index name format logstash-%Y.%m.%d (default: false). This option supersedes the index_name option. | *bool |
-| logstashPrefix | LogstashPrefix defines the logstash prefix index name to write events when logstash_format is true (default: logstash). | *string |
| user | Optional, The login credentials to connect to Elasticsearch | *[plugins.Secret](../secret.md) |
| password | Optional, The login credentials to connect to Elasticsearch | *[plugins.Secret](../secret.md) |
| sslVerify | Optional, Force certificate validation | *bool |
@@ -22,3 +19,21 @@ Elasticsearch defines the parameters for out_es output plugin
| clientCert | Optional, Absolute path to client Certificate file | *string |
| clientKey | Optional, Absolute path to client private Key file | *string |
| clientKeyPassword | Optional, password for ClientKey file | *[plugins.Secret](../secret.md) |
+# Elasticsearch
+
+
+
+
+| Field | Description | Scheme |
+| ----- | ----------- | ------ |
+| indexName | IndexName defines the placeholder syntax of Fluentd plugin API. See https://docs.fluentd.org/configuration/buffer-section. | *string |
+| logstashFormat | If true, Fluentd uses the conventional index name format logstash-%Y.%m.%d (default: false). This option supersedes the index_name option. | *bool |
+| logstashPrefix | LogstashPrefix defines the logstash prefix index name to write events when logstash_format is true (default: logstash). | *string |
+# ElasticsearchDataStream
+
+
+
+
+| Field | Description | Scheme |
+| ----- | ----------- | ------ |
+| dataStreamName | You can specify Elasticsearch data stream name by this parameter. This parameter is mandatory for elasticsearch_data_stream | *string |
diff --git a/docs/plugins/fluentd/output/types.md b/docs/plugins/fluentd/output/types.md
index df76ff5ec..af707e577 100644
--- a/docs/plugins/fluentd/output/types.md
+++ b/docs/plugins/fluentd/output/types.md
@@ -17,6 +17,7 @@ Output defines all available output plugins and their parameters
| forward | out_forward plugin | *Forward |
| http | out_http plugin | *Http |
| elasticsearch | out_es plugin | *Elasticsearch |
+| elasticsearchDataStream | out_es datastreams plugin | *ElasticsearchDataStream |
| opensearch | out_opensearch plugin | *Opensearch |
| kafka | out_kafka plugin | *Kafka2 |
| s3 | out_s3 plugin | *S3 |
diff --git a/manifests/setup/fluent-operator-crd.yaml b/manifests/setup/fluent-operator-crd.yaml
index 2976128e3..e5c51e8b7 100644
--- a/manifests/setup/fluent-operator-crd.yaml
+++ b/manifests/setup/fluent-operator-crd.yaml
@@ -7663,6 +7663,212 @@ spec:
type: object
type: object
type: object
+ elasticsearchDataStream:
+ description: out_es datastreams plugin
+ properties:
+ caFile:
+ description: Optional, Absolute path to CA certificate file
+ type: string
+ clientCert:
+ description: Optional, Absolute path to client Certificate
+ file
+ type: string
+ clientKey:
+ description: Optional, Absolute path to client private Key
+ file
+ type: string
+ clientKeyPassword:
+ description: Optional, password for ClientKey file
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudAuth:
+ description: Authenticate towards Elastic Cloud using cloudAuth.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudId:
+ description: Authenticate towards Elastic Cloud using CloudId.
+ If set, cloudAuth must be set as well and host, port,
+ user and password are ignored.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ dataStreamName:
+ description: You can specify Elasticsearch data stream name
+ by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ type: string
+ host:
+ description: 'The hostname of your Elasticsearch node (default:
+ localhost).'
+ type: string
+ hosts:
+ description: Hosts defines a list of hosts if you want to
+ connect to more than one Elasticsearch nodes
+ type: string
+ password:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ path:
+ description: 'Path defines the REST API endpoint of Elasticsearch
+ to post write requests (default: nil).'
+ type: string
+ port:
+ description: 'The port number of your Elasticsearch node
+ (default: 9200).'
+ format: int32
+ maximum: 65535
+ minimum: 1
+ type: integer
+ scheme:
+ description: 'Specify https if your Elasticsearch endpoint
+ supports SSL (default: http).'
+ type: string
+ sslVerify:
+ description: Optional, Force certificate validation
+ type: boolean
+ user:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ required:
+ - dataStreamName
+ type: object
format:
description: format section
properties:
@@ -32371,6 +32577,212 @@ spec:
type: object
type: object
type: object
+ elasticsearchDataStream:
+ description: out_es datastreams plugin
+ properties:
+ caFile:
+ description: Optional, Absolute path to CA certificate file
+ type: string
+ clientCert:
+ description: Optional, Absolute path to client Certificate
+ file
+ type: string
+ clientKey:
+ description: Optional, Absolute path to client private Key
+ file
+ type: string
+ clientKeyPassword:
+ description: Optional, password for ClientKey file
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudAuth:
+ description: Authenticate towards Elastic Cloud using cloudAuth.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudId:
+ description: Authenticate towards Elastic Cloud using CloudId.
+ If set, cloudAuth must be set as well and host, port,
+ user and password are ignored.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ dataStreamName:
+ description: You can specify Elasticsearch data stream name
+ by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ type: string
+ host:
+ description: 'The hostname of your Elasticsearch node (default:
+ localhost).'
+ type: string
+ hosts:
+ description: Hosts defines a list of hosts if you want to
+ connect to more than one Elasticsearch nodes
+ type: string
+ password:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ path:
+ description: 'Path defines the REST API endpoint of Elasticsearch
+ to post write requests (default: nil).'
+ type: string
+ port:
+ description: 'The port number of your Elasticsearch node
+ (default: 9200).'
+ format: int32
+ maximum: 65535
+ minimum: 1
+ type: integer
+ scheme:
+ description: 'Specify https if your Elasticsearch endpoint
+ supports SSL (default: http).'
+ type: string
+ sslVerify:
+ description: Optional, Force certificate validation
+ type: boolean
+ user:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ required:
+ - dataStreamName
+ type: object
format:
description: format section
properties:
diff --git a/manifests/setup/setup.yaml b/manifests/setup/setup.yaml
index 09a6ee9ae..2009574a8 100644
--- a/manifests/setup/setup.yaml
+++ b/manifests/setup/setup.yaml
@@ -7663,6 +7663,212 @@ spec:
type: object
type: object
type: object
+ elasticsearchDataStream:
+ description: out_es datastreams plugin
+ properties:
+ caFile:
+ description: Optional, Absolute path to CA certificate file
+ type: string
+ clientCert:
+ description: Optional, Absolute path to client Certificate
+ file
+ type: string
+ clientKey:
+ description: Optional, Absolute path to client private Key
+ file
+ type: string
+ clientKeyPassword:
+ description: Optional, password for ClientKey file
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudAuth:
+ description: Authenticate towards Elastic Cloud using cloudAuth.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudId:
+ description: Authenticate towards Elastic Cloud using CloudId.
+ If set, cloudAuth must be set as well and host, port,
+ user and password are ignored.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ dataStreamName:
+ description: You can specify Elasticsearch data stream name
+ by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ type: string
+ host:
+ description: 'The hostname of your Elasticsearch node (default:
+ localhost).'
+ type: string
+ hosts:
+ description: Hosts defines a list of hosts if you want to
+ connect to more than one Elasticsearch nodes
+ type: string
+ password:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ path:
+ description: 'Path defines the REST API endpoint of Elasticsearch
+ to post write requests (default: nil).'
+ type: string
+ port:
+ description: 'The port number of your Elasticsearch node
+ (default: 9200).'
+ format: int32
+ maximum: 65535
+ minimum: 1
+ type: integer
+ scheme:
+ description: 'Specify https if your Elasticsearch endpoint
+ supports SSL (default: http).'
+ type: string
+ sslVerify:
+ description: Optional, Force certificate validation
+ type: boolean
+ user:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ required:
+ - dataStreamName
+ type: object
format:
description: format section
properties:
@@ -32371,6 +32577,212 @@ spec:
type: object
type: object
type: object
+ elasticsearchDataStream:
+ description: out_es datastreams plugin
+ properties:
+ caFile:
+ description: Optional, Absolute path to CA certificate file
+ type: string
+ clientCert:
+ description: Optional, Absolute path to client Certificate
+ file
+ type: string
+ clientKey:
+ description: Optional, Absolute path to client private Key
+ file
+ type: string
+ clientKeyPassword:
+ description: Optional, password for ClientKey file
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudAuth:
+ description: Authenticate towards Elastic Cloud using cloudAuth.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ cloudId:
+ description: Authenticate towards Elastic Cloud using CloudId.
+ If set, cloudAuth must be set as well and host, port,
+ user and password are ignored.
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ dataStreamName:
+ description: You can specify Elasticsearch data stream name
+ by this parameter. This parameter is mandatory for elasticsearch_data_stream
+ type: string
+ host:
+ description: 'The hostname of your Elasticsearch node (default:
+ localhost).'
+ type: string
+ hosts:
+ description: Hosts defines a list of hosts if you want to
+ connect to more than one Elasticsearch nodes
+ type: string
+ password:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ path:
+ description: 'Path defines the REST API endpoint of Elasticsearch
+ to post write requests (default: nil).'
+ type: string
+ port:
+ description: 'The port number of your Elasticsearch node
+ (default: 9200).'
+ format: int32
+ maximum: 65535
+ minimum: 1
+ type: integer
+ scheme:
+ description: 'Specify https if your Elasticsearch endpoint
+ supports SSL (default: http).'
+ type: string
+ sslVerify:
+ description: Optional, Force certificate validation
+ type: boolean
+ user:
+ description: Optional, The login credentials to connect
+ to Elasticsearch
+ properties:
+ valueFrom:
+ description: ValueSource defines how to find a value's
+ key.
+ properties:
+ secretKeyRef:
+ description: Selects a key of a secret in the pod's
+ namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or its
+ key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ type: object
+ required:
+ - dataStreamName
+ type: object
format:
description: format section
properties: