diff --git a/.versions b/.versions index b8185e45..c9d87cf7 100644 --- a/.versions +++ b/.versions @@ -1,6 +1,6 @@ #!/bin/bash -export OPERATOR_TAG=0.0.2.0 -export INIT_CONTAINER_TAG=0.0.2.0 -export SIDECAR_TAG=0.0.2.0 -export NETCORE_SAMPLE_TAG=0.0.1.2 -export OPENARENA_SAMPLE_TAG=0.0.1.2 \ No newline at end of file +export OPERATOR_TAG=0.1.0 +export INIT_CONTAINER_TAG=0.1.0 +export SIDECAR_TAG=0.1.0 +export NETCORE_SAMPLE_TAG=0.1.0 +export OPENARENA_SAMPLE_TAG=0.1.0 \ No newline at end of file diff --git a/Makefile b/Makefile index cf6ef450..924f378f 100644 --- a/Makefile +++ b/Makefile @@ -77,7 +77,4 @@ create-install-files: IMAGE_NAME_SIDECAR=$(NS)/$(IMAGE_NAME_SIDECAR) \ SIDECAR_TAG=$${SIDECAR_TAG} \ INIT_CONTAINER_TAG=$${INIT_CONTAINER_TAG} \ - make -C operator create-install-files - -create-install-files-with-monitoring: create-install-files - make -C operator create-install-files-with-monitoring \ No newline at end of file + make -C operator create-install-files \ No newline at end of file diff --git a/README.md b/README.md index 7f898082..640861bc 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ > thundernetes is an experimental project and not recommended for production use. However, we consider it as a great tool for testing your game server before uploading it to Azure PlayFab Multiplayer Servers. +Latest release: **0.1.0** + ## Description Thundernetes is an preview project from the [Azure PlayFab Multiplayer Servers (MPS)](https://docs.microsoft.com/en-us/gaming/playfab/features/multiplayer/servers/) team that enables you to run Linux game servers that use the [PlayFab Game Server SDK (GSDK)](https://github.com/PlayFab/gsdk) on your Kubernetes cluster. Thundernetes can be useful while developing your game server in the following scenarios: diff --git a/installfiles/operator.yaml b/installfiles/operator.yaml old mode 100644 new mode 100755 index e138fcf8..06ed2926 --- a/installfiles/operator.yaml +++ b/installfiles/operator.yaml @@ -3875,6 +3875,66 @@ status: --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: gameserverdetails.mps.playfab.com +spec: + group: mps.playfab.com + names: + kind: GameServerDetail + listKind: GameServerDetailList + plural: gameserverdetails + shortNames: + - gsd + singular: gameserverdetail + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.connectedPlayersCount + name: ConnectedPlayersCount + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: GameServerDetail is the Schema for the gameserverdetails API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GameServerDetailSpec defines the desired state of GameServerDetail + properties: + connectedPlayersCount: + type: integer + initialPlayers: + items: + type: string + type: array + type: object + status: + description: GameServerDetailStatus defines the observed state of GameServerDetail + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 @@ -7700,10 +7760,6 @@ spec: - Healthy - Unhealthy type: string - initialPlayers: - items: - type: string - type: array ports: type: string publicIP: @@ -7842,6 +7898,12 @@ rules: - get - patch - update +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - create - apiGroups: - mps.playfab.com resources: @@ -8015,14 +8077,14 @@ spec: - name: API_SERVICE_SECURITY value: none - name: THUNDERNETES_SIDECAR_IMAGE - value: ghcr.io/playfab/thundernetes-sidecar-go:0.0.2.0 + value: ghcr.io/playfab/thundernetes-sidecar-go:0.1.0 - name: THUNDERNETES_INIT_CONTAINER_IMAGE - value: ghcr.io/playfab/thundernetes-initcontainer:0.0.2.0 + value: ghcr.io/playfab/thundernetes-initcontainer:0.1.0 - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - image: ghcr.io/playfab/thundernetes-operator:0.0.2.0 + image: ghcr.io/playfab/thundernetes-operator:0.1.0 imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -8079,6 +8141,13 @@ rules: - gameservers/status verbs: - patch +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - get + - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding diff --git a/installfiles/operator_with_monitoring.yaml b/installfiles/operator_with_monitoring.yaml index 993d0292..13d7822f 100644 --- a/installfiles/operator_with_monitoring.yaml +++ b/installfiles/operator_with_monitoring.yaml @@ -3875,6 +3875,66 @@ status: --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: gameserverdetails.mps.playfab.com +spec: + group: mps.playfab.com + names: + kind: GameServerDetail + listKind: GameServerDetailList + plural: gameserverdetails + shortNames: + - gsd + singular: gameserverdetail + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.connectedPlayersCount + name: ConnectedPlayersCount + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: GameServerDetail is the Schema for the gameserverdetails API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GameServerDetailSpec defines the desired state of GameServerDetail + properties: + connectedPlayersCount: + type: integer + initialPlayers: + items: + type: string + type: array + type: object + status: + description: GameServerDetailStatus defines the observed state of GameServerDetail + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 @@ -7700,10 +7760,6 @@ spec: - Healthy - Unhealthy type: string - initialPlayers: - items: - type: string - type: array ports: type: string publicIP: @@ -7842,6 +7898,12 @@ rules: - get - patch - update +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - create - apiGroups: - mps.playfab.com resources: @@ -8015,14 +8077,14 @@ spec: - name: API_SERVICE_SECURITY value: none - name: THUNDERNETES_SIDECAR_IMAGE - value: ghcr.io/playfab/thundernetes-sidecar-go:0.0.2.0 + value: ghcr.io/playfab/thundernetes-sidecar-go:0.1.0 - name: THUNDERNETES_INIT_CONTAINER_IMAGE - value: ghcr.io/playfab/thundernetes-initcontainer:0.0.2.0 + value: ghcr.io/playfab/thundernetes-initcontainer:0.1.0 - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - image: ghcr.io/playfab/thundernetes-operator:0.0.2.0 + image: ghcr.io/playfab/thundernetes-operator:0.1.0 imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -8079,6 +8141,13 @@ rules: - gameservers/status verbs: - patch +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - get + - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding diff --git a/installfiles/operator_with_security.yaml b/installfiles/operator_with_security.yaml index 3fc2c896..68860244 100644 --- a/installfiles/operator_with_security.yaml +++ b/installfiles/operator_with_security.yaml @@ -3875,6 +3875,66 @@ status: --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: gameserverdetails.mps.playfab.com +spec: + group: mps.playfab.com + names: + kind: GameServerDetail + listKind: GameServerDetailList + plural: gameserverdetails + shortNames: + - gsd + singular: gameserverdetail + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.connectedPlayersCount + name: ConnectedPlayersCount + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: GameServerDetail is the Schema for the gameserverdetails API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GameServerDetailSpec defines the desired state of GameServerDetail + properties: + connectedPlayersCount: + type: integer + initialPlayers: + items: + type: string + type: array + type: object + status: + description: GameServerDetailStatus defines the observed state of GameServerDetail + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 @@ -7700,10 +7760,6 @@ spec: - Healthy - Unhealthy type: string - initialPlayers: - items: - type: string - type: array ports: type: string publicIP: @@ -7842,6 +7898,12 @@ rules: - get - patch - update +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - create - apiGroups: - mps.playfab.com resources: @@ -8015,14 +8077,14 @@ spec: - name: API_SERVICE_SECURITY value: usetls - name: THUNDERNETES_SIDECAR_IMAGE - value: ghcr.io/playfab/thundernetes-sidecar-go:0.0.2.0 + value: ghcr.io/playfab/thundernetes-sidecar-go:0.1.0 - name: THUNDERNETES_INIT_CONTAINER_IMAGE - value: ghcr.io/playfab/thundernetes-initcontainer:0.0.2.0 + value: ghcr.io/playfab/thundernetes-initcontainer:0.1.0 - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - image: ghcr.io/playfab/thundernetes-operator:0.0.2.0 + image: ghcr.io/playfab/thundernetes-operator:0.1.0 imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -8079,6 +8141,13 @@ rules: - gameservers/status verbs: - patch +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - get + - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding diff --git a/installfiles/operator_with_security_and_monitoring.yaml b/installfiles/operator_with_security_and_monitoring.yaml index 89c4089f..bfd5f125 100644 --- a/installfiles/operator_with_security_and_monitoring.yaml +++ b/installfiles/operator_with_security_and_monitoring.yaml @@ -3875,6 +3875,66 @@ status: --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: gameserverdetails.mps.playfab.com +spec: + group: mps.playfab.com + names: + kind: GameServerDetail + listKind: GameServerDetailList + plural: gameserverdetails + shortNames: + - gsd + singular: gameserverdetail + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.connectedPlayersCount + name: ConnectedPlayersCount + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: GameServerDetail is the Schema for the gameserverdetails API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GameServerDetailSpec defines the desired state of GameServerDetail + properties: + connectedPlayersCount: + type: integer + initialPlayers: + items: + type: string + type: array + type: object + status: + description: GameServerDetailStatus defines the observed state of GameServerDetail + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 @@ -7700,10 +7760,6 @@ spec: - Healthy - Unhealthy type: string - initialPlayers: - items: - type: string - type: array ports: type: string publicIP: @@ -7842,6 +7898,12 @@ rules: - get - patch - update +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - create - apiGroups: - mps.playfab.com resources: @@ -8015,14 +8077,14 @@ spec: - name: API_SERVICE_SECURITY value: usetls - name: THUNDERNETES_SIDECAR_IMAGE - value: ghcr.io/playfab/thundernetes-sidecar-go:0.0.2.0 + value: ghcr.io/playfab/thundernetes-sidecar-go:0.1.0 - name: THUNDERNETES_INIT_CONTAINER_IMAGE - value: ghcr.io/playfab/thundernetes-initcontainer:0.0.2.0 + value: ghcr.io/playfab/thundernetes-initcontainer:0.1.0 - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - image: ghcr.io/playfab/thundernetes-operator:0.0.2.0 + image: ghcr.io/playfab/thundernetes-operator:0.1.0 imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -8079,6 +8141,13 @@ rules: - gameservers/status verbs: - patch +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - get + - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -8118,6 +8187,13 @@ rules: - gameservers/status verbs: - patch +- apiGroups: + - mps.playfab.com + resources: + - gameserverdetails + verbs: + - get + - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding diff --git a/operator/Makefile b/operator/Makefile index 78d8d596..e9fb7f91 100644 --- a/operator/Makefile +++ b/operator/Makefile @@ -79,8 +79,6 @@ create-install-files: $(KUSTOMIZE) build config/default | API_SERVICE_SECURITY=usetls envsubst > ../installfiles/operator_with_security.yaml echo "---" >> ../installfiles/operator_with_security.yaml $(KUSTOMIZE) build config/rbac-gameserver-editor >> ../installfiles/operator_with_security.yaml - -create-install-files-with-monitoring: create-install-files ## Add prometheus service monitoring & roles to the kustomize output cp ../installfiles/operator.yaml ../installfiles/operator_with_monitoring.yaml echo "---" >> ../installfiles/operator_with_monitoring.yaml