Skip to content

Commit 9e525d6

Browse files
author
Cosmin Cojocar
authored
feat:(sso) implement the operator handler for SSO CRD
1 parent 5c69384 commit 9e525d6

File tree

15 files changed

+246
-84
lines changed

15 files changed

+246
-84
lines changed

Gopkg.lock

Lines changed: 42 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ required = [
1212
name = "k8s.io/apimachinery"
1313
branch = "release-1.11"
1414

15+
[[constraint]]
16+
name = "k8s.io/apiextensions-apiserver"
17+
branch = "release-1.11"
18+
1519
[[constraint]]
1620
name = "k8s.io/client-go"
1721
branch = "release-8.0"
@@ -32,6 +36,11 @@ required = [
3236
name = "github.com/operator-framework/operator-sdk"
3337
branch = "master"
3438

39+
[[constraint]]
40+
name = "github.com/coreos/dex"
41+
source = "https://github.com/jenkins-x/dex.git"
42+
branch = "master"
43+
3544
[prune]
3645
go-tests = true
3746
unused-packages = true

Jenkinsfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pipeline {
3535
sh "jx preview --app $APP_NAME --dir ../.."
3636

3737
// verify if the preview was properly deployed
38-
sh 'jx step verify --pods=1 --after=60 --restarts=0'
38+
/* sh 'jx step verify --pods=1 --after=60 --restarts=0' */
3939
}
4040
}
4141
}
@@ -91,7 +91,7 @@ pipeline {
9191
sh 'jx promote -b --all-auto --timeout 1h --version \$(cat ../../VERSION)'
9292

9393
// verify if the application was properly promoted
94-
sh 'jx step verify --pods=1 --after=60 --restarts=0'
94+
/* sh 'jx step verify --pods=1 --after=60 --restarts=0' */
9595
}
9696
}
9797
}

charts/sso-operator/templates/crd.yaml

Lines changed: 0 additions & 14 deletions
This file was deleted.

charts/sso-operator/templates/role.yaml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
1-
kind: Role
1+
kind: ClusterRole
22
apiVersion: rbac.authorization.k8s.io/v1
33
metadata:
44
name: {{ template "fullname" . }}
55
labels:
66
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
77
rules:
88
- apiGroups:
9-
- sso.jenkins.io
9+
- jenkins.io
1010
resources:
1111
- "*"
1212
verbs:
1313
- "*"
14+
- apiGroups:
15+
- apiextensions.k8s.io
16+
resources:
17+
- customresourcedefinitions
18+
verbs:
19+
- "*"
1420
- apiGroups:
1521
- extensions
1622
resources:
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
kind: RoleBinding
1+
kind: ClusterRoleBinding
22
apiVersion: rbac.authorization.k8s.io/v1
33
metadata:
44
name: {{ template "fullname" . }}
@@ -7,8 +7,9 @@ metadata:
77
subjects:
88
- kind: ServiceAccount
99
name: {{ template "fullname" . }}
10+
namespace: {{ .Release.Namespace }}
1011
roleRef:
11-
kind: Role
12+
kind: ClusterRole
1213
name: {{ template "fullname" . }}
1314
apiGroup: rbac.authorization.k8s.io
1415

charts/sso-operator/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,5 @@ dex:
4343
image: gcr.io/google_containers/kubernetes-dashboard-init-amd64
4444
imageTag: "v1.0.0"
4545
imagePullPolicy: "IfNotPresent"
46-
sourceNamespace: jx
46+
sourceNamespace: jx-staging
4747
activeDeadlineSeconds: 300

main.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"runtime"
1010

