4
4
"context"
5
5
"crypto/md5"
6
6
"fmt"
7
- "net/url"
8
7
"time"
9
8
10
9
batchv1 "k8s.io/api/batch/v1"
@@ -22,18 +21,16 @@ type inlineAdapter struct {
22
21
k8sClient kubernetes.Interface
23
22
secureURL string
24
23
namespace string
25
- configMap string
26
24
secret string
27
25
jobTTL int32
28
26
}
29
27
30
- func NewInlineAdapter (secureClient secure.Client , k8sClient kubernetes.Interface , secureURL string , namespace string , configMap string , secret string ) Adapter {
28
+ func NewInlineAdapter (secureClient secure.Client , k8sClient kubernetes.Interface , secureURL string , namespace string , secret string ) Adapter {
31
29
return & inlineAdapter {
32
30
BaseAdapter : BaseAdapter {secureClient : secureClient },
33
31
k8sClient : k8sClient ,
34
32
secureURL : secureURL ,
35
33
namespace : namespace ,
36
- configMap : configMap ,
37
34
secret : secret ,
38
35
jobTTL : int32 (24 * time .Hour .Seconds ()),
39
36
}
@@ -64,7 +61,8 @@ func (i *inlineAdapter) createJobFrom(req harbor.ScanRequest) error {
64
61
65
62
func (i * inlineAdapter ) buildJob (req harbor.ScanRequest ) * batchv1.Job {
66
63
name := jobName (req .Artifact .Repository , req .Artifact .Digest )
67
- repositoryURL , _ := url .Parse (req .Registry .URL )
64
+ user , password := getUserAndPasswordFrom (req .Registry .Authorization )
65
+ userPassword := fmt .Sprintf ("%s:%s" , user , password )
68
66
69
67
return & batchv1.Job {
70
68
ObjectMeta : metav1.ObjectMeta {
@@ -75,36 +73,22 @@ func (i *inlineAdapter) buildJob(req harbor.ScanRequest) *batchv1.Job {
75
73
Template : corev1.PodTemplateSpec {
76
74
Spec : corev1.PodSpec {
77
75
RestartPolicy : "OnFailure" ,
78
- InitContainers : []corev1.Container {
79
- {
80
- Name : "harbor-certificate-dumper" ,
81
- Image : "busybox" ,
82
- Command : []string {
83
- "sh" ,
84
- "-c" ,
85
- fmt .Sprintf ("mkdir -p /etc/docker/certs.d/%s && cp /tmp/ca.crt /etc/docker/certs.d/%s" , repositoryURL .Host , repositoryURL .Host ),
86
- },
87
- VolumeMounts : []corev1.VolumeMount {
88
- {
89
- Name : "docker-certificates" ,
90
- MountPath : "/etc/docker/certs.d" ,
91
- ReadOnly : false ,
92
- },
93
- {
94
- Name : "certificate" ,
95
- MountPath : "/tmp" ,
96
- },
97
- },
98
- },
99
- },
100
76
Containers : []corev1.Container {
101
77
{
102
- Name : "scanner" ,
103
- Image : "sysdiglabs/secure-inline-scan" ,
104
- Command : []string {"/bin/bash" },
78
+ Name : "scanner" ,
79
+ Image : "sysdiglabs/sysdig-inline-scan:harbor-1.0" ,
105
80
Args : []string {
106
- "-c" ,
107
- fmt .Sprintf ("docker login %s -u '$(HARBOR_ROBOTACCOUNT_USER)' -p '$(HARBOR_ROBOTACCOUNT_PASSWORD)' && (/bin/inline_scan.sh analyze -s '%s' -k '$(SYSDIG_SECURE_API_TOKEN)' -d '%s' -P %s || true )" , repositoryURL .Host , i .secureURL , req .Artifact .Digest , getImageFrom (req )),
81
+ "-s" ,
82
+ i .secureURL ,
83
+ "-k" ,
84
+ "$(SYSDIG_SECURE_API_TOKEN)" ,
85
+ "-d" ,
86
+ req .Artifact .Digest ,
87
+ "-P" ,
88
+ "-n" ,
89
+ "-u" ,
90
+ userPassword ,
91
+ getImageFrom (req ),
108
92
},
109
93
Env : []corev1.EnvVar {
110
94
{
@@ -118,68 +102,6 @@ func (i *inlineAdapter) buildJob(req harbor.ScanRequest) *batchv1.Job {
118
102
},
119
103
},
120
104
},
121
- {
122
- Name : "HARBOR_ROBOTACCOUNT_USER" ,
123
- ValueFrom : & corev1.EnvVarSource {
124
- SecretKeyRef : & corev1.SecretKeySelector {
125
- LocalObjectReference : corev1.LocalObjectReference {
126
- Name : i .secret ,
127
- },
128
- Key : "harbor_robot_account_name" ,
129
- },
130
- },
131
- },
132
- {
133
- Name : "HARBOR_ROBOTACCOUNT_PASSWORD" ,
134
- ValueFrom : & corev1.EnvVarSource {
135
- SecretKeyRef : & corev1.SecretKeySelector {
136
- LocalObjectReference : corev1.LocalObjectReference {
137
- Name : i .secret ,
138
- },
139
- Key : "harbor_robot_account_password" ,
140
- },
141
- },
142
- },
143
- },
144
- VolumeMounts : []corev1.VolumeMount {
145
- {
146
- Name : "docker-daemon" ,
147
- MountPath : "/var/run/docker.sock" ,
148
- },
149
- },
150
- },
151
- },
152
- Volumes : []corev1.Volume {
153
- {
154
- Name : "docker-daemon" ,
155
- VolumeSource : corev1.VolumeSource {
156
- HostPath : & corev1.HostPathVolumeSource {
157
- Path : "/var/run/docker.sock" ,
158
- },
159
- },
160
- },
161
- {
162
- Name : "docker-certificates" ,
163
- VolumeSource : corev1.VolumeSource {
164
- HostPath : & corev1.HostPathVolumeSource {
165
- Path : "/etc/docker/certs.d" ,
166
- },
167
- },
168
- },
169
- {
170
- Name : "certificate" ,
171
- VolumeSource : corev1.VolumeSource {
172
- ConfigMap : & corev1.ConfigMapVolumeSource {
173
- LocalObjectReference : corev1.LocalObjectReference {
174
- Name : i .configMap ,
175
- },
176
- Items : []corev1.KeyToPath {
177
- {
178
- Key : "harbor_ca" ,
179
- Path : "ca.crt" ,
180
- },
181
- },
182
- },
183
105
},
184
106
},
185
107
},
0 commit comments