github.com/openshift/installer@v1.4.17/CHANGELOG.md (about) 1 # Changelog 2 3 All notable changes to this project will be documented in this file. 4 5 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). 6 7 ## 0.16.0 - 2019-04-01 8 9 ### Added 10 11 - Documentation for [user-provided infrastructure on bare 12 metal](docs/user/metal/install_upi.md). 13 14 ### Changed 15 16 - Authorized SSH keys are now supplied via installer-generated 17 MachineConfig manifests instead of the stub Ignition configurations. 18 Additional MachineConfig manifests may be provided during a [staged 19 install](docs/user/overview.md#multiple-invocations). 20 - [The certificate signer][kubecsr] used for etcd bootstrapping is now 21 sourced from the release image instead of from 22 `quay.io/coreos/kube-etcd-signer-server`. 23 - The pinned RHCOS bootimage has been bumped from 400.7.20190306.0 to 24 410.8.20190325.0 to transition from a RHEL 7 base to RHEL 8. 25 - The detailed networking configuration manifest has been moved from 26 `networkconfigs.networkoperator.openshift.io` to 27 `networks.operator.openshift.io`. 28 - When installation fails after bootstrap removal, the installer will 29 now pass along the status reported by [the cluster-version 30 operator][cluster-version-operator], to make it easier to identify 31 underlying issues. 32 - On AWS, when specific availability zones are requested for all 33 machine pools in `install-config.yaml`, the installer will now only 34 create per-zone resources for those zones. This allows for clusters 35 in high-zone regions like us-east-1 without requiring limit bumps. 36 - On OpenStack, we have restored the ability to create Machine(Set)s 37 with trunk support enabled. 38 - On OpenStack, machines are now tagged with `Name` and 39 `openshiftClusterID`. 40 - Several cleanups to docs, internal code, and user-provided 41 infrastructure support. 42 43 ### Fixed 44 45 - On AWS, creating a new cluster using the same Kubernetes API URL as 46 an existing cluster will now error out instead of clobbering public 47 Route 53 records for the existing cluster. This adds an additional 48 install-time permission requirement: 49 `s3:GetBucketObjectLockConfiguration`. 50 - On AWS, install-config validation now requires any explicitly 51 configured machine-pool zones to be in the configured platform 52 region. Installs never worked for zones from other regions, but the 53 improved validation gives a more obivous error message and avoids 54 partially provisioning a cluster before hitting the error. 55 56 ## 0.15.0 - 2019-03-25 57 58 ### Added 59 60 - We now initialize TLS certificates for etcd metrics over TCP on port 61 9979. We also store etcd certificates in various `kube-system` 62 Secrets and ConfigMaps. 63 - The Kubernetes client is now extracted from the release image's 64 `kube-client-agent` reference, replacing 65 `quay.io/coreos/kube-client-agent`. 66 - On the control-plane and compute nodes, CRI-O's pause image is now 67 extracted from the release image's `pod` reference. 68 - Initial work for user-provided infrastructure on AWS and vSphere, 69 including a new `user-provided-infrastructure` subcommand. 70 71 ### Changed 72 73 - The install-config version has been bumped to `v1beta4` for changes 74 to more closely align with `Network.config.openshift.io`: 75 - `serviceCIDR` is now `serviceNetwork`. 76 - `clusterNetworks` is now `clusterNetwork`. 77 - `type` is now `networkType`. 78 - `hostSubnetLength` is now `hostPrefix`. 79 `v1beta3` is deprecated and will be removed in a future release. 80 - On AWS and OpenStack, ports 9000 through 9999 are now open for UDP. 81 They had been open for TCP since 0.4.0, with a bugfix for 9990 -> 82 9999 in 0.13.0. 83 - On AWS, we now create network interfaces for the control-plane 84 nodes explicitly, which allows for faster resource-creation time by 85 allowing greater parallelization. 86 - On AWS, we now ask the machine-API operator to use 87 `aws-cloud-credentials` (created by [the credential 88 operator][credential-operator]) to fulfill our Machine(Set)s. 89 - On OpenStack, resources are prefixed with the cluster ID to avoid 90 conflicts when running multiple clusters under the same tenant. 91 - On OpenStack, machines are now configured with hostnames to allow 92 inter-VM communication. 93 - On OpenStack, machines are now configured with default DNS 94 nameservers (1.1.1.1 and 208.67.222.222). 95 - Several doc and internal cleanups. 96 97 ### Fixed 98 99 - On AWS, the credentials-checking logic now allows root credentials, 100 although it logs a warning because this approach is not recommended. 101 - On AWS, we only consider available zones when calculating defaults. 102 This reduces the chance of errors from attempting resource creation 103 in impaired or unavailable zones, although there's still a 104 possibility for a zone going unavailable after our check but before 105 resource creation. 106 - On AWS, the bootstrap machine is now created in the first public 107 subnet, restoring SSH and journald access, and fixing a bug from 108 0.14.0. 109 - On AWS, the Kubernetes API load balancers now use `/readyz` instead 110 of `/healthz` for health checks, which allows for more graceful 111 control-plane rotation. 112 - On AWS, `destroy cluster` has some fixes for: 113 - Removing snapshots associated with copied AMIs, fixing a bug 114 from 0.14.0. 115 - Deleting network interfaces, where we now remove all network 116 interfaces in an owned VPC regardless of whether those network 117 interfaces were themselves tagged as owned. 118 - Instance termination, where we now attempt to terminate 119 instances which are stopped, stopping, or shutting down in 120 addition to those which are pending or running. 121 - Instance profiles (which cannot be tagged directly) are now 122 removed by name in a final deletion step, covering cases where 123 they slipped through tag-based deletion because some external 124 actor removed both the referencing instances and roles but left 125 the instance profiles. 126 - `InvalidGroup.NotFound` is now caught and considered a succesful 127 deletion in more situations than with previous releases. 128 - Error handling where subsequent successes no longer mask earlier 129 errors. 130 - Rate-limiting delete cycles, to reduce excessive AWS API usage 131 (and associated throttling) while waiting for removed 132 dependencies to resolve. 133 - On OpenStack, Machine(Set)s now use the correct security group name. 134 - On OpenStack, we now set `api` and `*.apps` DNS entries for internal 135 IPs when a floating IP is not configured. 136 - The `none` platform no longer creates Machine(Set)s, because there 137 is, by definition, no machine-API support for that platform. 138 139 ### Removed 140 141 - The deprecated `cluster-config-v1` ConfigMap no longer contains the 142 pull secret, now that all pull-secret consumers have been migrated 143 to the `coreos-pull-secret` Secret. 144 - On AWS, control-plane nodes no longer allow ingress on ports 12379 145 or 12380 (which had, in the distant past, been used for etcd 146 bootstrapping). 147 148 ## 0.14.0 - 2019-03-05 149 150 ### Changed 151 152 - A new, long-lived, self-signed certificate authority has been added 153 to sign kubelet certificate-signing requests. This works around the 154 current lack of certificate rotation in the machine-config operator. 155 - Machine(Set) labels have been migrated from 156 `sigs.k8s.io/cluster-api-...` to `machine.openshift.io`, continuing 157 the transition begun in 0.13.0. 158 - On AWS, control-plane nodes are now based on encrypted AMIs. These 159 AMIs are copied into the target account from unencrypted, public 160 AMIs provided by Red Hat. To support the copy and post-cluster 161 cleanup, the installer requires the following additional AWS 162 credentials: ec2:CopyImage, ec2:DeregisterImage, and 163 ec2:DeleteSnapshot. 0.14.0 doesn't actually clean up the snapshots 164 associated with the copied AMIs yet, but we have a fix for that 165 landed for the next release. In the meantime, you should manually 166 prune your snapshots after destroying a cluster. 167 - On AWS, the security-group simplification from 0.13.1 accidentially 168 removed global SSH access to the bootstrap machine. We've fixed 169 that with this release. Unfortunately, this release also moves the 170 bootstrap machine into the same subnet as the first control-plane 171 node, and since 0.13.0, control-plane nodes are in private subnets. 172 So SSH access to the bootstrap machine from outside the cluster is 173 still broken, but we've landed a fix to get it working again in the 174 next release. In the meantime, you can set up a SSH bastion or 175 debug pod if you need SSH access to cluster machines. 176 - On OpenStack, the Machine(Set)s have been updated to track provider 177 changes. For example, the `SecurityGroups` schema has changed, as 178 has the schema for selecting subnets. 179 - Several doc and internal cleanups. 180 181 ### Fixed 182 183 - On AWS, we now respect the availability zones configured in the 184 control-plane Machine manifests, which are in turn fed by the 185 install-config (previously control-plane nodes were always striped 186 over zones regardless of the configuration). 187 - On AWS, the credentials-checking logic now uses the standard logger 188 instead of creating its own custom logger. 189 190 ## 0.13.1 - 2019-02-28 191 192 ### Changed 193 194 - The aggregator and etcd-client certificate authorities are now 195 self-signed authorities decoupled from the root certificate 196 authority, continuing the transition begun in 0.13.0. 197 - On AWS, Route 53 A records for the API load balancer no longer use 198 health checks. 199 - On AWS, the security group configuration has been simplified, with 200 several stale rules being removed. 201 202 ### Fixed 203 204 - When rendering manifests before pushing them to the cluster, the 205 bootstrap machine now correctly cleans up broken renders before 206 re-rendering. 207 - The bootstrap machine now uses an `etcdctl` referenced from the 208 release image, instead of hard-coding its own version. 209 210 ### Removed 211 212 - The nominal install-config compatibility with `v1beta1` and 213 `v1beta2` has been removed, so the installer will error out if 214 provided with an older `install-config.yaml`. `v1beta1` was 215 deprecated in 0.12.0 and `v1beta2` was deprecated in 0.13.0. In 216 both cases, the installer would ignore removed properties but not 217 error out. 218 219 ## 0.13.0 - 2019-02-26 220 221 ### Added 222 223 - When cluster-creation times out waiting for cluster-version 224 completion, the installer now logs the last failing-operator 225 message (if any). 226 - The installer now invokes the [cluster-config 227 operator][cluster-config-operator] on the bootstrap machine to 228 generate `config.openshift.io` custom resource definitions. 229 230 ### Changed 231 232 - The install-config version has been bumped from `v1beta2` to 233 `v1beta3`. All users will need to update any saved 234 `install-config.yaml` to use the new schema. 235 236 - `machines` has been split into `controlPlane` and `compute`. 237 Multiple compute pools are now supported (previously, only a 238 single `worker` pool was supported). Every compute pool will 239 use the same Ignition configuration. The installer will warn 240 about but allow configurations where there are zero compute 241 replicas. 242 - On libvirt, the `masterIPs` property has been removed, since you 243 cannot configure master IPs via the libvirt machine API 244 provider. 245 - On OpenStack, there is also a new `lbFloatingIP` property, which 246 allows you to provide an IP address to be used by the load 247 balancer. This allows you to create local DNS entries ahead of 248 time before calling `create cluster`. 249 250 - Cluster domain names have been adjusted so that the cluster lives 251 entirely within a per-cluster subdomain. This keeps split-horizon 252 DNS from masking other clusters with the same base domain. 253 - The cluster-version update URL has been changed from the dummy 254 `http://localhost:8080/graph` to the functioning 255 `https://api.openshift.com/api/upgrades_info/v1/graph` and the 256 channel has been changed from `fast` to `stable-4.0`, to opt 257 clusters in to 4.0 upgrades. 258 - Machine-API resources have been moved from `cluster.k8s.io` to 259 `machine.openshift.io` to clarify our divergence from the upstream 260 types while they are unstable. The `openshift-cluster-api` 261 namespace has been replaced with `openshift-machine-api` as well. 262 - The installer now uses etcd and OS images referenced by the update 263 payload when configuring the machine-config operator. 264 - The etcd, aggregator, and other certificate authorities are now 265 self-signed, decoupling their chains of trust from the root 266 certificate authority. 267 - The installer no longer creates a service-serving certificate 268 authority. The certificate authority is now created by the 269 [service-CA operator][service-ca-operator]. 270 - On AWS, the worker IAM role permissions were reduced to a smaller 271 set required for kubelet initialization. 272 - On AWS, the worker security group has been expanded to allow ports 273 9000-9999 for for host network services. This matches the approach 274 we have been using for masters since 0.4.0. The master security 275 group has also been adjusted to fix a 9990 -> 9999 typo from 0.4.0. 276 - On libvirt, the default compute nodes have been bumped from 2 to 4 277 GiB of memory and the control-plane nodes have been bumped from 4 to 278 6 GiB of memory and 2 to 4 vCPUs. 279 - Several doc and internal cleanups and minor fixes. 280 281 ### Fixed 282 283 - The router certificate authority is appended to the admin 284 `kubeconfig` to fix the OAuth flow behind `oc login`. 285 - The `install-config.yaml` validation is now more robust, with the 286 installer: 287 288 - Validating cluster names (it previously only validated cluster 289 names provided via the install-config wizard). 290 - Validating `networking.clusterNetworks[].cidr` and explicitly 291 checking for `nil` `machineCIDR` and `serviceCIDR`. 292 293 - Terraform variables are now generated from master machine 294 configurations instead of from the install configuration. This 295 allows them to reflect changes made by editing master machine 296 configurations during [staged 297 installs](docs/user/overview.md#multiple-invocations). 298 - `metadata.json` is generated before the Terraform invocation, fixing 299 a bug introduced in 0.12.0 which made it hard to clean up after 300 failed Terraform creation. 301 - The machine-config server has moved its Ignition-config 302 service from port 49500 to 22623 to avoid the dynamic-port range 303 starting at [49152][rfc-6335-s6]. 304 - When the installer prompts for AWS credentials, it now respects 305 `AWS_PROFILE` and will update an existing credentials file instead 306 of erroring out. 307 - On AWS, the default [instance types][aws-instance-types] now depend 308 on the selected region, with regions that do not support m4 types 309 falling back to m5. 310 - On AWS, the installer now verifies that the user-supplied 311 credentials have sufficient permissions for creating a cluster. 312 Previously, permissions issues would surface as Terraform errors or 313 broken cluster functionality after a nominally successful install. 314 - On AWS, the `destroy cluster` implementation is now more robust, 315 fixing several bugs from 0.10.1: 316 317 - The destroy code now checks for `nil` before dereferencing, 318 avoiding panics when removing internet gateways which had not 319 yet been associated with a VPC, and in other similar cases. 320 - The destoy code now treats already-deleted instances as 321 successfully deleted, instead of looping forever while trying to 322 delete them. 323 - The destroy code now treats a non-existant public DNS zone as 324 success, instead of looping forever while trying to delete 325 records from it. 326 327 - On AWS and OpenStack, there is a new infra ID that is a uniqified, 328 possibly-abbreviated form of the cluster name. The infra ID is used 329 to name and tag cluster resources, allowing for multiple clusters 330 that share the same cluster name in a single account without naming 331 conflicts (beyond DNS conflicts if both clusters also share the same 332 base domain). 333 - On OpenStack, the HAProxy configuration on the service VM now only 334 balances ports 80 and 443 across compute nodes (it used to also 335 balance them across control-plane nodes). 336 - On OpenStack, the service VM now uses CoreDNS instead of dnsmasq. 337 And it now includes records for `*.apps.{cluster-domain}` and the 338 Kubernetes API. 339 - On OpenStack, the service VM has been moved to its own subnet. 340 341 ### Removed 342 343 - On AWS, control-plane nodes have been moved to private subnets and 344 no longer have public IPs. Use a VPN or bastion host if you need 345 SSH access to them. 346 347 ## 0.12.0 - 2019-02-05 348 349 ### Changed 350 351 - We now wait for [`ClusterVersion`][ClusterVersion] to report all 352 operators as available before returning from `create cluster`. 353 - We now configure the network operator via 354 `networks.config.openshift.io` and reserve 355 `networkconfigs.networkoperator.openshift.io` for lower-level 356 configuration (although we still generate it as well). 357 - We now set `apiServerURL` and `etcdDiscoveryDomain` in 358 `infrastructures.config.openshift.io`. 359 - Release binaries are now stripped, which dramatically reduces their 360 size. Builds with `MODE=dev` remain unstripped if you want to 361 attach a debugger. 362 - On AWS, `destroy cluster` no longer depends directly on the cluster 363 name (although it still depends on the cluster name indirectly via 364 the `kubernetes.io/cluster/{name}` tag). This makes it easier to 365 reconstruct `metadata.json` for `destroy cluster` if you 366 accidentally removed the file before destroying your cluster. 367 - On AWS, the default worker MachineSets have been bumped to 120 GiB 368 volumes to increase our baseline performance from on [gp2's sliding 369 IOPS scale][aws-ebs-gp2-iops]. The new default worker volumes match 370 our master bump from 0.5.0. 371 - On OpenStack, the HAProxy configuration on the service VM is 372 dynamically updated as masters and workers are added and removed. 373 This supports console access, among other things. 374 - Several doc and internal cleanups. 375 376 ### Fixed 377 378 - We no longer write distracting `ERROR: logging before flag.Parse...` 379 messages from our underlying Kubernetes libraries. 380 - On loading `install-config.yaml`, we now error on CIDRs whose IP is 381 not at the beginning of the masked subnet. For example, we now 382 error for `192.168.126.10/24`, since the beginning of that subnet is 383 `192.168.126.0`. 384 - On loading `install-config.yaml`, we now fill in defaults for 385 `replicas` when it is unset or explicitly `null`. 386 - We have fixed some issues with round-tripping assets between the 387 installer and the asset directory which lead to the reloaded assets 388 being falsely identified as dirty and rebuilt. 389 - On OpenStack, a new security rule exposes port 443 to allow 390 OpenShift web-console access. 391 - On OpenStack, credentials secret generation now respects the install 392 configuration's `cloud` value, and the secret name has been updated 393 from `openstack-creds` to `openstack-credentials`. 394 - On OpenStack, the `local-dns` service will now restart on failure 395 (e.g. when the initial image pull fails) and it no longer sets the 396 name of the container (so we can always re-run it without running 397 into duplicate name issues). 398 399 ### Removed 400 401 - On loading `install-config.yaml`, the installer no longer restricts 402 `networking.type` to a known value. If the network operator sees an 403 unrecognized type, it assumes the user is configurating networking 404 and doesn't react. 405 - We no longer seed `~core/.bash_history` on the bootstrap node, as 406 part of becoming less opinionated about which users are present on 407 the underlying operating system. 408 - On AWS, the `iamRoleName` machine-pool property is gone, and the 409 `podCIDR` networking property (deprecated in 0.4.0) is gone. The 410 install-config version has been bumped from `v1beta1` to `v1beta2`. 411 All users, regardless of platform, will need to update any saved 412 `install-config.yaml` to use the new version. IAM roles are being 413 replaced by [the credential operator][credential-operator], and 414 while we still create IAM roles for our master, worker, and 415 bootstrap machines, we're removing the user-facing property now to 416 avoid making this breaking change later. 417 - On AWS, the bootstrap machine security group allowing kubelet access 418 (added in 0.10.1) has been removed. Static pod logs should soon be 419 available from journald (although they aren't yet). 420 421 ## 0.11.0 - 2019-01-27 422 423 ### Added 424 425 - On AWS, the installer creates [DHCP options][aws-dhcp-options] for 426 the VPC to support internal unqualified-hostname resolution. This 427 works around some limitations with `oc rsh` and Kubernetes node 428 registration in the face of inappropriate default DHCP options. And 429 because [the AWS `domain-name` logic is 430 region-specific][aws-dhcp-options], there is no single DHCP options 431 configuration that provides internal unqualified-hostname resolution 432 for multiple regions. 433 434 ### Changed 435 436 - On AWS, the installer now prompts for missing credentials even if 437 you supplied an `install-config.yaml`. Previously, only the 438 install-config wizard would prompt. 439 - On OpenStack, the developer-only internal DNS server which was 440 removed in 0.10.0 has been restored, because the approach taken in 441 0.10.0 broke etcd cluster formation for some users. 442 - Several doc and internal cleanups. 443 444 ### Fixed 445 446 - `openshift-install` has improved error handling for various invalid 447 command lines. It now errors when additional positional arguments 448 are passed to commands that do not take positional arguments 449 (previously those commands silently ignored the presence of 450 positional arguments). And it logs an error and exits 1 when an 451 invalid value is provided to --log-level (previously it exited 1 but 452 did not write to the standard error stream). 453 - The slow-input issues for the install-config wizard have been fixed. 454 - On AWS, `destroy cluster` fixed a bug in the 0.10.1 refactor which 455 could lead to leaked resources and a claim of successful deletion if 456 a call to get tagged resources failed (for example, because the 457 caller lacked the `tag:GetResources` permission). 458 - On AWS, a new explicit dependency in the Terraform modules prevents 459 errors like: 460 461 * module.vpc.aws_lb.api_external: 1 error occurred: 462 * aws_lb.api_external: Error creating Application Load Balancer: InvalidSubnet: VPC vpc-0765c67bbc82a1b7d has no internet gateway 463 status code: 400, request id: 5a...d5 464 465 - On libvirt, the installer no longer holds the OS image in memory 466 after it has been written to disk. Ideally it would stream the OS 467 image to disk instead of ever holding it in memory, but this fix 468 mitigates our current in-memory buffering. 469 470 ## 0.10.1 - 2019-01-22 471 472 ### Changed 473 474 - `create ignition-configs` now also writes `metadata.json` to the 475 asset directory, which allows [Hive][] to more reliably destroy 476 clusters. 477 - `destroy cluster` now removes `.openshift_install_state.json` on 478 success, clearing the way for future `create cluster` runs in the 479 same asset directory. 480 - On AWS, we now default to m4.xlarge masters. The increased CPU 481 reduces etcd latencies, which in turn helps with cluster stability. 482 - On AWS, the bootstrap machine has a new security-group allowing 483 journald-gateway and kubelet access, for easier debugging when 484 bootstrapping fails. 485 - Several doc and internal cleanups. 486 487 ### Removed 488 489 - The SSH public key is no longer inserted in the pointer Ignition 490 configurations, now that authorized public keys are [managed by the 491 machine-config daemon][machine-config-daemon-ssh-keys]. 492 493 ### Fixed 494 495 - On AWS, the cluster-API provider now supports configuring machine 496 volumes, so `rootVolume` settings in `install-config.yaml` will be 497 respected. 498 - On AWS, the generated Terraform variables no longer clobber master 499 instance type and root volume configuration set via 500 `install-config.yaml`. You can now use: 501 502 ```yaml 503 machines: 504 - name: master 505 platform: 506 aws: 507 type: m5.large 508 rootVolume: 509 iops: 3000 510 size: 220 511 type: io1 512 replicas: 3 513 - name: worker 514 ... 515 ``` 516 517 and similar to successfully customize your master machines. 518 - On AWS, `destroy cluster` has been adjusted to use more efficient 519 tag-based lookup and fix several bugs due to previously-missing 520 pagination. This should address some issues we had been seeing with 521 leaking AWS resources despite `destroy cluster` claiming success. 522 523 ## 0.10.0 - 2019-01-15 524 525 ### Added 526 527 - The installer pushes an Infrastructure object to 528 infrastructures.config.openshift.io with platform information. 529 Cluster components should use this instead of the deprecated 530 `cluster-config-v1` resource. 531 - `openshift-install` has a new `completion` subcommand, to generation 532 shell-completion code (currently only for Bash). 533 - On AWS, `destroy cluster` now also removed IAM users with the usual 534 tags. We don't create these users yet, but the removal sets the 535 stage for the coming [credential operator][credential-operator]. 536 537 ### Changed 538 539 - Install configuration now includes a new `apiVersion` property which 540 must be set to `v1beta1`. Future changes to the install-config 541 schema will result in new versions, allowing new installers to 542 continue to support older install-config schema (and older 543 installers to error out when presented with newer install-config 544 schema). Changes to the schema since 0.9.0: 545 546 - `clusterID` has been removed. This should be a new UUID for 547 every cluster, so there is no longer an easy way for users to 548 configure it. 549 - Image configuration has been removed. Almost all users should 550 be fine with the installer-chosen RHCOS. Users who need to 551 override the RHCOS build (because they're testing new RHCOS 552 releases) can set a new `OPENSHIFT_INSTALL_OS_IMAGE_OVERRIDE` 553 environment variable. 554 - Per-platform network properties have been consolidated into the 555 platform-agnostic `machineCIDR` from which node IP addresses are 556 assigned. 557 - On libvirt, all machine-pool configuration has been removed, as 558 no remaining properties were supported by the libvirt 559 cluster-API provider. 560 561 - `install-config.yaml` read during [staged 562 installs](docs/user/overview.md#multiple-invocations) will now have 563 installer-defaults applied for missing properties. This allows you 564 to set only the properties you are interested in overriding, and 565 allow the installer to manage the remaining properties. 566 - `create ignition-configs` now also writes the admin kubeconfig to 567 the asset directory, to support bring-your-own-infrastructure use 568 cases. 569 - The bootstrap node now [serves 570 journals](docs/user/troubleshooting.md#troubleshooting-the-bootstrap-node) 571 for easier troubleshooting. 572 - The validity for the initial kubelet TLS certificate has been 573 increased from one hour to 24 hours, to give 574 bring-your-own-infrastructure users longer to manually distribute 575 the certificate before it expires. 576 - The key for the root certificate authority is no longer pushed into 577 the cluster (not even to the bootstrap node). 578 - Machine(set)s generated by the installer now use `providerSpec` 579 instead of the deprecated `providerConfig`. 580 - On AWS, the load balancers now use HTTPS health checks to reduce log 581 noise like: 582 583 http: TLS handshake error from 10.0.20.86:28372: EOF 584 585 - On AWS, IAM roles are now tagged with the usual resource tags 586 (`openshiftClusterID`, etc.). Some other resources have had their 587 tags updated to match those conventions (e.g. the internal Route 53 588 hosted zone was updated from `KubernetesCluster` to 589 `kubernetes.io/cluster/{name}: owned`). 590 - The OpenStack platform has been removed from the install-config 591 wizard while it remains experimental. It is still available for 592 users who supply their own `install-config.yaml`. 593 - On OpenStack, the service VP now respects any SSH key specified in 594 the install configuration. 595 - On OpenStack, a developer-only internal DNS server has been removed, 596 so users need to configure additional records for the existing 597 external DNS zone. 598 - On OpenStack, Neutron trunk ports are now used for VM network 599 interfaces if Neutron supports them to support future Kuryr 600 integration. 601 - On OpenStack, masters and workers have been consolidated in a single 602 subnet to simplify the deployment. 603 - On OpenStack, the Ignition security group now only allows internal 604 connections, and no longer allows connections from outside the 605 cluster network. 606 - On OpenStack, the machine(set) templates have been updated to set 607 `cloudName` and some other properties. 608 - On libvirt, `destroy cluster` is now more robust in the face of 609 domains which were already shutdown. 610 - Lots of doc and internal cleanup and minor fixes. 611 612 ### Removed 613 614 - Support for `install-config.yml` (deprecated in 0.8.0) has been 615 removed. 616 617 ### Fixed 618 619 - On AWS, domain pagination for the wizard's base-domain select widget 620 has been fixed. Previously, it would continuously fetch the first 621 page of hosted zones (for accounts with multiple pages of zones) 622 until it hit an error like: 623 624 ``` 625 ERROR list hosted zones: Throttling: Rate exceeded 626 status code: 400, request id: ... 627 ``` 628 629 before falling back to a free-form base-domain input. 630 631 ## 0.9.0 - 2019-01-05 632 633 ### Added 634 635 - There is a new `none` platform for bring-your-own infrastructure 636 users who want to generate Ignition configurations. The new 637 platform is mostly undocumented; users will usually interact with it 638 via [OpenShift Ansible][openshift-ansible]. 639 640 ### Changed 641 642 - On OpenStack, there's no longer a default flavor, because flavor 643 names are not standardized. Instead, there's a new prompt to choose 644 among flavors supported by the target OpenStack implementation. 645 - On libvirt, we now use the host-passthrough CPU type, which should 646 improve performance for some use-cases. 647 - Some doc and internal cleanup and minor fixes. 648 649 ## 0.8.0 - 2018-12-23 650 651 ### Added 652 653 - The installer binary now includes all required Terraform plugins, so 654 there is no longer a need to separately download and install them. 655 This will be most noticeable on libvirt, where users used to be 656 required to install the libvirt plugin manually. This avoids issues 657 with mismatched plugin versions (which we saw sometimes on libvirt) 658 and network-connectivity issues during `create cluster` invocations 659 (which we saw sometimes on all platforms). 660 - The configured base domain is now pushed into the cluster's 661 `config.openshift.io` as a DNS custom resource. 662 663 ### Changed 664 665 - `install-config.yml` is now `install-config.yaml` to align with our 666 usual YAML extension. `install-config.yml` is deprecated, and 667 support for it will be removed completely in the next release. 668 - On AWS, we now use a select widget for the base-domain wizard 669 prompt, making it easier to choose an existing public zone. 670 - On AWS, Route 53 rate limits during `cluster destroy` are now less 671 disruptive, reducing the AWS request load in busy accounts. 672 - On OpenStack, the HAProxy configuration no longer hard-codes the 673 cluster name and base domain. 674 - On OpenStack, the 0.7.0 fix for: 675 676 FATAL Expected HTTP response code [202 204] when accessing [DELETE https://osp-xxxxx:13696/v2.0/routers/52093478-dcf1-4bcc-9a2c-dbb1e42da880], but got 409 instead 677 {"NeutronError": {"message": "Router 52093478-dcf1-4bcc-9a2c-dbb1e42da880 still has ports", "type": "RouterInUse", "detail": ""}} 678 679 was incorrect and has been reverted. We'll land a real fix for 680 this issue in future work. 681 - On OpenStack, the service VM from 0.7.0 now has a floating IP 682 address. 683 - All libvirt functionality is behind `TAGS=libvirt` now. Previously 684 installer builds with `TAGS=libvirt_destroy` included all libvirt 685 functionality, while builds without that tag would include `create 686 cluster` but not `destroy cluster` functionality. With the change, 687 all users using the installer with libvirt clusters will need to set 688 the new build tag. 689 - Lots of doc and internal cleanup and minor fixes. 690 691 ### Removed 692 693 - On AWS and OpenStack, the `tectonicClusterID` tag which was 694 deprecated in 0.7.0 has been removed. 695 696 ## 0.7.0 - 2018-12-14 697 698 ### Added 699 700 - We now validate install-config when loading it during [staged 701 installs](docs/user/overview.md#multiple-invocations). Previously 702 we only validated that input when it was entered into the wizard or 703 via environment variables. This also leads to some changes in which 704 values are considered valid: 705 706 - Base domains may no longer contain uppercase letters. 707 - Cluster names may now be longer than 63 characters, although as 708 specified in [RFC 1123][rfc-1123-s2.1] host software may not 709 support names longer than 63 characters. 710 - Pull secrets require more content (e.g. it must contain an 711 `auths` property). Previously we only required pull secrets to 712 be valid JSON. 713 - SSH public keys must be parsable with 714 [`ParseAuthorizedKey`][ssh.ParseAuthorizedKey]. Previously we 715 had our own logic that was not as well developed. 716 717 - We've added `images/installer/Dockerfile.ci.rhel7` for building 718 installer images on a RHEL base. 719 - On AWS, we now create [an S3 endpoint][aws-s3-endpoint] for the VPC. 720 - We've added OpenStack documentation. 721 722 ### Changed 723 724 - The pull-secret prompt now masks the input to avoid leaking it to 725 shoulder surfers and similar. 726 - The pull-secret prompt's help now points to 727 [cloud.openshift.com](https://cloud.openshift.com/clusters/install#pull-secret) 728 instead of [try.openshift.com](https://try.openshift.com). This 729 should make it easier to find the pull secret without digging 730 through a page of introductory content. 731 - The initial kubeconfig inserted on master nodes used to have `admin` 732 privileges, but only for 30 minutes. Now it has role bindings that 733 allow it to create and receive automatic approval for certificate 734 signing requests, but it does not have additional privileges beyond 735 that. 736 - On AWS and OpenStack, master ports 10251 (scheduler) and 10252 737 (controller manager) have been opened to access from all machines. 738 This allows Prometheus (which runs on the worker nodes) to scrape 739 all machines for metrics. 740 - On AWS and OpenStack, the installer and subsequent cluster will now 741 tag resources it creates with `openshiftClusterID`. 742 `tectonicClusterID` is deprecated. 743 - On OpenStack, only the OpenStack `clouds` entry is marshalled into 744 the `openstack-creds` secret. Previously we had injected the host's 745 entire cloud configuration. 746 - On OpenStack, there is now a service VM to provide DNS and load 747 balancing for the OpenShift cluster. The service VM will eventually 748 be removed, but for now its a convenient hack to get usable clusters 749 on OpenStack. 750 - On libvirt, we now document host DNS configuration as required, 751 because too many users were skipping that step and then reporting 752 errors with Kubernetes API detection when the install-host failed to 753 resolve the cluster domain name while waiting for the 754 `bootstrap-complete` event. 755 - Lots of doc and internal cleanup and minor fixes. 756 757 ### Fixed 758 759 - Fixed OpenShift manifest loading during [staged 760 installs](docs/user/overview.md#multiple-invocations). The 761 installer had been ignoring changes to those files since 0.4.0. 762 - Fixed `you must pass a pointer as the target of a Write operation` 763 errors introduced in 0.6.0 for the AWS access key ID prompt. 764 - When `create cluster` times out waiting for the Kubernetes API, we 765 now exit immediately. Previously we'd wait through another 30 766 minutes of failed event-listener connections before failing this 767 case. We've also fixed similar timeout detection for the code that 768 waits for the OpenShift console route. 769 - On OpenStack, we've fixed a bug in router deletion: 770 771 FATAL Expected HTTP response code [202 204] when accessing [DELETE https://osp-xxxxx:13696/v2.0/routers/52093478-dcf1-4bcc-9a2c-dbb1e42da880], but got 409 instead 772 {"NeutronError": {"message": "Router 52093478-dcf1-4bcc-9a2c-dbb1e42da880 still has ports", "type": "RouterInUse", "detail": ""}} 773 774 - On libvirt, we've fixed a bug introduced in 0.6.0 and are now back 775 to removing the bootstrap node from round-robin DNS when we destroy 776 the bootstrap resources. 777 778 ### Removed 779 780 - The user-facing `OPENSHIFT_INSTALL_*` environment variables are 781 gone. Instead, users who want to skip the wizard are encouraged to 782 [provide their own 783 install-config](docs/user/overview.md#multiple-invocations). 784 - On AWS, the option to install a cluster into an existing VPC is 785 gone. Users who would have previously done this can use [VPC 786 peering][aws-vpc-peering]. 787 788 ## 0.6.0 - 2018-12-09 789 790 ### Added 791 792 - We now push a `kubeadmin` user (with an internally-generated 793 password) into the cluster for the new [bootstrap identity 794 provider][bootstrap-identity-provider]. This gives users a way to 795 access the web console, Prometheus, etc. without needing to 796 configure a full-fledged identity provider or install `oc`. The 797 `create cluster` subcommand now blocks until the web-console route 798 is available and then exits after printing instructions for using 799 the new credentials. 800 - The installer binary now includes Terraform so there is no longer a 801 need to separately download and install it. 802 803 ### Changed 804 805 - The SSH public key configuration has moved a level up in the install 806 config, now that the `admin` structure has been removed. 807 - `build.sh` now checks to make sure you have a new enough `go`, 808 instead of erroring out partway through the build. 809 - We now resolve the update payload to a digest on the bootstrap node, 810 so [the cluster-version-operator][cluster-version-operator] can 811 figure out exactly which image we used. 812 - Creation logging has been overhauled to increase it's 813 signal-to-noise while waiting for the Kubernetes API to come up. 814 - On AWS, the installer will now prompt you for an access key and 815 secret if it cannot find your AWS credentials in the usual places. 816 - On AWS, the installer will look at `AWS_DEFAULT_REGION` and in other 817 usual places when picking a default for the region prompt. You 818 still have to set `OPENSHIFT_INSTALL_AWS_REGION` if you want to skip 819 the prompt entirely. 820 - On libvirt, we've bumped masters from 3 GiB of memory to 4 GiB to 821 address out-of-memory issues we had been seeing at 3 GiB. 822 - Lots of doc and internal cleanup and minor fixes. 823 824 ### Removed 825 826 - The old admin username and password inputs have been removed. They 827 weren't being used anyway, and their intended role has been replaced 828 by the newly-added `kubeadmin` user and bootstrap identity provider. 829 - The old `openshift-web-console` namespace is gone. The new console 830 is in the `openshift-console` namespace. 831 832 ## 0.5.0 - 2018-12-03 833 834 ### Added 835 836 - We now push the ingress custom resource definition and initial 837 configuration, allowing the ingress operator to configure itself 838 without referencing the deprecated `cluster-config-v1` resource. 839 840 ### Changed 841 842 - Pull secret documentation now points to 843 [try.openshift.com](https://try.openshift.com) for pull-secret 844 acquisition, instead of pointing at `account.coreos.com`. Users 845 will need to update their pull secrets. 846 - If the automatic bootstrap teardown (which landed in 0.4.0) times 847 out waiting for the `bootstrap-complete` event, the installer exits 848 with a non-zero exit code. We had ignored watcher timeouts in 0.4.0 849 due to concerns about watcher robustness, but the current watcher 850 code has been reliable in our continuous integration testing. 851 - The hard-coded `quay.io/coreos/bootkube` dependency has been 852 replaced by the new [cluster-bootstrap][] image, which is referenced 853 from the release image. 854 - The etcd service now uses [selectors][kube-selector] to determine 855 the pods it exposes, and the explict etcd endpoints object is gone 856 (replaced by the one Kubernetes maintains based on the selector). 857 - On AWS, both masters and worker have moved from t2.medium nodes 858 m4.large nodes (more on AWS instance types 859 [here][aws-instance-types]) to address CPU and memory constraints. 860 - On AWS, master volume size has been bumped from 30 GiB to 120 GiB to 861 increase our baseline performance from on [gp2's sliding IOPS 862 scale][aws-ebs-gp2-iops] from the 100 IOPS floor up to 360 IOPS. 863 Volume information is not currently supported by [the cluster-API 864 AWS provider's 865 `AWSMachineProviderConfig`][cluster-api-provider-aws-012575c1-AWSMachineProviderConfig], 866 so this change is currently limited to masters created by the 867 installer. 868 - On Openstack, we now validate cloud, region, and image-name user 869 input instead of blindly accepting entries. 870 - On libvirt, we pass Ignition information for masters and workers via 871 secrets instead of passing a libvirt volume path. This makes the 872 libvirt approach consistent with how we already handle AWS and 873 OpenStack. 874 - Lots of internal cleanup, especially around trimming dead code. 875 876 ### Fixed 877 878 - The `.openshift_install.log` addition from 0.4.0 removed Terraform 879 output from `--log-level=debug`. We've fixed that in 0.5.0; now 880 `.openshift_install.log` will always contain the full Terraform 881 output, while standard error returns to containing the Terraform 882 output if and only if `--log-level=debug` or higher. 883 - On AWS teardown, errors retrieving tags for S3 buckets and Route 53 884 zones are no longer fatal. This allows the teardown code to 885 continue it's exponential backoff and try to remove the bucket or 886 zone later. It avoids some resource leaks we were seeing due to AWS 887 rate limiting on those tag lookups as many simultaneous CI jobs 888 searched for Route 53 zones with their cluster's tags. We'll still 889 hit those rate limits, but they no longer cause us to give up on 890 reaping resources. 891 - On AWS, we've removed some unused data blocks, fixing occasional 892 errors like: 893 894 data.aws_route_table.worker.1: Your query returned no results. 895 896 - On OpenStack, similar retry-during-teardown changes were made for 897 removing ports and for removing subnets from routers. 898 - On libvirt, Terraform no longer errors out when launching clusters 899 configured for more than one master, fixing a bug from 0.4.0. 900 901 ## 0.4.0 - 2018-11-22 902 903 ### Added 904 905 - The creation targets have been moved below a new `create` subcommand 906 (e.g. `openshift-install create cluster` instead of the old 907 `openshift-install cluster`). This makes them easier to distinguish 908 from other `openshift-install` subcommands and also mirrors the 909 approach taken by `destroy` in 0.3.0. 910 - A new `manifest-templates` target has been added to `create`, 911 allowing users to edit templates and have descendant assets 912 generated from their altered templates during [a staged 913 install](docs/user/overview.md#multiple-invocations). 914 - [The ingress operator][ingress-operator] is no longer masked. The 915 old Tectonic ingress operator has been removed. 916 - The [the registry operator][registry-operator] has been added, and 917 the kube-addon operator which used to provide a registry (among 918 other things) has been removed. 919 - The [checkpointer operator][checkpointer-operator] is no longer 920 masked. It runs on the production cluster, but not on the bootstrap 921 node. 922 - Cloud credentials are now pushed into a secret where they can be 923 consumed by cluster-API operators and other tools. 924 - OpenStack now has `destroy` support. 925 - We log verbosely to `${INSTALL_DIR}/.openshift_install.log` for most 926 operations, giving access to the logs for troubleshooting even if 927 you neglected to run with `--log-level=debug`. 928 - We've grown [troubleshooting 929 documentation](docs/user/troubleshooting.md). 930 931 ### Changed 932 933 - The `create cluster` subcommand now waits for the 934 `bootstrap-complete` event and automatically removes the bootstrap 935 assets after receiving it. This means that after `create cluster` 936 returns successfully, the cluster has its production control plane 937 and topology (although there may still be operators working through 938 their initialization). The `bootstrap-complete` event was new in 939 0.3.0, and it is now pushed at the appropriate time (it was too 940 early in 0.3.0). The `destroy bootstrap` subcommand is still 941 available, to allow users to manually trigger bootstrap deletion if 942 the automatic removal fails for whatever reason. 943 - On AWS, bootstrap deletion now also removes the S3 bucket used for 944 the bootstrap node's Ignition configuration. 945 - Asset state is preserved even while moving backwards through [a 946 staged install](docs/user/overview.md#multiple-invocations). For 947 example: 948 949 ```sh 950 openshift-install --dir=example create ignition-configs 951 openshift-install --dir=example create install-config 952 ``` 953 954 now preserves the full state including the generated Ignition 955 configuration. In 0.3.0, the `install-config` call would have 956 removed the Ignition configuration and other downstream assets 957 from the stored state. 958 - Some asset state is removed by successful `destroy cluster` runs. 959 This reduces the change of contaminating future cluster creation 960 with assets left over from a previous cluster, but users are [still 961 encouraged](README.md#cleanup) to remove state between clusters to 962 avoid accidentally contaminating the subsequent cluster's state. 963 - etcd discovery now happens via `SRV` records. On libvirt, this 964 requires a new Terraform provider, so users with older providers 965 should [install a newer 966 version](docs/dev/libvirt/README.md#install-the-terraform-provider). 967 This also allows all masters to use a single Ignition file. 968 - On AWS, the API and service load balancers have been changed from 969 [classic load balancers][aws-elb] to [network load 970 balancers][aws-nlb]. This should avoid [some latency issues we were 971 seeing with classic load balancers][aws-elb-latency], and network 972 load balancers are cheaper. 973 - On AWS, master `Machine` entries now include load balancer 974 references, ensuring that new masters created by [the AWS 975 cluster-API provider][cluster-api-provider-aws] will be attached to 976 the load balancers. 977 - On AWS and OpenStack, the default network CIDRs have changed to 978 `172.30.0.0/16` for services and `10.128.0.0/14` for the cluster, to 979 be consistent with previous versions of OpenStack. 980 - The bootstrap kubelet is no longer part of the production cluster. 981 This reduces complexity and keeps production pods off of the 982 temporary bootstrap node. 983 - [The cluster-version operator][cluster-version-operator] now runs in 984 a static pod on the bootstrap node until the production control 985 plane comes up. This breaks a cyclic dependency between the 986 production API server and operators. 987 - The bootstrap control plane now waits for some core pods to come up 988 before exiting. 989 - [The machine-API operator][machine-api-operator] now reads the 990 install-config from the `cluster-config-v1` config-map, instead of 991 from an operator-specific configuration. 992 - AWS AMIs and libvirt images are now pulled from the new [RHCOS 993 pipeline][rhcos-pipeline]. 994 - Updated the security contact information for CoreOS -> Red Hat. 995 - We push a `ClusterVersion` custom resource. The old `CVOConfig` is 996 still being pushed, but it is deprecated. 997 - OpenStack credentials are loaded from standard system paths. 998 - On AWS and OpenStack, ports 9000-9999 are now open for host network 999 services. 1000 - Lots of doc and internal cleanup and minor fixes. 1001 1002 ### Fixed 1003 1004 - On AWS, `destroy cluster` is now more robust, removing resources with 1005 either the `tectonicClusterID` or `kubernetes.io/cluster/<name>: 1006 owned` tags. It also removes pending instances as well (it used to 1007 only remove running instances). 1008 - On libvirt, `destroy cluster` is now more precise, only removing 1009 resources which are prefixed by the cluster name. 1010 - Bootstrap Ignition edits (via `create ignition-configs`) no longer 1011 suffer from a `worker.ign` dependency cycle, which had been 1012 clobbering manual `bootstrap.ign` changes. 1013 - The state-purging implementation respects `--dir`, avoiding `remove 1014 ...: no such file or directory` errors during [staged 1015 installs](docs/user/overview.md#multiple-invocations). 1016 - Cross-filesystem Terraform state recovery during `destroy bootstrap` 1017 no longer raises `invalid cross-device link`. 1018 - Bootstrap binaries are now located under `/usr/local/bin`, avoiding 1019 SELinux violations on RHEL 8. 1020 1021 ### Removed 1022 1023 - All the old Tectonic operators and the `tectonic-system` namespace 1024 have been removed. 1025 - On libvirt, the image URI prompt has been removed. You can still 1026 control this via the `OPENSHIFT_INSTALL_LIBVIRT_IMAGE` environment 1027 variable, but too many users were breaking their cluster by pointing 1028 the installer at an outdated RHCOS, so we removed the prompt to make 1029 that knob less obvious. 1030 - On libvirt, we've removed `.gz` suffix handling for images. The new 1031 RHCOS pipeline supports `Content-Encoding: gzip`, so the 1032 suffix-based hack is no longer necessary. 1033 - The `destroy-cluster` command, which was deprecated in favor of 1034 `destroy cluster` in 0.3.0, has been removed. 1035 - The creation target subcommands of `openshift-install` have been 1036 removed. Use the target subcommands of `create` instead 1037 (e.g. `openshift-install create cluster` instead of 1038 `openshift-install cluster`). 1039 1040 ## 0.3.0 - 2018-10-22 1041 1042 ### Added 1043 1044 - Asset state is loaded from the install directory, allowing for a [staged 1045 install](docs/user/overview.md#multiple-invocations). 1046 - A new `openshift-install destroy bootstrap` command destroys the 1047 bootstrap resources. Ideally, this would be safe to run after the 1048 new `bootstrap-complete` event is pushed to the `kube-system` 1049 namespace, but there is currently a bug causing that event to be 1050 pushed too early. For now, you're on your own figuring out when to 1051 call this command. 1052 1053 For consistency, the old `destroy-cluster` has been deprecated in 1054 favor of `openshift-install destroy cluster`. 1055 1056 - The installer creates worker `MachineSet`s, instead of leaving that to 1057 [the machine-API operator][machine-api-operator]. 1058 - The installer creates master `Machine`s and tags masters to be 1059 picked up by the [AWS cluster-API 1060 provider][cluster-api-provider-aws]. 1061 1062 ### Changed 1063 1064 - The installer now respects the `AWS_PROFILE` environment variable 1065 when launching AWS clusters. 1066 - Worker subnets are now created in the appropriate availability zone 1067 for AWS clusters. 1068 - Use the released hyperkube and hypershift instead of hard-coded 1069 images. 1070 - Lots of changes to keep up with the advancing release image, as 1071 OpenShift operators are added to control various cluster components. 1072 - Lots of internal cleanup and minor fixes. 1073 1074 ### Removed 1075 1076 - The Tectonic kube-core operator, which has been replaced by 1077 OpenShift operators. 1078 1079 ## 0.2.0 - 2018-10-12 1080 1081 ### Added 1082 1083 - Asset state is preserved between invocations, allowing for a staged 1084 install like: 1085 1086 ```console 1087 $ openshift-install --dir=example install-config 1088 $ openshift-install --dir=example cluster 1089 ``` 1090 1091 which creates a cluster using the same data given in the 1092 install-config (including the same random cluster ID, etc.). 1093 - [The kube-apiserver][kube-apiserver-operator] and 1094 [kube-controller-manager][kube-controller-manager-operator] 1095 operators are called to render additional cluster manifests. 1096 - etcd is now available as a service in the `kube-system` namespace, 1097 and the new service is labeled so [Prometheus][] will scrape it. 1098 - The `service-serving-cert-signer-signing-key` secret is now 1099 available in the `openshift-service-cert-signer` namespace, which 1100 gives [the service-serving cert signer][service-serving-cert-signer] 1101 the keys it needs to mint and manage certificates for Kubernetes 1102 services. 1103 - The etcd-serving certificate is now passed through to [the 1104 kube-controller-manager operator][kube-controller-manager-operator]. 1105 - We disable some components which [the cluster-version 1106 operator][cluster-version-operator] would otherwise install but 1107 which conflict with the legacy tectonic-operators. 1108 - The new `openshift-install graph` outputs the asset graph in [the 1109 DOT language][dot]. 1110 - `openshift-install version` now outputs the Terraform version as 1111 well as the installer version. 1112 1113 ### Changed 1114 1115 - The [cluster-version operator][cluster-version-operator] is no 1116 longer run as a static pod. Instead, we just wait until the control 1117 plane comes up and run it them. 1118 - Terraform errors are logged to standard error even when 1119 `--log-level` is less than `debug`. 1120 - Terraform is now invoked with `-no-color` and `-input=false`. 1121 - The `cluster` target now includes both launching the cluster and 1122 populating `metadata.json`, regardless of whether the `terraform` 1123 invocation succeeds. This allows `destroy-cluster` to cleanup 1124 cluster resources even when the `terraform` invocation fails. 1125 - Reported errors now include more context, making them less 1126 enigmatic. 1127 - Libvirt image caching is more efficient, caching unzipped images 1128 with a cache that grows by one unzipped image per RHCOS release in 1129 `$XDG_CACHE_HOME/openshift-install/libvirt/image`. The previous 1130 implementation unzipped, when necessary, for every launched cluster, 1131 which was slow. And the previous implementation added one unzipped 1132 image to `/tmp` per cluster launch, which consumed more disk space. 1133 - Work continues on the OpenStack platform. 1134 - Lots of internal cleanup, especially around asset generation. 1135 1136 ### Removed 1137 1138 - The operatorstatus CRD. Now [the cluster-version 1139 operator][cluster-version-operator] creates this on its own. 1140 - The `machine-config-operator-images` config-map. Now [the 1141 cluster-version operator][cluster-version-operator] pulls these from 1142 [the machine-config images][machine-config-operator]. 1143 - The `machine-api` app-version from the `tectonic-system` namespace. 1144 1145 ## 0.1.0 - 2018-10-02 1146 1147 ### Added 1148 1149 The `openshift-install` command. This moves us to the new 1150 install-config approach with [asset 1151 generation](docs/design/assetgeneration.md) in Go instead of in 1152 Terraform. Terraform is still used to push the assets out to 1153 resources on the backing platform (AWS, libvirt, or OpenStack), but 1154 that push happens in a single Terraform invocation instead of in 1155 multiple steps. This makes installation faster, because more 1156 resources can be created in parallel. `openshift-install` also 1157 dispenses with the distribution tarball; all required assets except 1158 for a `terraform` binary are distributed in the `openshift-install` 1159 binary. 1160 1161 The configuration and command-line interface are quite different, so 1162 previous `tectonic` users are encouraged to start from scratch when 1163 getting acquainted with `openshift-install`. AWS users should look 1164 [here](README.md#quick-start). Libvirt users should look 1165 [here](docs/dev/libvirt/README.md). The new `openshift-install` also 1166 includes an interactive configuration generator, so you can launch the 1167 installer and follow along as it guides you through the process. 1168 1169 ### Removed 1170 1171 The `tectonic` command and tarball distribution are gone. Please use 1172 the new `openshift-install` command instead. 1173 1174 [aws-dhcp-options]: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html 1175 [aws-ebs-gp2-iops]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html#EBSVolumeTypes_gp2 1176 [aws-elb]: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html 1177 [aws-elb-latency]: https://github.com/openshift/installer/pull/594#issue-227786691 1178 [aws-instance-types]: https://aws.amazon.com/ec2/instance-types/ 1179 [aws-nlb]: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html 1180 [aws-s3-endpoint]: https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html 1181 [aws-vpc-peering]: https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html 1182 [bootstrap-identity-provider]: https://github.com/openshift/origin/pull/21580 1183 [checkpointer-operator]: https://github.com/openshift/pod-checkpointer-operator 1184 [cluster-api-provider-aws]: https://github.com/openshift/cluster-api-provider-aws 1185 [cluster-api-provider-aws-012575c1-AWSMachineProviderConfig]: https://github.com/openshift/cluster-api-provider-aws/blob/012575c1c8d758f81c979b0b2354950a2193ec1a/pkg/apis/awsproviderconfig/v1alpha1/awsmachineproviderconfig_types.go#L86-L139 1186 [cluster-bootstrap]: https://github.com/openshift/cluster-bootstrap 1187 [cluster-config-operator]: https://github.com/openshift/cluster-config-operator 1188 [cluster-version-operator]: https://github.com/openshift/cluster-version-operator 1189 [ClusterVersion]: https://github.com/openshift/cluster-version-operator/blob/master/docs/dev/clusterversion.md 1190 [credential-operator]: https://github.com/openshift/cloud-credential-operator 1191 [dot]: https://www.graphviz.org/doc/info/lang.html 1192 [Hive]: https://github.com/openshift/hive/ 1193 [ingress-operator]: https://github.com/openshift/cluster-ingress-operator 1194 [kube-apiserver-operator]: https://github.com/openshift/cluster-kube-apiserver-operator 1195 [kube-controller-manager-operator]: https://github.com/openshift/cluster-kube-controller-manager-operator 1196 [kube-selector]: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors 1197 [kubecsr]: https://github.com/openshift/kubecsr/ 1198 [machine-api-operator]: https://github.com/openshift/machine-api-operator 1199 [machine-config-operator]: https://github.com/openshift/machine-config-operator 1200 [machine-config-daemon-ssh-keys]: https://github.com/openshift/machine-config-operator/blob/master/docs/Update-SSHKeys.md 1201 [openshift-ansible]: https://github.com/openshift/openshift-ansible 1202 [Prometheus]: https://github.com/prometheus/prometheus 1203 [service-ca-operator]: https://github.com/openshift/service-ca-operator 1204 [ssh.ParseAuthorizedKey]: https://godoc.org/golang.org/x/crypto/ssh#ParseAuthorizedKey 1205 [registry-operator]: https://github.com/openshift/cluster-image-registry-operator 1206 [rfc-1123-s2.1]: https://tools.ietf.org/html/rfc1123#section-2 1207 [rfc-6335-s6]: https://tools.ietf.org/html/rfc6335#section-6 1208 [rhcos-pipeline]: https://releases-rhcos.svc.ci.openshift.org/storage/releases/maipo/builds.json 1209 [service-serving-cert-signer]: https://github.com/openshift/service-serving-cert-signer