Skip to content

Commit

Permalink
Promote SplitControllerAndExtensions to beta (#3165)
Browse files Browse the repository at this point in the history
  • Loading branch information
chiayi committed May 22, 2023
1 parent b944971 commit cb64d39
Show file tree
Hide file tree
Showing 7 changed files with 203 additions and 36 deletions.
2 changes: 1 addition & 1 deletion build/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ KIND_CONTAINER_NAME=$(KIND_PROFILE)-control-plane
GS_TEST_IMAGE ?= us-docker.pkg.dev/agones-images/examples/simple-game-server:0.16

# Enable all alpha feature gates. Keep in sync with `false` (alpha) entries in pkg/util/runtime/features.go:featureDefaults
ALPHA_FEATURE_GATES ?= "PlayerAllocationFilter=true&PlayerTracking=true&SplitControllerAndExtensions=true&CountsAndLists=true&FleetAllocationOverflow=true&Example=true"
ALPHA_FEATURE_GATES ?= "PlayerAllocationFilter=true&PlayerTracking=true&CountsAndLists=true&FleetAllocationOverflow=true&Example=true"

# Build with Windows support
WITH_WINDOWS=1
Expand Down
4 changes: 2 additions & 2 deletions cloudbuild.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -314,13 +314,13 @@ steps:
region=${versionsAndRegions[$version]}
if [ $cloudProduct = generic ]
then
featureWithGate="CustomFasSyncInterval=false&SDKGracefulTermination=false&StateAllocationFilter=false&PlayerAllocationFilter=true&PlayerTracking=true&ResetMetricsOnDelete=false&PodHostname=false&SplitControllerAndExtensions=true&FleetAllocationOverflow=true&Example=true"
featureWithGate="CustomFasSyncInterval=false&SDKGracefulTermination=false&StateAllocationFilter=false&PlayerAllocationFilter=true&PlayerTracking=true&ResetMetricsOnDelete=false&PodHostname=false&SplitControllerAndExtensions=false&FleetAllocationOverflow=true&Example=true"
featureWithoutGate=""
testClusterLocation="${region}-c"
testCluster="gke-standard-e2e-test-cluster-${version//./-}"
else
featureWithGate="CustomFasSyncInterval=false&SDKGracefulTermination=false&StateAllocationFilter=false&PlayerAllocationFilter=true&PlayerTracking=true&ResetMetricsOnDelete=false&PodHostname=false&SplitControllerAndExtensions=true&FleetAllocationOverflow=true&Example=true"
featureWithoutGate="SplitControllerAndExtensions=true"
featureWithoutGate=""
testClusterLocation="${region}"
testCluster="gke-autopilot-e2e-test-cluster-${version//./-}"
fi
Expand Down
2 changes: 1 addition & 1 deletion install/helm/agones/defaultfeaturegates.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ CustomFasSyncInterval: true
PodHostname: true
ResetMetricsOnDelete: true
SDKGracefulTermination: true
SplitControllerAndExtensions: true
StateAllocationFilter: true

# Alpha features
PlayerAllocationFilter: false
PlayerTracking: false
FleetAllocationOverflow: false
SplitControllerAndExtensions: false

# Pre-Alpha features
CountsAndLists: false
Expand Down
200 changes: 181 additions & 19 deletions install/yaml/install.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,34 @@
---
# Source: agones/templates/controller.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: agones-controller-pdb
spec:
minAvailable: 1
maxUnavailable:
selector:
matchLabels:
agones.dev/role: controller
app: agones
release: agones-manual
heritage: Helm
---
# Source: agones/templates/extensions-deployment.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: agones-extensions-pdb
spec:
minAvailable: 1
maxUnavailable:
selector:
matchLabels:
agones.dev/role: extensions
app: agones
release: agones-manual
heritage: Helm
---
# Source: agones/templates/pdb.yaml
apiVersion: policy/v1
kind: PodDisruptionBudget
Expand Down Expand Up @@ -15786,14 +15816,14 @@ metadata:
name: agones-controller-service
namespace: agones-system
labels:
agones.dev/role: controller
agones.dev/role: extensions
app: agones
chart: agones-1.32.0-dev
release: agones-manual
heritage: Helm
spec:
selector:
agones.dev/role: controller
agones.dev/role: extensions
ports:
- name: webhooks
port: 443
Expand Down Expand Up @@ -15891,13 +15921,12 @@ spec:
app: agones
release: agones-manual
heritage: Helm
replicas: 1
replicas: 2
strategy:
type: Recreate
template:
metadata:
annotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
prometheus.io/path: "/metrics"
Expand Down Expand Up @@ -15983,6 +16012,8 @@ spec:
fieldPath: metadata.namespace
- name: CONTAINER_NAME
value: "agones-controller"
- name: LEADER_ELECTION
value: "true"
ports:
- name: webhooks
containerPort: 8081
Expand Down Expand Up @@ -16015,6 +16046,152 @@ spec:
- name: logs
emptyDir: {}
---
# Source: agones/templates/extensions-deployment.yaml
# Copyright 2022 Google LLC All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: apps/v1
kind: Deployment
metadata:
name: agones-extensions
namespace: agones-system
labels:
component: extensions
app: agones
chart: agones-1.32.0-dev
release: agones-manual
heritage: Helm
spec:
selector:
matchLabels:
agones.dev/role: extensions
app: agones
release: agones-manual
heritage: Helm
replicas: 2
strategy:
type: Recreate
template:
metadata:
annotations:
revision/tls-cert: "1"
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
prometheus.io/path: "/metrics"
labels:
agones.dev/role: extensions
app: agones
release: agones-manual
heritage: Helm
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
matchExpressions:
- key: agones.dev/agones-system
operator: Exists
weight: 1
tolerations:
- effect: NoExecute
key: agones.dev/agones-system
operator: Equal
value: "true"
priorityClassName: agones-system
serviceAccountName: agones-controller
terminationGracePeriodSeconds: 27
containers:
- name: agones-extensions
image: "us-docker.pkg.dev/agones-images/release/agones-extensions:1.32.0-dev"
imagePullPolicy: IfNotPresent
env:
- name: PROMETHEUS_EXPORTER
value: "true"
- name: STACKDRIVER_EXPORTER
value: "false"
- name: STACKDRIVER_LABELS
value: ""
- name: GCP_PROJECT_ID
value: ""
- name: NUM_WORKERS
value: "100"
- name: API_SERVER_QPS
value: "400"
- name: API_SERVER_QPS_BURST
value: "500"
- name: LOG_LEVEL
value: "info"
- name: FEATURE_GATES
value: ""
- name: ALLOCATION_BATCH_WAIT_TIME
value: "500ms"
- name: CLOUD_PRODUCT
value: "auto"
- name: LOG_DIR
value: "/home/agones/logs"
- name: LOG_SIZE_LIMIT_MB
value: "10000"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CONTAINER_NAME
value: "agones-extensions"
- name: READINESS_SHUTDOWN_DURATION
value: 18s
ports:
- name: webhooks
containerPort: 8081
- name: http
containerPort: 8080
livenessProbe:
httpGet:
path: /live
port: http
initialDelaySeconds: 3
periodSeconds: 3
failureThreshold: 3
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
failureThreshold: 3
resources:
limits:
ephemeral-storage: 10100Mi
requests:
ephemeral-storage: 10100Mi
volumeMounts:
- name: certs
mountPath: /home/agones/certs
readOnly: true
- name: logs
mountPath: /home/agones/logs
readOnly: false
volumes:
- name: certs
secret:
secretName: agones-manual-cert
- name: logs
emptyDir: {}
---
# Source: agones/templates/ping.yaml
# Copyright 2018 Google LLC All Rights Reserved.
#
Expand Down Expand Up @@ -16240,21 +16417,6 @@ spec:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVjVENDQTFtZ0F3SUJBZ0lVRm5DOUsxT1kzRnFNaWhqN3RWbXh5R3hwUVdzd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dhb3hDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJREFwVGIyMWxMVk4wWVhSbE1ROHdEUVlEVlFRSwpEQVpCWjI5dVpYTXhEekFOQmdOVkJBc01Ca0ZuYjI1bGN6RTBNRElHQTFVRUF3d3JZV2R2Ym1WekxXTnZiblJ5CmIyeHNaWEl0YzJWeWRtbGpaUzVoWjI5dVpYTXRjM2x6ZEdWdExuTjJZekV1TUN3R0NTcUdTSWIzRFFFSkFSWWYKWVdkdmJtVnpMV1JwYzJOMWMzTkFaMjl2WjJ4bFozSnZkWEJ6TG1OdmJUQWVGdzB5TVRBMk16QXhPVFUyTWpGYQpGdzB6TVRBMk1qZ3hPVFUyTWpGYU1JR3FNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1UyOXRaUzFUCmRHRjBaVEVQTUEwR0ExVUVDZ3dHUVdkdmJtVnpNUTh3RFFZRFZRUUxEQVpCWjI5dVpYTXhOREF5QmdOVkJBTU0KSzJGbmIyNWxjeTFqYjI1MGNtOXNiR1Z5TFhObGNuWnBZMlV1WVdkdmJtVnpMWE41YzNSbGJTNXpkbU14TGpBcwpCZ2txaGtpRzl3MEJDUUVXSDJGbmIyNWxjeTFrYVhOamRYTnpRR2R2YjJkc1pXZHliM1Z3Y3k1amIyMHdnZ0VpCk1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2dka0xPS0NINThLSkJpdEJqeVlyTDArRTkKdEl0TFhGVGdxQU9TMGdBQitSVXNZMGhicmVWRHd0SExKYXBnMG55Ni9UYTcvMEc1Wm9kaGR4RlFtS2JWMUxmWQpmZGR0Qm4vOGd4Wi9JQ2dRblU3N3RqY1pLV3JxaW4vZ3h3ZUJua3hjWEtrT3Z1MldoRHdZZVFLN3ZHNEljOGhzClZHb1hTZWo4US94d2M4a0FCRG04YVRSU1RUYmsyWi9kem9mUmswU2xrc1BrVWV5b0NwRGVGbERqY0tTcDAzWnUKV2dBUTNpVy83c1AxVFV5WEtnblZ5M2ZpWm1RQUZreEtOQkxVV0gvVEJJeWtMdUVCMmRYYUd0L0VpZzQ4SWpVOQpMYUxyM3JWSW1Dcmt6dlB5V3VEZTd6MmVKdDE3WEhoTFVHcnE4YTFUSFp3d1NSWUZRc29tQ09ORVNBSTdBZ01CCkFBR2pnWXd3Z1lrd0hRWURWUjBPQkJZRUZMa3FUUWNMQloyMUlWc3BGbkNiaS9TbGtUbzlNQjhHQTFVZEl3UVkKTUJhQUZMa3FUUWNMQloyMUlWc3BGbkNiaS9TbGtUbzlNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdOZ1lEVlIwUgpCQzh3TFlJcllXZHZibVZ6TFdOdmJuUnliMnhzWlhJdGMyVnlkbWxqWlM1aFoyOXVaWE10YzNsemRHVnRMbk4yCll6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFWQTUxU3dNcEhZY20zUnRuc2I5MkgwUTZYT1ZndEJzSWRaY1QKbFBuSmFBSGdybEt2SnhiMU0rdTdQYllDZkZOTWlUTStyWGZ5cWtJRXY3VU1aN0dWeS9CYm9zTk1sb2M0UHJjaAo3RnVlai9zVnArcW1GT1c0VzlPVTFwcytqWm5vcHJ4Z3R1OVgzbmpBZjZiWWVqQWMzaVo0Q0xpem8vMDd2Qk94CnA5L3J4R0FjSVVjQW04Y3hXa01kaEduNnZOYkNFcXJoVTRJdnZSYlMwVnlrckhPY3RGM25raC9GbnRHQU80RDEKUEgrUThSQXBNK2xBeGtXcFIvNXlHTXdLM05WcS9kc2JaclQ5RHhId0hUU2tqL3JXZVRrWmxIN042MHpZL3JqbwpNUjBJNEtOWHl3WElTcGdNbE93dkxPdGY2aUNYeHJDNyt1RjdyQmxCei9tSUNxYnR0dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
version: v1
---
# Source: agones/templates/extensions-deployment.yaml
# Copyright 2022 Google LLC All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
# Source: agones/templates/extensions.yaml
# Copyright 2018 Google LLC All Rights Reserved.
#
Expand Down
24 changes: 12 additions & 12 deletions pkg/util/runtime/features.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ const (
// FeatureSDKGracefulTermination is a feature flag that enables SDK to support gracefulTermination
FeatureSDKGracefulTermination Feature = "SDKGracefulTermination"

// FeatureSplitControllerAndExtensions is a feature flag that will split agones-controller into two deployments
FeatureSplitControllerAndExtensions Feature = "SplitControllerAndExtensions"

// FeatureStateAllocationFilter is a feature flag that enables state filtering on Allocation.
FeatureStateAllocationFilter Feature = "StateAllocationFilter"

Expand All @@ -61,9 +64,6 @@ const (
// if the desired number of the underlying GameServerSet drops below the number of Allocated GameServers.
FeatureFleetAllocateOverflow = "FleetAllocationOverflow"

// FeatureSplitControllerAndExtensions is a feature flag that will split agones-controller into two deployments
FeatureSplitControllerAndExtensions = "SplitControllerAndExtensions"

////////////////
// "Pre"-Alpha features

Expand Down Expand Up @@ -107,17 +107,17 @@ var (
// In each of these, keep the feature sorted by descending maturity then alphabetical
featureDefaults = map[Feature]bool{
// Beta features
FeatureCustomFasSyncInterval: true,
FeaturePodHostname: true,
FeatureResetMetricsOnDelete: true,
FeatureSDKGracefulTermination: true,
FeatureStateAllocationFilter: true,
FeatureCustomFasSyncInterval: true,
FeaturePodHostname: true,
FeatureResetMetricsOnDelete: true,
FeatureSDKGracefulTermination: true,
FeatureSplitControllerAndExtensions: true,
FeatureStateAllocationFilter: true,

// Alpha features
FeaturePlayerAllocationFilter: false,
FeaturePlayerTracking: false,
FeatureFleetAllocateOverflow: false,
FeatureSplitControllerAndExtensions: false,
FeaturePlayerAllocationFilter: false,
FeaturePlayerTracking: false,
FeatureFleetAllocateOverflow: false,

// Pre-Alpha features
FeatureCountsAndLists: false,
Expand Down
5 changes: 5 additions & 0 deletions site/content/en/docs/Advanced/high-availability-agones.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@ description: >
publishDate: 2023-02-28
---

{{% feature expiryVersion="1.32.0" %}}
{{< alpha title="split controller and extensions" gate="SplitControllerAndExtensions" >}}
{{% /feature %}}
{{% feature publishVersion="1.32.0" %}}
{{< beta title="split controller and extensions" gate="SplitControllerAndExtensions" >}}
{{% /feature %}}

## High Availability for Agones Controller

Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/Guides/feature-stages.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ The current set of `alpha` and `beta` feature gates:
| [GameServer Stable Network ID]({{% ref "/docs/Reference/gameserver.md#stable-network-id" %}}) | `PodHostname` | Enabled | `Beta` | 1.32.0 |
| [Reset Metric Export on Fleet / Autoscaler deletion]({{% relref "./metrics.md#dropping-metric-labels" %}}) | `ResetMetricsOnDelete` | Enabled | `Beta` | 1.26.0 |
| [Graceful Termination for GameServer SDK](https://github.com/googleforgames/agones/pull/2205) | `SDKGracefulTermination` | Enabled | `Beta` | 1.18.0 |
| [Split `agones-controller` ](https://github.com/googleforgames/agones/issues/2797) | `SplitControllerAndExtensions` | Enabled | `Beta` | 1.32.0 |
| [GameServer state filtering on GameServerAllocations](https://github.com/googleforgames/agones/issues/1239) | `StateAllocationFilter` | Enabled | `Beta` | 1.26.0 |
| [GameServer player capacity filtering on GameServerAllocations](https://github.com/googleforgames/agones/issues/1239) | `PlayerAllocationFilter` | Disabled | `Alpha` | 1.14.0 |
| [Player Tracking]({{< ref "/docs/Guides/player-tracking.md" >}}) | `PlayerTracking` | Disabled | `Alpha` | 1.6.0 |
| [Split `agones-controller` ](https://github.com/googleforgames/agones/issues/2797) | `SplitControllerAndExtensions` | Disabled | `Alpha` | 1.30.0 |
| [Allocated GameServers are notified on relevant Fleet Updates][fleet-updates] | `FleetAllocationOverflow` | Disabled | `Alpha` | 1.32.0 |
| Example Gate (not in use) | `Example` | Disabled | None | 0.13.0 |

Expand Down

0 comments on commit cb64d39

Please sign in to comment.