// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.Kops.Inputs
{

    public sealed class ClusterKubeApiServerArgs : global::Pulumi.ResourceArgs
    {
        [Input("address")]
        public Input<string>? Address { get; set; }

        [Input("admissionControlConfigFile")]
        public Input<string>? AdmissionControlConfigFile { get; set; }

        [Input("admissionControls")]
        private InputList<string>? _admissionControls;
        public InputList<string> AdmissionControls
        {
            get => _admissionControls ?? (_admissionControls = new InputList<string>());
            set => _admissionControls = value;
        }

        [Input("advertiseAddress")]
        public Input<string>? AdvertiseAddress { get; set; }

        [Input("allowPrivileged")]
        public Input<bool>? AllowPrivileged { get; set; }

        [Input("anonymousAuth")]
        public Input<Inputs.ClusterKubeApiServerAnonymousAuthArgs>? AnonymousAuth { get; set; }

        [Input("apiAudiences")]
        private InputList<string>? _apiAudiences;
        public InputList<string> ApiAudiences
        {
            get => _apiAudiences ?? (_apiAudiences = new InputList<string>());
            set => _apiAudiences = value;
        }

        [Input("apiServerCount")]
        public Input<int>? ApiServerCount { get; set; }

        [Input("appendAdmissionPlugins")]
        private InputList<string>? _appendAdmissionPlugins;
        public InputList<string> AppendAdmissionPlugins
        {
            get => _appendAdmissionPlugins ?? (_appendAdmissionPlugins = new InputList<string>());
            set => _appendAdmissionPlugins = value;
        }

        [Input("auditDynamicConfiguration")]
        public Input<bool>? AuditDynamicConfiguration { get; set; }

        [Input("auditLogFormat")]
        public Input<string>? AuditLogFormat { get; set; }

        [Input("auditLogMaxAge")]
        public Input<int>? AuditLogMaxAge { get; set; }

        [Input("auditLogMaxBackups")]
        public Input<int>? AuditLogMaxBackups { get; set; }

        [Input("auditLogMaxSize")]
        public Input<int>? AuditLogMaxSize { get; set; }

        [Input("auditLogPath")]
        public Input<string>? AuditLogPath { get; set; }

        [Input("auditPolicyFile")]
        public Input<string>? AuditPolicyFile { get; set; }

        [Input("auditWebhookBatchBufferSize")]
        public Input<int>? AuditWebhookBatchBufferSize { get; set; }

        [Input("auditWebhookBatchMaxSize")]
        public Input<int>? AuditWebhookBatchMaxSize { get; set; }

        [Input("auditWebhookBatchMaxWait")]
        public Input<string>? AuditWebhookBatchMaxWait { get; set; }

        [Input("auditWebhookBatchThrottleBurst")]
        public Input<int>? AuditWebhookBatchThrottleBurst { get; set; }

        [Input("auditWebhookBatchThrottleEnable")]
        public Input<bool>? AuditWebhookBatchThrottleEnable { get; set; }

        [Input("auditWebhookBatchThrottleQps")]
        public Input<string>? AuditWebhookBatchThrottleQps { get; set; }

        [Input("auditWebhookConfigFile")]
        public Input<string>? AuditWebhookConfigFile { get; set; }

        [Input("auditWebhookInitialBackoff")]
        public Input<string>? AuditWebhookInitialBackoff { get; set; }

        [Input("auditWebhookMode")]
        public Input<string>? AuditWebhookMode { get; set; }

        [Input("authenticationTokenWebhookCacheTtl")]
        public Input<string>? AuthenticationTokenWebhookCacheTtl { get; set; }

        [Input("authenticationTokenWebhookConfigFile")]
        public Input<string>? AuthenticationTokenWebhookConfigFile { get; set; }

        [Input("authorizationMode")]
        public Input<string>? AuthorizationMode { get; set; }

        [Input("authorizationRbacSuperUser")]
        public Input<string>? AuthorizationRbacSuperUser { get; set; }

        [Input("authorizationWebhookCacheAuthorizedTtl")]
        public Input<string>? AuthorizationWebhookCacheAuthorizedTtl { get; set; }

        [Input("authorizationWebhookCacheUnauthorizedTtl")]
        public Input<string>? AuthorizationWebhookCacheUnauthorizedTtl { get; set; }

        [Input("authorizationWebhookConfigFile")]
        public Input<string>? AuthorizationWebhookConfigFile { get; set; }

        [Input("basicAuthFile")]
        public Input<string>? BasicAuthFile { get; set; }

        [Input("bindAddress")]
        public Input<string>? BindAddress { get; set; }

        [Input("clientCaFile")]
        public Input<string>? ClientCaFile { get; set; }

        /// <summary>
        /// - cloud_provider_spec - CloudProvider configures the cloud provider to use.
        /// </summary>
        [Input("cloudProvider")]
        public Input<string>? CloudProvider { get; set; }

        [Input("corsAllowedOrigins")]
        private InputList<string>? _corsAllowedOrigins;
        public InputList<string> CorsAllowedOrigins
        {
            get => _corsAllowedOrigins ?? (_corsAllowedOrigins = new InputList<string>());
            set => _corsAllowedOrigins = value;
        }

        [Input("cpuLimit")]
        public Input<string>? CpuLimit { get; set; }

        [Input("cpuRequest")]
        public Input<string>? CpuRequest { get; set; }

        [Input("defaultNotReadyTolerationSeconds")]
        public Input<int>? DefaultNotReadyTolerationSeconds { get; set; }

        [Input("defaultUnreachableTolerationSeconds")]
        public Input<int>? DefaultUnreachableTolerationSeconds { get; set; }

        [Input("disableAdmissionPlugins")]
        private InputList<string>? _disableAdmissionPlugins;
        public InputList<string> DisableAdmissionPlugins
        {
            get => _disableAdmissionPlugins ?? (_disableAdmissionPlugins = new InputList<string>());
            set => _disableAdmissionPlugins = value;
        }

        [Input("disableBasicAuth")]
        public Input<bool>? DisableBasicAuth { get; set; }

        [Input("enableAdmissionPlugins")]
        private InputList<string>? _enableAdmissionPlugins;
        public InputList<string> EnableAdmissionPlugins
        {
            get => _enableAdmissionPlugins ?? (_enableAdmissionPlugins = new InputList<string>());
            set => _enableAdmissionPlugins = value;
        }

        [Input("enableAggregatorRouting")]
        public Input<bool>? EnableAggregatorRouting { get; set; }

        [Input("enableBootstrapAuthToken")]
        public Input<bool>? EnableBootstrapAuthToken { get; set; }

        [Input("enableProfiling")]
        public Input<bool>? EnableProfiling { get; set; }

        [Input("encryptionProviderConfig")]
        public Input<string>? EncryptionProviderConfig { get; set; }

        [Input("etcdCaFile")]
        public Input<string>? EtcdCaFile { get; set; }

        [Input("etcdCertFile")]
        public Input<string>? EtcdCertFile { get; set; }

        [Input("etcdKeyFile")]
        public Input<string>? EtcdKeyFile { get; set; }

        [Input("etcdQuorumRead")]
        public Input<bool>? EtcdQuorumRead { get; set; }

        [Input("etcdServers")]
        private InputList<string>? _etcdServers;
        public InputList<string> EtcdServers
        {
            get => _etcdServers ?? (_etcdServers = new InputList<string>());
            set => _etcdServers = value;
        }

        [Input("etcdServersOverrides")]
        private InputList<string>? _etcdServersOverrides;
        public InputList<string> EtcdServersOverrides
        {
            get => _etcdServersOverrides ?? (_etcdServersOverrides = new InputList<string>());
            set => _etcdServersOverrides = value;
        }

        [Input("eventTtl")]
        public Input<string>? EventTtl { get; set; }

        [Input("experimentalEncryptionProviderConfig")]
        public Input<string>? ExperimentalEncryptionProviderConfig { get; set; }

        [Input("featureGates")]
        private InputMap<string>? _featureGates;
        public InputMap<string> FeatureGates
        {
            get => _featureGates ?? (_featureGates = new InputMap<string>());
            set => _featureGates = value;
        }

        [Input("http2MaxStreamsPerConnection")]
        public Input<int>? Http2MaxStreamsPerConnection { get; set; }

        [Input("image")]
        public Input<string>? Image { get; set; }

        [Input("insecureBindAddress")]
        public Input<string>? InsecureBindAddress { get; set; }

        [Input("insecurePort")]
        public Input<int>? InsecurePort { get; set; }

        [Input("kubeletCertificateAuthority")]
        public Input<string>? KubeletCertificateAuthority { get; set; }

        [Input("kubeletClientCertificate")]
        public Input<string>? KubeletClientCertificate { get; set; }

        [Input("kubeletClientKey")]
        public Input<string>? KubeletClientKey { get; set; }

        [Input("kubeletPreferredAddressTypes")]
        private InputList<string>? _kubeletPreferredAddressTypes;
        public InputList<string> KubeletPreferredAddressTypes
        {
            get => _kubeletPreferredAddressTypes ?? (_kubeletPreferredAddressTypes = new InputList<string>());
            set => _kubeletPreferredAddressTypes = value;
        }

        [Input("logFormat")]
        public Input<string>? LogFormat { get; set; }

        [Input("logLevel")]
        public Input<int>? LogLevel { get; set; }

        [Input("maxMutatingRequestsInflight")]
        public Input<int>? MaxMutatingRequestsInflight { get; set; }

        [Input("maxRequestsInflight")]
        public Input<int>? MaxRequestsInflight { get; set; }

        [Input("memoryLimit")]
        public Input<string>? MemoryLimit { get; set; }

        [Input("memoryRequest")]
        public Input<string>? MemoryRequest { get; set; }

        [Input("minRequestTimeout")]
        public Input<int>? MinRequestTimeout { get; set; }

        [Input("oidcCaFile")]
        public Input<string>? OidcCaFile { get; set; }

        [Input("oidcClientId")]
        public Input<string>? OidcClientId { get; set; }

        [Input("oidcGroupsClaim")]
        public Input<string>? OidcGroupsClaim { get; set; }

        [Input("oidcGroupsPrefix")]
        public Input<string>? OidcGroupsPrefix { get; set; }

        [Input("oidcIssuerUrl")]
        public Input<string>? OidcIssuerUrl { get; set; }

        [Input("oidcRequiredClaims")]
        private InputList<string>? _oidcRequiredClaims;
        public InputList<string> OidcRequiredClaims
        {
            get => _oidcRequiredClaims ?? (_oidcRequiredClaims = new InputList<string>());
            set => _oidcRequiredClaims = value;
        }

        [Input("oidcUsernameClaim")]
        public Input<string>? OidcUsernameClaim { get; set; }

        [Input("oidcUsernamePrefix")]
        public Input<string>? OidcUsernamePrefix { get; set; }

        [Input("proxyClientCertFile")]
        public Input<string>? ProxyClientCertFile { get; set; }

        [Input("proxyClientKeyFile")]
        public Input<string>? ProxyClientKeyFile { get; set; }

        [Input("requestTimeout")]
        public Input<string>? RequestTimeout { get; set; }

        [Input("requestheaderAllowedNames")]
        private InputList<string>? _requestheaderAllowedNames;
        public InputList<string> RequestheaderAllowedNames
        {
            get => _requestheaderAllowedNames ?? (_requestheaderAllowedNames = new InputList<string>());
            set => _requestheaderAllowedNames = value;
        }

        [Input("requestheaderClientCaFile")]
        public Input<string>? RequestheaderClientCaFile { get; set; }

        [Input("requestheaderExtraHeaderPrefixes")]
        private InputList<string>? _requestheaderExtraHeaderPrefixes;
        public InputList<string> RequestheaderExtraHeaderPrefixes
        {
            get => _requestheaderExtraHeaderPrefixes ?? (_requestheaderExtraHeaderPrefixes = new InputList<string>());
            set => _requestheaderExtraHeaderPrefixes = value;
        }

        [Input("requestheaderGroupHeaders")]
        private InputList<string>? _requestheaderGroupHeaders;
        public InputList<string> RequestheaderGroupHeaders
        {
            get => _requestheaderGroupHeaders ?? (_requestheaderGroupHeaders = new InputList<string>());
            set => _requestheaderGroupHeaders = value;
        }

        [Input("requestheaderUsernameHeaders")]
        private InputList<string>? _requestheaderUsernameHeaders;
        public InputList<string> RequestheaderUsernameHeaders
        {
            get => _requestheaderUsernameHeaders ?? (_requestheaderUsernameHeaders = new InputList<string>());
            set => _requestheaderUsernameHeaders = value;
        }

        [Input("runtimeConfig")]
        private InputMap<string>? _runtimeConfig;
        public InputMap<string> RuntimeConfig
        {
            get => _runtimeConfig ?? (_runtimeConfig = new InputMap<string>());
            set => _runtimeConfig = value;
        }

        [Input("securePort")]
        public Input<int>? SecurePort { get; set; }

        [Input("serviceAccountIssuer")]
        public Input<string>? ServiceAccountIssuer { get; set; }

        [Input("serviceAccountJwksuri")]
        public Input<string>? ServiceAccountJwksuri { get; set; }

        [Input("serviceAccountKeyFiles")]
        private InputList<string>? _serviceAccountKeyFiles;
        public InputList<string> ServiceAccountKeyFiles
        {
            get => _serviceAccountKeyFiles ?? (_serviceAccountKeyFiles = new InputList<string>());
            set => _serviceAccountKeyFiles = value;
        }

        [Input("serviceAccountSigningKeyFile")]
        public Input<string>? ServiceAccountSigningKeyFile { get; set; }

        /// <summary>
        /// - String - ServiceClusterIPRange is the CIDR, from the internal network, where we allocate IPs for services.
        /// </summary>
        [Input("serviceClusterIpRange")]
        public Input<string>? ServiceClusterIpRange { get; set; }

        [Input("serviceNodePortRange")]
        public Input<string>? ServiceNodePortRange { get; set; }

        [Input("storageBackend")]
        public Input<string>? StorageBackend { get; set; }

        [Input("targetRamMb")]
        public Input<int>? TargetRamMb { get; set; }

        [Input("tlsCertFile")]
        public Input<string>? TlsCertFile { get; set; }

        [Input("tlsCipherSuites")]
        private InputList<string>? _tlsCipherSuites;
        public InputList<string> TlsCipherSuites
        {
            get => _tlsCipherSuites ?? (_tlsCipherSuites = new InputList<string>());
            set => _tlsCipherSuites = value;
        }

        [Input("tlsMinVersion")]
        public Input<string>? TlsMinVersion { get; set; }

        [Input("tlsPrivateKeyFile")]
        public Input<string>? TlsPrivateKeyFile { get; set; }

        [Input("tokenAuthFile")]
        public Input<string>? TokenAuthFile { get; set; }

        public ClusterKubeApiServerArgs()
        {
        }
        public static new ClusterKubeApiServerArgs Empty => new ClusterKubeApiServerArgs();
    }
}
