github.com/openshift/installer@v1.4.17/pkg/types/imagebased/seedreconfiguration.go (about) 1 package imagebased 2 3 import ( 4 "github.com/openshift/installer/pkg/types" 5 ) 6 7 const ( 8 // SeedReconfigurationVersion is the current version of the 9 // SeedReconfiguration struct. 10 SeedReconfigurationVersion = 1 11 12 // BlockDeviceLabel is the volume label to be used for the image-based 13 // installer configuration ISO. 14 BlockDeviceLabel = "cluster-config" 15 ) 16 17 // SeedReconfiguration contains all the information that is required to 18 // transform a machine started from a single-node OpenShift (SNO) seed OCI image 19 // (which contains dummy seed configuration) into a SNO cluster with the desired 20 // configuration. 21 type SeedReconfiguration struct { 22 // AdditionalTrustBundle keeps the PEM-encoded x.509 certificate bundle(s) 23 // that will be added to the nodes' trusted certificate store. 24 AdditionalTrustBundle AdditionalTrustBundle `json:"additionalTrustBundle,omitempty"` 25 26 // APIVersion is the version of this struct and it is used to detect breaking 27 // changes. 28 APIVersion int `json:"api_version"` 29 30 // BaseDomain is the desired base domain. 31 BaseDomain string `json:"base_domain,omitempty"` 32 33 // ClusterID is the desired cluster ID. 34 ClusterID string `json:"cluster_id,omitempty"` 35 36 // ClusterName is the desired cluster name. 37 ClusterName string `json:"cluster_name,omitempty"` 38 39 // ChronyConfig is the desired chrony configuration and it is used to populate 40 // the /etc/chrony.conf on the node. 41 ChronyConfig string `json:"chrony_config,omitempty"` 42 43 // Hostname is the desired hostname of the node. 44 Hostname string `json:"hostname,omitempty"` 45 46 // InfraID is the desired infra ID. 47 InfraID string `json:"infra_id,omitempty"` 48 49 // KubeadminPasswordHash is the hash of the password for the kubeadmin 50 // user, as can be found in the kubeadmin key of the kube-system/kubeadmin 51 // secret. This will replace the kubeadmin password of the seed cluster. 52 KubeadminPasswordHash string `json:"kubeadmin_password_hash,omitempty"` 53 54 // KubeconfigCryptoRetention contains all the crypto material that is required 55 // for the image-based installer to ensure that the generated kubeconfigs can 56 // be used to access the cluster after its configuration. 57 KubeconfigCryptoRetention KubeConfigCryptoRetention 58 59 // MachineNetwork is the list of IP address pools for machines. 60 // This field replaces MachineCIDR, and if set MachineCIDR must 61 // be empty or match the first entry in the list. 62 // Default is 10.0.0.0/16 for all platforms other than Power VS. 63 // For Power VS, the default is 192.168.0.0/24. 64 MachineNetwork string `json:"machine_network,omitempty"` 65 66 // NodeIP is the desired IP address of the node. 67 NodeIP string `json:"node_ip,omitempty"` 68 69 // RawNMStateConfig contains the nmstate configuration YAML manifest as string. 70 // Example nmstate configurations can be found here: https://nmstate.io/examples.html. 71 RawNMStateConfig string `json:"raw_nm_state_config,omitempty"` 72 73 // RelaseRegistry is the container registry that hosts the release image of 74 // the seed cluster. 75 ReleaseRegistry string `json:"release_registry,omitempty"` 76 77 // SSHKey is the public Secure Shell (SSH) key that provides access to the 78 // node. 79 SSHKey string `json:"ssh_key,omitempty"` 80 81 // Proxy defines the proxy settings for the cluster. 82 // If unset, the cluster will not be configured to use a proxy. 83 Proxy *types.Proxy `json:"proxy,omitempty"` 84 85 // PullSecret is the secret to use when pulling images. 86 PullSecret string `json:"pull_secret,omitempty"` 87 } 88 89 // KubeConfigCryptoRetention contains all the crypto material that is required 90 // for the image-based installer to ensure that the kubeconfigs can be used to 91 // access the cluster after its configuration. 92 type KubeConfigCryptoRetention struct { 93 KubeAPICrypto KubeAPICrypto 94 95 IngresssCrypto IngresssCrypto 96 } 97 98 // KubeAPICrypto contains the kubernetes API private keys and certificates that 99 // are used to generate and sign the cluster's cryptographic objects. 100 type KubeAPICrypto struct { 101 ServingCrypto ServingCrypto 102 103 ClientAuthCrypto ClientAuthCrypto 104 } 105 106 // ServingCrypto contains the kubernetes API private keys that are used to 107 // generate the cluster's certificates. 108 type ServingCrypto struct { 109 // LocalhostSignerPrivateKey is a PEM-encoded X.509 key. 110 LocalhostSignerPrivateKey string `json:"localhost_signer_private_key,omitempty"` 111 112 // ServiceNetworkSignerPrivateKey is a PEM-encoded X.509 key. 113 ServiceNetworkSignerPrivateKey string `json:"service_network_signer_private_key,omitempty"` 114 115 // LoadbalancerSignerPrivateKey is a PEM-encoded X.509 key. 116 LoadbalancerSignerPrivateKey string `json:"loadbalancer_external_signer_private_key,omitempty"` 117 } 118 119 // ClientAuthCrypto contains the CA certificate used to sign the cluster's 120 // cryptographic objects. 121 type ClientAuthCrypto struct { 122 // AdminCACertificate is a PEM-encoded X.509 certificate. 123 AdminCACertificate string `json:"admin_ca_certificate,omitempty"` 124 } 125 126 // IngresssCrypto contains the ingrees CA certificate. 127 type IngresssCrypto struct { 128 // IngressCA is a PEM-encoded X.509 certificate. 129 IngressCA string `json:"ingress_ca,omitempty"` 130 } 131 132 // AdditionalTrustBundle represents the PEM-encoded X.509 certificate bundle 133 // that will be added to the nodes' trusted certificate store. 134 type AdditionalTrustBundle struct { 135 // UserCaBundle keeps the contents of the user-ca-bundle ConfigMap in the 136 // openshift-config namepace. 137 UserCaBundle string `json:"userCaBundle"` 138 139 // ProxyConfigmapName is the Proxy CR trustedCA ConfigMap name. 140 ProxyConfigmapName string `json:"proxyConfigmapName"` 141 142 // ProxyConfigampBundle keeps the contents of the ProxyConfigmapName ConfigMap. 143 // It must be equal to the UserCaBundle when ProxyConfigmapName is 144 // user-ca-bundle. 145 ProxyConfigmapBundle string `json:"proxyConfigmapBundle"` 146 }