Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
f21e90f
migration
Intrpt Jun 15, 2024
295ee36
updated model + gameRepository
Intrpt Jun 15, 2024
03d5327
updated repository tests
Intrpt Jun 15, 2024
9212673
set filename when creating a game
Intrpt Jun 15, 2024
d8e6b1e
Fix loadbalancer IP fetching in operator
AustrianGam3r Jun 15, 2024
fa80934
Fix panic
AustrianGam3r Jun 15, 2024
da6b7b1
Add additional node
AustrianGam3r Jun 15, 2024
42c9032
Change upgrade parameters
AustrianGam3r Jun 15, 2024
8d66a76
Add LoadBalancer Mutator to keep stunner ips in tailscale
AustrianGam3r Jun 15, 2024
5316121
Remove namespace of tailscale operator
AustrianGam3r Jun 15, 2024
5f814a2
Add storage class and kubernetes permissions
AustrianGam3r Jun 16, 2024
4484cd2
UserAssigned identities for cluster
rieglerthomas Jun 15, 2024
cfa49f8
Added Admins
rieglerthomas Jun 15, 2024
79a1415
Enable Azure RBAC
rieglerthomas Jun 15, 2024
a65b1c1
Enable role based access control
rieglerthomas Jun 15, 2024
434b180
Added admin role assignment
rieglerthomas Jun 15, 2024
d630841
Removed variable
rieglerthomas Jun 15, 2024
6135aad
Removed role assignment
rieglerthomas Jun 15, 2024
f9d7dab
Reversed IAC changes of yesterday
rieglerthomas Jun 16, 2024
f066448
Change frontend url
AustrianGam3r Jun 17, 2024
6bc58b3
Add volume mount to controller
AustrianGam3r Jun 17, 2024
d368931
Fix game discovery
AustrianGam3r Jun 18, 2024
4297a7a
Merge branch 'feature/82-filename' into feature/62-cloudretro-ingress
AustrianGam3r Jun 18, 2024
0198372
Add FileName to operator and api crd
AustrianGam3r Jun 18, 2024
498e9c7
Fix weird service bug
AustrianGam3r Jun 18, 2024
1770dd4
Use different storage account for kubernetes
AustrianGam3r Jun 18, 2024
36d248c
Merge branch 'develop' into feature/62-cloudretro-ingress
AustrianGam3r Jun 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions api/repositories/gameRepository.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package repositories
import (
"api/models"
"database/sql"

"github.com/google/uuid"
)

Expand Down
24 changes: 14 additions & 10 deletions operator/internal/controller/stream/game_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package controller
import (
"context"
"fmt"
"strings"
"time"

"k8s.io/apimachinery/pkg/api/errors"
Expand Down Expand Up @@ -386,6 +387,7 @@ func int32Ptr(i int32) *int32 {

func (r *GameReconciler) constructControllerDeploymentForGame(game *streamv1.Game, resourceName string, gatewayConfig *stunnerv1.GatewayConfig, gatewayIP string) (*appsv1.Deployment, error) {
fullpath := fmt.Sprintf("/usr/local/share/cloud-game/assets/games/%s", game.Spec.FileName)
newSelector := fmt.Sprintf("%s-%s", "coordinator", game.Name)

dep := &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Expand All @@ -395,11 +397,11 @@ func (r *GameReconciler) constructControllerDeploymentForGame(game *streamv1.Gam
Spec: appsv1.DeploymentSpec{
Replicas: int32Ptr(1),
Selector: &metav1.LabelSelector{
MatchLabels: map[string]string{"app": "coordinator"},
MatchLabels: map[string]string{"app": newSelector},
},
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{"app": "coordinator"},
Labels: map[string]string{"app": newSelector},
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{
Expand Down Expand Up @@ -443,7 +445,7 @@ func (r *GameReconciler) constructControllerDeploymentForGame(game *streamv1.Gam
{
Name: "gamestorage",
MountPath: fullpath,
SubPath: game.Spec.FileName,
SubPath: game.Name,
},
},
},
Expand Down Expand Up @@ -472,7 +474,7 @@ func (r *GameReconciler) constructControllerDeploymentForGame(game *streamv1.Gam

func (r *GameReconciler) constructWorkerDeploymentForGame(game *streamv1.Game, resourceName string, coordIP string, workerIP string) (*appsv1.Deployment, error) {
fullpath := fmt.Sprintf("/usr/local/share/cloud-game/assets/games/%s", game.Spec.FileName)

newSelector := fmt.Sprintf("%s-%s", "worker", game.Name)
dep := &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: resourceName,
Expand All @@ -481,11 +483,11 @@ func (r *GameReconciler) constructWorkerDeploymentForGame(game *streamv1.Game, r
Spec: appsv1.DeploymentSpec{
Replicas: int32Ptr(2),
Selector: &metav1.LabelSelector{
MatchLabels: map[string]string{"app": "worker"},
MatchLabels: map[string]string{"app": newSelector},
},
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{"app": "worker"},
Labels: map[string]string{"app": newSelector},
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{
Expand Down Expand Up @@ -517,7 +519,7 @@ func (r *GameReconciler) constructWorkerDeploymentForGame(game *streamv1.Game, r
{
Name: "gamestorage",
MountPath: fullpath,
SubPath: game.Spec.FileName,
SubPath: game.Name,
},
},
},
Expand Down Expand Up @@ -548,9 +550,10 @@ func (r *GameReconciler) constructLoadBalancer(game *streamv1.Game, name string,

className := "tailscale"
annotation := fmt.Sprintf("%s-%s", game.Spec.Name, game.Name)
newSelector := fmt.Sprintf("%s-%s", selector, game.Name)
annotations := map[string]string{}
outsidePort := port
if selector == "coordinator" {
if strings.HasPrefix(selector, "coordinator") {
annotations["tailscale.com/hostname"] = annotation
outsidePort = 80
}
Expand All @@ -562,7 +565,7 @@ func (r *GameReconciler) constructLoadBalancer(game *streamv1.Game, name string,
Annotations: annotations,
},
Spec: corev1.ServiceSpec{
Selector: map[string]string{"app": selector},
Selector: map[string]string{"app": newSelector},
LoadBalancerClass: &className,
Ports: []corev1.ServicePort{
{
Expand All @@ -581,13 +584,14 @@ func (r *GameReconciler) constructLoadBalancer(game *streamv1.Game, name string,
return svc, nil
}
func (r *GameReconciler) constructLoadBalancerUDP(game *streamv1.Game, name string, selector string, port int32) (*corev1.Service, error) {
newSelector := fmt.Sprintf("%s-%s", "worker", game.Name)
svc := &corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: game.Namespace,
},
Spec: corev1.ServiceSpec{
Selector: map[string]string{"app": selector},
Selector: map[string]string{"app": newSelector},
Ports: []corev1.ServicePort{
{
Protocol: corev1.ProtocolUDP,
Expand Down