Get desktop application:
View/edit binary Protocol Buffers messages
Used in:
The certificate public key of the API server.
The name or endpoint URI of the API server.
Auth Config fields stored in azure.json used by cloud-provider-azure
Used in:
Tenant ID
Subscription ID
Service Principal ID. set to aadClientId
Service Principal Secret. set to aadClientSecret
Assigned identity id, could be user or system assigned, depending on the type.
Specify if use managed identity extension, default to false
Used in:
This is the default K8s bootstrap authentication method - a time limited bootstrap token. It's stored as a secret with a particular type in the API server. nolint:gosec // this is a const string to use in switch statements, not hardcoded credentials
Secure TLS bootstrapping is a process where the node can use signed metadata from the Azure IMDS service to authenticate against the api server
Nodes running outside Azure can use the Azure Arc MSI to authenticate to an API server. This only works when the cluster is using AAD authentication.
Nodes running inside Azure can use the Azure Arc MSI to authenticate to an API server. This only works when the cluster is using AAD authentication.
Used in:
Method to authenticate the node to the API server
how the node should join and communicate with the API server after authentication
Only required until Secure TLS bootstrapping in place. Would use kubelet identity after that.
Only used when secure TLS bootstrapping is enabled or one of the Azure/Arc methods. This is the appserver appid that the node will use to bootstrap.
Only used when one of the Azure/Arc methods is enabled. This is the client ID of the MSI that the node will use to bootstrap.
Cluster Config fields stored in azure.json used by cloud-provider-azure
Used in:
Cluster network config. We assumed network mode is always "transparent" now so it's removed from the contract.
Load balancer config
Rescource group name
Location
VM type
default to standard for v1.27 and below versions and vmss for v1.28+ versions
Primary availability set name
Primary scale set name
Specifiy if it uses instance metadata
default to false
Used in:
The default behaviour is for the node to make a certificate signing request (CSR) and then use that CSR for ongoing communication.
In some cases, the node will use the bootstrapping auth to register itself as a node and for ongoing communications.
Used in:
Virtual network name
Virtual network resource group
Subnet name
Network security group name
Route table name
Version of configuration
Kube binary URL config
Custom cloud config
Kubernetes API server configuration
Various Kubernetes cluster level configuration
TLS bootstrap config
Authentication configuration
The CLI tool runc configuration
Containerd configuration
Teleport configuration
Kubelet configuration
Custom search domain configurations
Custom Linux OS configurations including SwapFile, SysCtl configs, etc.
HTTP/HTTPS proxy configuration for the node
GPU configuration for the node
Network configuration for the node
Kubernetes certificate authority (CA) certificate, required by the node to establish TLS with the API server
Kubernetes version
Kube proxy URL
The VM size of the node
Linux admin username. If not specified, the default value is "azureuser"
Specifies whether the node is a VHD node. This is still needed for some customized scenarios. This is labeled as optional (explicit presence) so that we know whether it's set or not. If it's not set, the default value will be nil.
Specifies whether SSH is enabled or disabled on the VM node This is labeled as optional (explicit presence) so that we know whether it's set or not. If it's not set, the default value will be nil, but will be set to true on the VHD.
Specifies whether unattended upgrade is enabled or disabled on the VM node
The message of the day that is displayed on the VM node when a user logs in
Specifies whether the hosts config agent is enabled or disabled on the VM node
Custom CA certificates to be added to the system trust store
A local file path where cluster provision cse output should be stored
Workload runtime, e.g., either "OCIContainer" or "WasmWasi", currently.
Specifies whether IPv6 dual stack is enabled or disabled on the VM node
Command to use for outbound traffic
Azure private registry server URI
Private egress proxy address
Specifies whether artifact streaming is enabled or disabled on the VM node
Specifies if it is a Kata node
Specifies whether the node needs cgroupv2. Labeled as optional (explicit presence) so that we know whether it's set or not. If it's not set, the default value will be nil and we will get the value on the VHD during bootstrapping.
Specified whether the node wants to disable custom data scripts for bootstrapping
Bootstrap profile container registry server URI
IMDS restriction configuration
Used in:
The base URL for downloading containerd.
The version of containerd to download.
The URL for downloading the containerd package.
Used in:
Name of custom cloud
RepoDepotEndpoint is the endpoint of the repo depot
Base64 encoded JSON string of custom cloud environment
AKSCustomCloudContainerRegistryDNSSuffix specifies a custom cloud container registry dns suffix for credential provider
Custom Linux Node OS Config
Used in:
Sysctl settings for Linux agent nodes
Ulimit settings for Linux agent nodes
Enable or disable swap configuration
The size in MB of a swap file that will be created on each node
Valid values are "always", "defer", "defer+madvise", "madvise" and "never" If it's unset or set to empty string, it will use the default value in the VHD "always"
Valid values are "always", "madvise" and "never" If it's unset or set to empty string, it will use the default value in the VHD "madvise"
Used in:
The name of the custom search domain.
The user name for the custom search domain.
The password for the custom search domain.
Used in:
Specifies whether any nvidia configurations should be applied for GPU nodes. False when vm size is not a GPU node or driver install is skipped and no GPU configuration is needed. Making optional so that default will be set to IsNvidiaEnabledSku(vmSize) instead of false
Specifies whether bootstrap process should install and configure the GPU driver when necessary. Configuration includes appropriate set up of components like the fabric manager where applicable.
Specifies whether special config is needed for MIG GPUs that use GPU dedicated VHDs and enable the device plugin (for all GPU dedicated VHDs)
Represents the GPU instance profile.
Same as enable_nvidia, but for AMD GPUs.
Used in:
Proxy endpoint/URL using HTTP through which the traffic should be routed for making HTTP connections outside the cluster
Proxy endpoint/URL using HTTPS through which the traffic should be routed for making HTTPS connections outside the cluster
A list of entries including IPs, domains, or other network CIDRs that should not be accessed through the proxy
Custom CA certificate that should be trusted by the proxy
Used in:
Enable IMDS restriction for the node.
Insert IMDS restriction rule to mangle table.
Kube Binary Config
Used in:
default kube binary url
user's custom kube binary url
privately cached kube binary url
full path to the "pause" image. Used for --pod-infra-container-image.
Full path to the Linux credential provider (tar.gz) to use.
Used in:
enabled allows anonymous requests to the kubelet 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. +optional.
Used in:
x509 contains settings related to x509 client certificate authentication. +optional.
webhook contains settings related to webhook bearer token authentication. +optional.
anonymous contains settings related to anonymous authentication. +optional.
Used in:
mode is the authorization mode to apply to requests to the kubelet server. Valid values are AlwaysAllow and Webhook. Webhook mode uses the SubjectAccessReview API to determine authorization. +optional.
webhook contains settings related to Webhook authorization. +optional.
Used in:
A map of kubelet flags to their values. The map is sorted by key.
A map of node labels to their values.
The type of disk to use for the kubelet.
Whether kubelet config should be enabled.
content of the kubelet config file.
Kubelet client private key
The content of the kubelet client certificate file.
The path used to mount docker images, emptyDir volumes, and kubelet data.
Used in:
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds. +optional.
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
staticPodPath is the path to the directory containing local (static) pods to run, or the path to a single static pod file. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that the set of static pods specified at the new path may be different than the ones the Kubelet initially started with, and this may disrupt your node. Default: "" +optional.
address is the IP address for the Kubelet to serve on (set to 0.0.0.0 for all interfaces). Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: "0.0.0.0" +optional.
readOnlyPort is the read-only port for the Kubelet to serve on with no authentication/authorization. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: 0 (disabled) +optional.
tlsCertFile is the file containing x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If tlsCertFile and tlsPrivateKeyFile are not provided, a self-signed certificate and key are generated for the public address and saved to the directory passed to the Kubelet's --cert-dir flag. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: "" +optional.
tlsPrivateKeyFile is the file containing x509 private key matching tlsCertFile Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: "" +optional.
TLSCipherSuites is the list of allowed cipher suites for the server. Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants). Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Default: nil +optional.
rotateCertificates enables client certificate rotation. The Kubelet will request a new certificate from the certificates.k8s.io API. This requires an approver to approve the certificate signing requests. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that disabling it may disrupt the Kubelet's ability to authenticate with the API server after the current certificate expires. Default: false +optional.
serverTLSBootstrap enables server certificate bootstrap. Instead of self signing a serving certificate, the Kubelet will request a certificate from the 'certificates.k8s.io' API. This requires an approver to approve the certificate signing requests (CSR). The RotateKubeletServerCertificate feature must be enabled when setting this field. Default: false +optional
authentication specifies how requests to the Kubelet's server are authenticated Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Defaults: anonymous: enabled: false webhook: enabled: true cacheTTL: "2m" +optional.
authorization specifies how requests to the Kubelet's server are authorized Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may disrupt components that interact with the Kubelet server. Defaults: mode: Webhook webhook: cacheAuthorizedTTL: "5m" cacheUnauthorizedTTL: "30s" +optional.
eventRecordQPS is the maximum event creations per second. If 0, there is no limit enforced. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact scalability by changing the amount of traffic produced by event creations. Default: 5 +optional.
clusterDomain is the DNS domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains. Dynamic Kubelet Config (beta): Dynamically updating this field is not recommended, as it should be kept in sync with the rest of the cluster. Default: "" +optional.
clusterDNS is a list of IP addresses for the cluster DNS server. If set, kubelet will configure all containers to use this for DNS resolution instead of the host's DNS servers. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changes will only take effect on Pods created after the update. Draining the node is recommended before changing this field. Default: nil +optional.
streamingConnectionIdleTimeout is the maximum time a streaming connection can be idle before the connection is automatically closed. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact components that rely on infrequent updates over streaming connections to the Kubelet server. Default: "4h" +optional.
nodeStatusUpdateFrequency is the frequency that kubelet computes node status. If node lease feature is not enabled, it is also the frequency that kubelet posts node status to master. Note: When node lease feature is not enabled, be cautious when changing the constant, it must work with nodeMonitorGracePeriod in nodecontroller. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may impact node scalability, and also that the node controller's nodeMonitorGracePeriod must be set to N*NodeStatusUpdateFrequency, where N is the number of retries before the node controller marks the node unhealthy. Default: "10s" +optional.
nodeStatusReportFrequency is the frequency that kubelet posts node status to master if node status does not change. Kubelet will ignore this frequency and post node status immediately if any change is detected. It is only used when node lease feature is enabled. nodeStatusReportFrequency's default value is 5m. But if nodeStatusUpdateFrequency is set explicitly, nodeStatusReportFrequency's default value will be set to nodeStatusUpdateFrequency for backward compatibility. Default: "5m" +optional.
imageGCHighThresholdPercent is the percent of disk usage after which image garbage collection is always run. The percent is calculated as this field value out of 100. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay garbage collection, and may change the image overhead on the node. Default: 85 +optional.
imageGCLowThresholdPercent is the percent of disk usage before which image garbage collection is never run. Lowest disk usage to garbage collect to. The percent is calculated as this field value out of 100. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay garbage collection, and may change the image overhead on the node. Default: 80 +optional.
Enable QoS based Cgroup hierarchy: top level cgroups for QoS Classes And all Burstable and BestEffort pods are brought up under their specific top level QoS cgroup. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: true +optional.
CPUManagerPolicy is the name of the policy to use. Requires the CPUManager feature gate to be enabled. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "none" +optional.
TopologyManagerPolicy is the name of the policy to use. Policies other than "none" require the TopologyManager feature gate to be enabled. Dynamic Kubelet Config (beta): This field should not be updated without a full node reboot. It is safest to keep this value the same as the local config. Default: "none" +optional.
maxPods is the number of pods that can run on this Kubelet. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changes may cause Pods to fail admission on Kubelet restart, and may change the value reported in Node.Status.Capacity[v1.ResourcePods], thus affecting future scheduling decisions. Increasing this value may also decrease performance, as more Pods can be packed into a single node. Default: 110 +optional.
PodPidsLimit is the maximum number of pids in any pod. Requires the SupportPodPidsLimit feature gate to be enabled. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that lowering it may prevent container processes from forking after the change. Default: -1 +optional.
ResolvConf is the resolver configuration file used as the basis for the container DNS resolution configuration. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changes will only take effect on Pods created after the update. Draining the node is recommended before changing this field. Default: "/etc/resolv.conf" +optional.
cpuCFSQuota enables CPU CFS quota enforcement for containers that specify CPU limits. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that disabling it may reduce node stability. Default: true +optional.
CPUCFSQuotaPeriod is the CPU CFS quota period value, cpu.cfs_period_us. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that limits set for containers will result in different cpu.cfs_quota settings. This will trigger container restarts on the node being reconfigured. Default: "100ms" +optional.
Map of signal names to quantities that defines hard eviction thresholds. For example: {"memory.available": "300Mi"}. To explicitly disable, pass a 0% or 100% threshold on an arbitrary resource. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger or delay Pod evictions. Default: memory.available: "100Mi" nodefs.available: "10%" nodefs.inodesFree: "5%" imagefs.available: "15%" +optional.
protectKernelDefaults, if true, causes the Kubelet to error if kernel flags are not as it expects. Otherwise the Kubelet will attempt to modify kernel flags to match its expectation. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that enabling it may cause the Kubelet to crash-loop if the Kernel is not configured as Kubelet expects. Default: false +optional.
featureGates is a map of feature names to bools that enable or disable alpha/experimental features. This field modifies piecemeal the built-in default values from "k8s.io/kubernetes/pkg/features/kube_features.go". Dynamic Kubelet Config (beta): If dynamically updating this field, consider the documentation for the features you are enabling or disabling. While we encourage feature developers to make it possible to dynamically enable and disable features, some changes may require node reboots, and some features may require careful coordination to retroactively disable. Default: nil +optional.
failSwapOn tells the Kubelet to fail to start if swap is enabled on the node. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that setting it to true will cause the Kubelet to crash-loop if swap is enabled. Default: true +optional.
A quantity defines the maximum size of the container log file before it is rotated. For example: "5Mi" or "256Ki". Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may trigger log rotation. Default: "10Mi" +optional.
Maximum number of container log files that can be present for a container. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that lowering it may cause log files to be deleted. Default: 5 +optional.
systemReserved is a set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) pairs that describe resources reserved for non-kubernetes components. Currently only cpu and memory are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may not be possible to increase the reserved resources, because this requires resizing cgroups. Always look for a NodeAllocatableEnforced event after updating this field to ensure that the update was successful. Default: nil +optional.
A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) pairs that describe resources reserved for kubernetes system components. Currently cpu, memory and local storage for root file system are supported. See http://kubernetes.io/docs/user-guide/compute-resources for more detail. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that it may not be possible to increase the reserved resources, because this requires resizing cgroups. Always look for a NodeAllocatableEnforced event after updating this field to ensure that the update was successful. Default: nil +optional.
This flag specifies the various Node Allocatable enforcements that Kubelet needs to perform. This flag accepts a list of options. Acceptable options are `none`, `pods`, `system-reserved` & `kube-reserved`. If `none` is specified, no other options may be specified. Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. Dynamic Kubelet Config (beta): If dynamically updating this field, consider that removing enforcements may reduce the stability of the node. Alternatively, adding enforcements may reduce the stability of components which were using more than the reserved amount of resources; for example, enforcing kube-reserved may cause Kubelets to OOM if it uses more than the reserved resources, and enforcing system-reserved may cause system daemons to OOM if they use more than the reserved resources. Default: ["pods"] +optional.
A comma separated whitelist of unsafe sysctls or sysctl patterns (ending in *). Unsafe sysctl groups are kernel.shm*, kernel.msg*, kernel.sem, fs.mqueue.*, and net.*. These sysctls are namespaced but not allowed by default. For example: "kernel.msg*,net.ipv4.route.min_pmtu" Default: [] +optional.
serializeImagePulls when enabled, tells the Kubelet to pull images one at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Aufs storage backend. Issue #10959 has more details. Default: true +optional
SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads. Default: false +optional
Used in:
Used in:
enabled allows bearer token authentication backed by the tokenreviews.authentication.k8s.io API. +optional.
cacheTTL enables caching of authentication results. +optional.
Used in:
cacheAuthorizedTTL is the duration to cache 'authorized' responses from the webhook authorizer. +optional.
cacheUnauthorizedTTL is the duration to cache 'unauthorized' responses from the webhook authorizer. +optional.
Used in:
clientCAFile is the path to a PEM-encoded certificate bundle. If set, any request presenting a client certificate signed by one of the authorities in the bundle is authenticated with a username corresponding to the CommonName, and groups corresponding to the Organization in the client certificate. +optional.
Used in:
Load balancer sku, default to basic
Specify if master node should be excluded from standard load balancer, default to true
Maximum number of load balancer rules, default to 148
Disable outbound SNAT (Source Network Address Translation) for load balancer, default to false
Used in:
Used in:
Network plugin to be used by the cluster. Options are NONE, AZURE, KUBENET.
Network policy to be used by the cluster. This is still needed to compute ENSURE_NO_DUPE_PROMISCUOUS_BRIDGE. Other than that, it is not used by others. See the discussions here https://github.com/Azure/AgentBaker/pull/4241#discussion_r1554283228
URL to the vnet cni plugins tarball.
URL to the cni plugins tarball.
Used in:
Used in:
Used in:
The version of runc to use.
The URL to download the runc package from.
Used in:
using optional here to allow detecting if the field is set or not (explicit presence in proto3)
Used in:
The status of the teleportd plugin. If true, the plugin is enabled.
The URL to download the teleportd plugin.
Used in:
using optional here to allow detecting if the field is set or not (explicit presence in proto3)
Used in:
Used in: