func (s *BuiltInAuthenticationOptions) AddFlags(fs *pflag.FlagSet) { if s.Anonymous != nil { fs.BoolVar(&s.Anonymous.Allow, "anonymous-auth", s.Anonymous.Allow, ""+ "Enables anonymous requests to the secure port of the API server. "+ "Requests that are not rejected by another authentication method are treated as anonymous requests. "+ "Anonymous requests have a username of system:anonymous, and a group name of system:unauthenticated.") } if s.AnyToken != nil { fs.BoolVar(&s.AnyToken.Allow, "insecure-allow-any-token", s.AnyToken.Allow, ""+ "If set, your server will be INSECURE. Any token will be allowed and user information will be parsed "+ "from the token as `username/group1,group2`") } if s.ClientCert != nil { s.ClientCert.AddFlags(fs) } if s.Keystone != nil { fs.StringVar(&s.Keystone.URL, "experimental-keystone-url", s.Keystone.URL, "If passed, activates the keystone authentication plugin.") fs.StringVar(&s.Keystone.CAFile, "experimental-keystone-ca-file", s.Keystone.CAFile, ""+ "If set, the Keystone server's certificate will be verified by one of the authorities "+ "in the experimental-keystone-ca-file, otherwise the host's root CA set will be used.") } if s.OIDC != nil { fs.StringVar(&s.OIDC.IssuerURL, "oidc-issuer-url", s.OIDC.IssuerURL, ""+ "The URL of the OpenID issuer, only HTTPS scheme will be accepted. "+ "If set, it will be used to verify the OIDC JSON Web Token (JWT).") fs.StringVar(&s.OIDC.ClientID, "oidc-client-id", s.OIDC.ClientID, "The client ID for the OpenID Connect client, must be set if oidc-issuer-url is set.") fs.StringVar(&s.OIDC.CAFile, "oidc-ca-file", s.OIDC.CAFile, ""+ "If set, the OpenID server's certificate will be verified by one of the authorities "+ "in the oidc-ca-file, otherwise the host's root CA set will be used.") fs.StringVar(&s.OIDC.UsernameClaim, "oidc-username-claim", "sub", ""+ "The OpenID claim to use as the user name. Note that claims other than the default ('sub') "+ "is not guaranteed to be unique and immutable. This flag is experimental, please see "+ "the authentication documentation for further details.") fs.StringVar(&s.OIDC.GroupsClaim, "oidc-groups-claim", "", ""+ "If provided, the name of a custom OpenID Connect claim for specifying user groups. "+ "The claim value is expected to be a string or array of strings. This flag is experimental, "+ "please see the authentication documentation for further details.") } if s.PasswordFile != nil { fs.StringVar(&s.PasswordFile.BasicAuthFile, "basic-auth-file", s.PasswordFile.BasicAuthFile, ""+ "If set, the file that will be used to admit requests to the secure port of the API server "+ "via http basic authentication.") } if s.RequestHeader != nil { s.RequestHeader.AddFlags(fs) } if s.ServiceAccounts != nil { fs.StringArrayVar(&s.ServiceAccounts.KeyFiles, "service-account-key-file", s.ServiceAccounts.KeyFiles, ""+ "File containing PEM-encoded x509 RSA or ECDSA private or public keys, used to verify "+ "ServiceAccount tokens. If unspecified, --tls-private-key-file is used. "+ "The specified file can contain multiple keys, and the flag can be specified multiple times with different files.") fs.BoolVar(&s.ServiceAccounts.Lookup, "service-account-lookup", s.ServiceAccounts.Lookup, "If true, validate ServiceAccount tokens exist in etcd as part of authentication.") } if s.TokenFile != nil { fs.StringVar(&s.TokenFile.TokenFile, "token-auth-file", s.TokenFile.TokenFile, ""+ "If set, the file that will be used to secure the secure port of the API server "+ "via token authentication.") } if s.WebHook != nil { fs.StringVar(&s.WebHook.ConfigFile, "authentication-token-webhook-config-file", s.WebHook.ConfigFile, ""+ "File with webhook configuration for token authentication in kubeconfig format. "+ "The API server will query the remote service to determine authentication for bearer tokens.") fs.DurationVar(&s.WebHook.CacheTTL, "authentication-token-webhook-cache-ttl", s.WebHook.CacheTTL, "The duration to cache responses from the webhook token authenticator. Default is 2m.") } }
// AddFlags adds flags for a specific APIServer to the specified FlagSet func (s *ServerRunOptions) AddFlags(fs *pflag.FlagSet) { // Add the generic flags. s.GenericServerRunOptions.AddUniversalFlags(fs) //Add etcd specific flags. s.GenericServerRunOptions.AddEtcdStorageFlags(fs) // Note: the weird ""+ in below lines seems to be the only way to get gofmt to // arrange these text blocks sensibly. Grrr. fs.DurationVar(&s.EventTTL, "event-ttl", s.EventTTL, "Amount of time to retain events. Default is 1h.") fs.StringArrayVar(&s.ServiceAccountKeyFiles, "service-account-key-file", s.ServiceAccountKeyFiles, ""+ "File containing PEM-encoded x509 RSA or ECDSA private or public keys, used to verify "+ "ServiceAccount tokens. If unspecified, --tls-private-key-file is used. "+ "The specified file can contain multiple keys, and the flag can be specified multiple times with different files.") fs.BoolVar(&s.ServiceAccountLookup, "service-account-lookup", s.ServiceAccountLookup, "If true, validate ServiceAccount tokens exist in etcd as part of authentication.") fs.StringVar(&s.WebhookTokenAuthnConfigFile, "authentication-token-webhook-config-file", s.WebhookTokenAuthnConfigFile, ""+ "File with webhook configuration for token authentication in kubeconfig format. "+ "The API server will query the remote service to determine authentication for bearer tokens.") fs.DurationVar(&s.WebhookTokenAuthnCacheTTL, "authentication-token-webhook-cache-ttl", s.WebhookTokenAuthnCacheTTL, "The duration to cache responses from the webhook token authenticator. Default is 2m.") fs.BoolVar(&s.AllowPrivileged, "allow-privileged", s.AllowPrivileged, "If true, allow privileged containers.") fs.StringVar(&s.SSHUser, "ssh-user", s.SSHUser, "If non-empty, use secure SSH proxy to the nodes, using this user name") fs.StringVar(&s.SSHKeyfile, "ssh-keyfile", s.SSHKeyfile, "If non-empty, use secure SSH proxy to the nodes, using this user keyfile") fs.Int64Var(&s.MaxConnectionBytesPerSec, "max-connection-bytes-per-sec", s.MaxConnectionBytesPerSec, ""+ "If non-zero, throttle each user connection to this number of bytes/sec. "+ "Currently only applies to long-running requests.") // Kubelet related flags: fs.BoolVar(&s.KubeletConfig.EnableHttps, "kubelet-https", s.KubeletConfig.EnableHttps, "Use https for kubelet connections.") fs.StringSliceVar(&s.KubeletConfig.PreferredAddressTypes, "kubelet-preferred-address-types", s.KubeletConfig.PreferredAddressTypes, "List of the preferred NodeAddressTypes to use for kubelet connections.") fs.UintVar(&s.KubeletConfig.Port, "kubelet-port", s.KubeletConfig.Port, "DEPRECATED: kubelet port.") fs.MarkDeprecated("kubelet-port", "kubelet-port is deprecated and will be removed.") fs.DurationVar(&s.KubeletConfig.HTTPTimeout, "kubelet-timeout", s.KubeletConfig.HTTPTimeout, "Timeout for kubelet operations.") fs.StringVar(&s.KubeletConfig.CertFile, "kubelet-client-certificate", s.KubeletConfig.CertFile, "Path to a client cert file for TLS.") fs.StringVar(&s.KubeletConfig.KeyFile, "kubelet-client-key", s.KubeletConfig.KeyFile, "Path to a client key file for TLS.") fs.StringVar(&s.KubeletConfig.CAFile, "kubelet-certificate-authority", s.KubeletConfig.CAFile, "Path to a cert file for the certificate authority.") // TODO: delete this flag as soon as we identify and fix all clients that send malformed updates, like #14126. fs.BoolVar(&validation.RepairMalformedUpdates, "repair-malformed-updates", validation.RepairMalformedUpdates, ""+ "If true, server will do its best to fix the update request to pass the validation, "+ "e.g., setting empty UID in update request to its existing value. This flag can be turned off "+ "after we fix all the clients that send malformed updates.") }