Skip to content

Commit e3b782d

Browse files
chore(release): prepare Hulumi 2.0.0 (#278)
Atomic six-package SemVer-major release preparation for the required clusterDns boundary identity. Independently audited exact 1695146; protected CI fully green.
1 parent 94ad8e4 commit e3b782d

11 files changed

Lines changed: 69 additions & 15 deletions

File tree

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
_No changes yet._
1111

12+
## [2.0.0] — 2026-08-02
13+
14+
Atomic six-package publish:
15+
`@hulumi/baseline@2.0.0`, `@hulumi/policies@2.0.0`, `@hulumi/drift@2.0.0`,
16+
`@hulumi/k8s-baseline@2.0.0`, `@hulumi/cloudflare-baseline@2.0.0`, and
17+
`@hulumi/platform-patterns@2.0.0`.
18+
19+
### Security
20+
21+
- `BrokeredAuroraPostgresBoundary` and `WorkloadCapabilityIssuerBoundary`
22+
now require the exact cluster-DNS namespace, Pod selector, and security-group
23+
identity. Protected workloads receive only TCP/UDP 53 egress to that DNS
24+
identity, with reciprocal security-group ingress and an ANDed Kubernetes
25+
namespace-and-Pod peer.
26+
- Exact Route 53 Resolver `/32` rules remain in place for VPC DNS forwarding;
27+
wildcard CIDRs and selectors are rejected.
28+
- Protected Pod templates explicitly disable Istio sidecar injection so their
29+
one-container, zero-init-container admission contract remains enforceable.
30+
31+
### Changed
32+
33+
- This is a major release because both protected-boundary constructors now
34+
require `clusterDns`; existing consumers must supply their exact cluster-DNS
35+
namespace, Pod selector, and security-group identity before upgrading.
36+
1237
## [1.5.6] — 2026-07-30
1338

1439
Atomic six-package publish:

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ The docs are organised by what you're trying to do. The full index lives at [doc
190190
| v1.5.2 | 2026-07-29 | First-create preview hardening for the brokered PostgreSQL boundary: known IRSA trust and secret parent/KMS relationships are prevalidated before provider-output deferral; remaining structural checks require resolved outputs. See [`docs/release/v1.5.2-release-notes.md`](./docs/release/v1.5.2-release-notes.md). |
191191
| v1.5.3 | 2026-07-29 | Deployment-mechanics fix for the brokered PostgreSQL boundary: Pulumi no longer awaits a migrator Job that is intentionally suspended; workloads remain inert until explicit activation. See [`docs/release/v1.5.3-release-notes.md`](./docs/release/v1.5.3-release-notes.md). |
192192
| v1.5.4 | 2026-07-29 | Live-state policy normalization for the brokered PostgreSQL boundary: semantically identical Kubernetes objects pass despite key ordering and server metadata, while explicit malformed values still fail closed. See [`docs/release/v1.5.4-release-notes.md`](./docs/release/v1.5.4-release-notes.md). |
193+
| v1.5.6 | 2026-07-30 | Workload capability issuer boundary, exact native-TLS identity custody, scoped admission guards, and one authoritative DynamoDB table identity. The unpublished v1.5.5 candidate was superseded by this release. |
194+
| v2.0.0 | 2026-08-02 | Exact cluster-DNS security-group and NetworkPolicy routing for protected boundaries, plus Pod-template-only Istio injection opt-out that preserves the one-container admission contract. This major release requires exact `clusterDns` identity on both protected-boundary constructors. See [`docs/release/v2.0.0-release-notes.md`](./docs/release/v2.0.0-release-notes.md). |
193195

194196
Per-milestone specs live in [`docs/slo/runbook-milestones/`](./docs/slo/runbook-milestones/) and lessons-learned in [`docs/slo/lessons/`](./docs/slo/lessons/). The master runbook is [`docs/slo/completed/RUNBOOK-hulumi.md`](./docs/slo/completed/RUNBOOK-hulumi.md). For what's next, watch the [issue tracker](https://github.com/kerberosmansour/hulumi/issues) and [CHANGELOG.md](./CHANGELOG.md).
195197

declarations/cyclonedx-1.6-capabilities.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"component": {
99
"type": "application",
1010
"name": "hulumi",
11-
"version": "1.5.6"
11+
"version": "2.0.0"
1212
}
1313
},
1414
"declarations": {
@@ -19,7 +19,7 @@
1919
"type": "library",
2020
"group": "@hulumi",
2121
"name": "baseline",
22-
"version": "1.5.6",
22+
"version": "2.0.0",
2323
"properties": [
2424
{
2525
"name": "cdx:sunlit:controls",
@@ -44,7 +44,7 @@
4444
"type": "library",
4545
"group": "@hulumi",
4646
"name": "policies",
47-
"version": "1.5.6",
47+
"version": "2.0.0",
4848
"properties": [
4949
{
5050
"name": "cdx:sunlit:controls",
@@ -93,7 +93,7 @@
9393
"type": "library",
9494
"group": "@hulumi",
9595
"name": "drift",
96-
"version": "1.5.6",
96+
"version": "2.0.0",
9797
"properties": [
9898
{
9999
"name": "cdx:sunlit:controls",
@@ -114,7 +114,7 @@
114114
"type": "library",
115115
"group": "@hulumi",
116116
"name": "k8s-baseline",
117-
"version": "1.5.6",
117+
"version": "2.0.0",
118118
"properties": [
119119
{
120120
"name": "cdx:sunlit:controls",
@@ -139,7 +139,7 @@
139139
"type": "library",
140140
"group": "@hulumi",
141141
"name": "cloudflare-baseline",
142-
"version": "1.5.6",
142+
"version": "2.0.0",
143143
"properties": [
144144
{
145145
"name": "cdx:sunlit:controls",
@@ -172,7 +172,7 @@
172172
"type": "library",
173173
"group": "@hulumi",
174174
"name": "platform-patterns",
175-
"version": "1.5.6",
175+
"version": "2.0.0",
176176
"properties": [
177177
{
178178
"name": "cdx:sunlit:controls",
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Hulumi v2.0.0
2+
3+
Hulumi 2.0.0 closes the cluster-DNS path for the protected PostgreSQL broker
4+
and workload capability issuer boundaries without broadening their network or
5+
admission authority.
6+
7+
## Security changes
8+
9+
- Both boundary APIs require an exact cluster-DNS namespace, Pod selector, and
10+
security-group identity.
11+
- Protected security groups permit TCP and UDP port 53 only to the declared DNS
12+
security group; reciprocal ingress is added only on that DNS group.
13+
- Kubernetes NetworkPolicies retain the exact Route 53 Resolver `/32` path and
14+
add one DNS peer whose namespace and Pod selectors are evaluated together.
15+
- Protected Pod templates opt out of Istio injection while shared resource
16+
labels, Service selectors, NetworkPolicy selectors, and admission rules stay
17+
unchanged.
18+
- Empty or wildcard DNS identities fail validation.
19+
20+
## Breaking change
21+
22+
Consumers of `BrokeredAuroraPostgresBoundary` or
23+
`WorkloadCapabilityIssuerBoundary` must provide the new `clusterDns` input.
24+
The major release makes this fail-closed constructor change explicit; existing
25+
deployments must supply the cluster DNS identity before upgrading.
26+
27+
All six `@hulumi/*` packages remain on the atomic `2.0.0` release train.

packages/baseline/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hulumi/baseline",
3-
"version": "1.5.6",
3+
"version": "2.0.0",
44
"description": "Hardened Pulumi baseline components for AWS and GitHub — SecureBucket, AccountFoundation, AWS organization guardrails, secure primitives, detection foundations, SecureRepository, OrgFoundation. SLSA Build L3 attestation on every release.",
55
"license": "Apache-2.0",
66
"publishConfig": {

packages/cloudflare-baseline/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hulumi/cloudflare-baseline",
3-
"version": "1.5.6",
3+
"version": "2.0.0",
44
"description": "Hardened Pulumi baseline components for Cloudflare edge posture.",
55
"license": "Apache-2.0",
66
"publishConfig": {

packages/drift/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hulumi/drift",
3-
"version": "1.5.6",
3+
"version": "2.0.0",
44
"publishConfig": {
55
"access": "public",
66
"provenance": true

packages/k8s-baseline/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hulumi/k8s-baseline",
3-
"version": "1.5.6",
3+
"version": "2.0.0",
44
"description": "Hardened Pulumi K8s / EKS / Istio / RDS / Secrets-Manager baseline components — EksClusterFoundation, HardenedHelmRelease, EksSubnetTagger, IstioFoundation, AlbMeshedHttpEntrypoint, KubernetesSecretFromAwsSecretsManager, RdsCredentialSecret, GitHubAppCredential. SLSA Build L3 attestation on every release.",
55
"license": "Apache-2.0",
66
"publishConfig": {

packages/platform-patterns/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hulumi/platform-patterns",
3-
"version": "1.5.6",
3+
"version": "2.0.0",
44
"description": "Cross-provider Pulumi patterns for Cloudflare edge ingress, AWS deployment identity, secure Pulumi state backends, GitHub deployment repositories, build provenance, and runner governance.",
55
"license": "Apache-2.0",
66
"publishConfig": {

packages/policies/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hulumi/policies",
3-
"version": "1.5.6",
3+
"version": "2.0.0",
44
"publishConfig": {
55
"access": "public",
66
"provenance": true

0 commit comments

Comments
 (0)