mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-22 15:11:10 +02:00
Should allow us to handle edge cases where eth0 is not the primary interface Signed-off-by: Brad Beam <brad.beam@talos-systems.com>
222 lines
7.5 KiB
Go
222 lines
7.5 KiB
Go
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package constants
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/containerd/containerd/defaults"
|
|
"github.com/talos-systems/talos/internal/pkg/kernel"
|
|
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
|
|
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
|
)
|
|
|
|
const (
|
|
// KernelParamUserData is the kernel parameter name for specifying the URL
|
|
// to the user data.
|
|
KernelParamUserData = "talos.userdata"
|
|
|
|
// KernelParamPlatform is the kernel parameter name for specifying the
|
|
// platform.
|
|
KernelParamPlatform = "talos.platform"
|
|
|
|
// KernelParamHostname is the kernel parameter name for specifying the
|
|
// hostname.
|
|
KernelParamHostname = "talos.hostname"
|
|
|
|
// KernelParamDefaultInterface is the kernel parameter for specifying the
|
|
// initial interface used to bootstrap the node
|
|
KernelParamDefaultInterface = "talos.interface"
|
|
|
|
// KernelCurrentRoot is the kernel parameter name for specifying the
|
|
// current root partition.
|
|
KernelCurrentRoot = "talos.root"
|
|
|
|
// NewRoot is the path where the switchroot target is mounted.
|
|
NewRoot = "/root"
|
|
|
|
// BootPartitionLabel is the label of the partition to use for mounting at
|
|
// the boot path.
|
|
BootPartitionLabel = "ESP"
|
|
|
|
// BootMountPoint is the label of the partition to use for mounting at
|
|
// the boot path.
|
|
BootMountPoint = "/boot"
|
|
|
|
// DataPartitionLabel is the label of the partition to use for mounting at
|
|
// the data path.
|
|
DataPartitionLabel = "DATA"
|
|
|
|
// DataMountPoint is the label of the partition to use for mounting at
|
|
// the data path.
|
|
DataMountPoint = "/var"
|
|
|
|
// RootAPartitionLabel is the label of the partition to use for mounting at
|
|
// the root path.
|
|
RootAPartitionLabel = "ROOT-A"
|
|
|
|
// RootBPartitionLabel is the label of the partition to use for mounting at
|
|
// the root path.
|
|
RootBPartitionLabel = "ROOT-B"
|
|
|
|
// RootMountPoint is the label of the partition to use for mounting at
|
|
// the root path.
|
|
RootMountPoint = "/"
|
|
|
|
// ISOFilesystemLabel is the label of the ISO file system for the Talos
|
|
// installer.
|
|
ISOFilesystemLabel = "TALOS"
|
|
|
|
// PATH defines all locations where executables are stored.
|
|
PATH = "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/opt/cni/bin"
|
|
|
|
// CNICalico is used to specify Calico CNI.
|
|
CNICalico = "calico"
|
|
|
|
// CNIFlannel is used to specify Flannel CNI.
|
|
CNIFlannel = "flannel"
|
|
|
|
// KubeadmConfig is the path to the kubeadm manifest file.
|
|
KubeadmConfig = "/etc/kubernetes/kubeadm-config.yaml"
|
|
|
|
// KubeadmCACert is the path to the root CA certificate.
|
|
KubeadmCACert = v1beta1.DefaultCertificatesDir + "/" + constants.CACertName
|
|
|
|
// KubeadmCAKey is the path to the root CA private key.
|
|
KubeadmCAKey = v1beta1.DefaultCertificatesDir + "/" + constants.CAKeyName
|
|
|
|
// KubeadmSACert is the path to the SA certificate.
|
|
KubeadmSACert = v1beta1.DefaultCertificatesDir + "/" + constants.ServiceAccountPublicKeyName
|
|
|
|
// KubeadmSAKey is the path to the SA private key.
|
|
KubeadmSAKey = v1beta1.DefaultCertificatesDir + "/" + constants.ServiceAccountPrivateKeyName
|
|
|
|
// KubeadmFrontProxyCACert is the path to the front proxy CA certificate.
|
|
KubeadmFrontProxyCACert = v1beta1.DefaultCertificatesDir + "/" + constants.FrontProxyCACertName
|
|
|
|
// KubeadmFrontProxyCAKey is the path to the front proxy CA private key.
|
|
KubeadmFrontProxyCAKey = v1beta1.DefaultCertificatesDir + "/" + constants.FrontProxyCAKeyName
|
|
|
|
// KubeadmEtcdCACert is the path to the etcd CA certificate.
|
|
KubeadmEtcdCACert = v1beta1.DefaultCertificatesDir + "/" + constants.EtcdCACertName
|
|
|
|
// KubeadmEtcdCAKey is the path to the etcd CA private key.
|
|
KubeadmEtcdCAKey = v1beta1.DefaultCertificatesDir + "/" + constants.EtcdCAKeyName
|
|
|
|
// KubeadmEtcdPeerCert is the path to the etcd CA certificate.
|
|
KubeadmEtcdPeerCert = v1beta1.DefaultCertificatesDir + "/" + constants.EtcdPeerCertName
|
|
|
|
// KubeadmEtcdPeerKey is the path to the etcd CA private key.
|
|
KubeadmEtcdPeerKey = v1beta1.DefaultCertificatesDir + "/" + constants.EtcdPeerKeyName
|
|
|
|
// KubernetesVersion is the enforced target version of the control plane.
|
|
KubernetesVersion = "v1.15.0"
|
|
|
|
// KubernetesImage is the enforced hyperkube image to use for the control plane.
|
|
KubernetesImage = "k8s.gcr.io/hyperkube:" + KubernetesVersion
|
|
|
|
// UserDataPath is the path to the downloaded user data.
|
|
UserDataPath = "/var/userdata.yaml"
|
|
|
|
// UserDataCIData is the volume label for NoCloud cloud-init.
|
|
// See https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html#datasource-nocloud.
|
|
UserDataCIData = "cidata"
|
|
|
|
// UserDataGuestInfo is the name of the VMware guestinfo user data strategy.
|
|
UserDataGuestInfo = "guestinfo"
|
|
|
|
// VMwareGuestInfoUserDataKey is the guestinfo key used to provide a user data file.
|
|
VMwareGuestInfoUserDataKey = "talos.userdata"
|
|
|
|
// AuditPolicyPathInitramfs is the path to the audit-policy.yaml relative to initramfs.
|
|
AuditPolicyPathInitramfs = "/etc/kubernetes/audit-policy.yaml"
|
|
|
|
// EncryptionConfigInitramfsPath is the path to the EncryptionConfig relative to initramfs.
|
|
EncryptionConfigInitramfsPath = "/etc/kubernetes/encryptionconfig.yaml"
|
|
|
|
// EncryptionConfigRootfsPath is the path to the EncryptionConfig relative to rootfs.
|
|
EncryptionConfigRootfsPath = "/etc/kubernetes/encryptionconfig.yaml"
|
|
|
|
// OsdPort is the port for the osd service.
|
|
OsdPort = 50000
|
|
|
|
// TrustdPort is the port for the trustd service.
|
|
TrustdPort = 50001
|
|
|
|
// SystemContainerdNamespace is the Containerd namespace for Talos services.
|
|
SystemContainerdNamespace = "system"
|
|
|
|
// TalosConfigEnvVar is the environment variable for setting the Talos configuration file path.
|
|
TalosConfigEnvVar = "TALOSCONFIG"
|
|
|
|
// InitSocketPath is the path to file socket of init API
|
|
InitSocketPath = "/var/lib/init/init.sock"
|
|
|
|
// KernelAsset defines a well known name for our kernel filename
|
|
KernelAsset = "vmlinuz"
|
|
|
|
// InitramfsAsset defines a well known name for our initramfs filename
|
|
InitramfsAsset = "initramfs.xz"
|
|
|
|
// RootfsAsset defines a well known name for our rootfs filename
|
|
RootfsAsset = "rootfs.tar.gz"
|
|
|
|
// NodeCertFile is the filename where the current Talos Node Certificate may be found
|
|
NodeCertFile = "/var/talos-node.crt"
|
|
|
|
// NodeCertRenewalInterval is the default interval at which Talos Node Certifications should be renewed
|
|
NodeCertRenewalInterval = 24 * time.Hour
|
|
)
|
|
|
|
// See https://linux.die.net/man/3/klogctl
|
|
const (
|
|
// SYSLOG_ACTION_SIZE_BUFFER is a named type argument to klogctl.
|
|
// nolint: golint
|
|
SYSLOG_ACTION_SIZE_BUFFER = 10
|
|
|
|
// SYSLOG_ACTION_READ_ALL is a named type argument to klogctl.
|
|
// nolint: golint
|
|
SYSLOG_ACTION_READ_ALL = 3
|
|
)
|
|
|
|
// Containerd
|
|
const (
|
|
ContainerdAddress = defaults.DefaultAddress
|
|
)
|
|
|
|
// CurrentRootPartitionLabel returns the label of the currently active root
|
|
// partition.
|
|
func CurrentRootPartitionLabel() string {
|
|
var param *string
|
|
if param = kernel.Cmdline().Get(KernelCurrentRoot).First(); param == nil {
|
|
return RootAPartitionLabel
|
|
}
|
|
|
|
switch *param {
|
|
case RootBPartitionLabel:
|
|
return RootBPartitionLabel
|
|
case RootAPartitionLabel:
|
|
fallthrough
|
|
default:
|
|
return RootAPartitionLabel
|
|
}
|
|
}
|
|
|
|
// NextRootPartitionLabel returns the label of the currently active root
|
|
// partition.
|
|
func NextRootPartitionLabel() string {
|
|
current := CurrentRootPartitionLabel()
|
|
switch current {
|
|
case RootAPartitionLabel:
|
|
return RootBPartitionLabel
|
|
case RootBPartitionLabel:
|
|
return RootAPartitionLabel
|
|
}
|
|
|
|
// We should never reach this since CurrentRootPartitionLabel is guaranteed
|
|
// to return one of the two possible labels.
|
|
return "UNKNOWN"
|
|
}
|