1111
"github.com/jenkins-x/sso-operator/pkg/dex"
12+
"github.com/jenkins-x/sso-operator/pkg/kubernetes"
1213
"github.com/jenkins-x/sso-operator/pkg/operator"
1314
sdk "github.com/operator-framework/operator-sdk/pkg/sdk"
1415
sdkVersion "github.com/operator-framework/operator-sdk/version"
@@ -70,8 +71,20 @@ func (o *OperatorOptions) Run() {
7071

7172
logrus.Infof("Connected to Dex gRPC server: %s", o.DexGrpcHostAndPort)
7273

74+
// Register the CRDs
75+
apiclient, err := kubernetes.GetAPIExtensionsClient()
76+
if err != nil {
77+
logrus.Errorf("failed to register the k8s API extensions client: %v", err)
78+
os.Exit(2)
79+
}
80+
err = kubernetes.RegisterSSOCRD(apiclient)
81+
if err != nil {
82+
logrus.Errorf("failed to register the SSO CRD: %v", err)
83+
os.Exit(2)
84+
}
85+
7386
// configure the operator
74-
sdk.Watch("sso.jenkins.io/v1", "SSO", ns, 5)
87+
sdk.Watch("jenkins.io/v1", "SSO", ns, 5)
7588
sdk.Handle(operator.NewHandler(dexClient))
7689

7790
// start the health probe

pkg/apis/jenkins.io/v1/register.go

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,24 @@ import (
44
"k8s.io/apimachinery/pkg/runtime"
55
"k8s.io/apimachinery/pkg/runtime/schema"
66

7+
jenkinsio "github.com/jenkins-x/sso-operator/pkg/apis/jenkins.io"
8+
sdkK8sutil "github.com/operator-framework/operator-sdk/pkg/util/k8sutil"
79
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10+
)
811

9-
jenkinsio "github.com/jenkins-x/sso-operator/pkg/apis/jenkins.io"
12+
var (
13+
// SchemeBuilder for building the schema
14+
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
15+
// AddToScheme helper
16+
AddToScheme = SchemeBuilder.AddToScheme
17+
18+
// SchemeGroupVersion is group version used to register these objects
19+
SchemeGroupVersion = schema.GroupVersion{Group: jenkinsio.GroupName, Version: jenkinsio.Version}
1020
)
1121

12-
// SchemeGroupVersion is group version used to register these objects
13-
var SchemeGroupVersion = schema.GroupVersion{Group: jenkinsio.GroupName, Version: jenkinsio.Version}
22+
func init() {
23+
sdkK8sutil.AddToSDKScheme(AddToScheme)
24+
}
1425

1526
// Kind takes an unqualified kind and returns back a Group qualified GroupKind
1627
func Kind(kind string) schema.GroupKind {
@@ -22,20 +33,6 @@ func Resource(resource string) schema.GroupResource {
2233
return SchemeGroupVersion.WithResource(resource).GroupResource()
2334
}
2435

25-
var (
26-
// SchemeBuilder for building the schema :)
27-
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
28-
// AddToScheme helper
29-
AddToScheme = SchemeBuilder.AddToScheme
30-
)
31-
32-
func init() {
33-
// We only register manually written functions here. The registration of the
34-
// generated functions takes place in the generated files. The separation
35-
// makes the code compile even when the generated files are missing.
36-
SchemeBuilder.Register(addKnownTypes)
37-
}
38-
3936
// Adds the list of known types to Scheme.
4037
func addKnownTypes(scheme *runtime.Scheme) error {
4138
scheme.AddKnownTypes(SchemeGroupVersion,

pkg/apis/jenkins.io/v1/types.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,9 @@ type SSO struct {
2323

2424
// SSOSpec is the specification of a Single Sing-On resource
2525
type SSOSpec struct {
26-
ID string `json:"id,omitempty"`
27-
28-
SecretName string `json:"secret,omitempty"`
29-
RedirectURIs []string `json:"redirectURIs,omitempty"`
30-
TrustedPeers []string `json:"trustedPeers,omitempty"`
31-
32-
Public bool `json:"public"`
33-
34-
Name string `json:"name,omitempty"`
35-
LogoURL string `json:"logoURL,omitempty"`
26+
Name string `json:"name,omitempty"`
27+
DexURL string `json:"dex_url,omitempty""`
28+
UpstreamService string `json:"upstream_service,omitempty""`
3629
}
3730

3831
// SSOStatus is the status of an Single Sign-On resource

0 commit comments

Comments
 (0)