forwarding credentials working on jenkins-staging
This commit is contained in:
parent
a65d82bb43
commit
a9b250519c
9 changed files with 192 additions and 24 deletions
11
README.md
11
README.md
|
@ -85,5 +85,16 @@ The Jenkins server SSHs into the agents to start the agent application. Thus the
|
||||||
|
|
||||||
While this works, it does not fell like the perfect solution. I'm happy to get better ideas on this.
|
While this works, it does not fell like the perfect solution. I'm happy to get better ideas on this.
|
||||||
|
|
||||||
|
## creating basic authentication for reverse proxy
|
||||||
|
|
||||||
|
1. create auth file, based on [ingress-nginx documentation](https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/auth/basic)
|
||||||
|
```bash
|
||||||
|
cd kubernetes/reverse-proxy
|
||||||
|
htpasswd -c auth <username>
|
||||||
|
# enter password at prompt
|
||||||
|
# add more users as required
|
||||||
|
kubectl create secret generic proxy-auth --from-file=auth --namespace=jenkins
|
||||||
|
```
|
||||||
|
|
||||||
# License
|
# License
|
||||||
This project is licensed unter the "Apache 2.0 with LLVM Exception" license. See [LICENSE](LICENSE) for details.
|
This project is licensed unter the "Apache 2.0 with LLVM Exception" license. See [LICENSE](LICENSE) for details.
|
|
@ -27,6 +27,12 @@ gcloud compute disks create jenkins-home \
|
||||||
--type=pd-standard \
|
--type=pd-standard \
|
||||||
--zone=${GCP_ZONE} \
|
--zone=${GCP_ZONE} \
|
||||||
|
|
||||||
|
gcloud compute disks create jenkins-home-staging \
|
||||||
|
--description="storage for jenkins master (staging)" \
|
||||||
|
--size=20GB \
|
||||||
|
--type=pd-standard \
|
||||||
|
--zone=${GCP_ZONE} \
|
||||||
|
|
||||||
gcloud compute disks create results \
|
gcloud compute disks create results \
|
||||||
--description="storage build results" \
|
--description="storage build results" \
|
||||||
--size=20GB \
|
--size=20GB \
|
||||||
|
|
62
kubernetes/jenkins-staging/Deployment.yaml
Normal file
62
kubernetes/jenkins-staging/Deployment.yaml
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# Copyright 2019 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://llvm.org/LICENSE.txt
|
||||||
|
#
|
||||||
|
# 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: extensions/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: jenkins-staging
|
||||||
|
namespace: jenkins
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: master-staging
|
||||||
|
spec:
|
||||||
|
hostname: jenkins-master-staging
|
||||||
|
containers:
|
||||||
|
- name: master-staging
|
||||||
|
image: gcr.io/llvm-windows-development/jenkins-master
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
- containerPort: 50000
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /login
|
||||||
|
port: 8080
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 2
|
||||||
|
failureThreshold: 5
|
||||||
|
env:
|
||||||
|
- name: JAVA_OPTS
|
||||||
|
value: '-Xmx1400m'
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /var/jenkins_home
|
||||||
|
name: jenkins-home-staging
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1500Mi
|
||||||
|
requests:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1500Mi
|
||||||
|
volumes:
|
||||||
|
- name: jenkins-home-staging
|
||||||
|
gcePersistentDisk:
|
||||||
|
pdName: jenkins-home-staging
|
||||||
|
fsType: ext4
|
||||||
|
nodeSelector:
|
||||||
|
cloud.google.com/gke-nodepool: services
|
||||||
|
---
|
29
kubernetes/jenkins-staging/PersistentVolume.yaml
Normal file
29
kubernetes/jenkins-staging/PersistentVolume.yaml
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# Copyright 2019 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://llvm.org/LICENSE.txt
|
||||||
|
#
|
||||||
|
# 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: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: jenkins-home-staging
|
||||||
|
labels:
|
||||||
|
failure-domain.beta.kubernetes.io/zone: us-central1-a
|
||||||
|
spec:
|
||||||
|
capacity:
|
||||||
|
storage: 20Gi
|
||||||
|
volumeMode: Filesystem
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
gcePersistentDisk:
|
||||||
|
pdName: jenkins-home-staging
|
||||||
|
fsType: ext4
|
30
kubernetes/jenkins-staging/Services.yaml
Normal file
30
kubernetes/jenkins-staging/Services.yaml
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# Copyright 2019 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://llvm.org/LICENSE.txt
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: jenkins-ui-staging
|
||||||
|
namespace: jenkins
|
||||||
|
spec:
|
||||||
|
type: NodePort
|
||||||
|
selector:
|
||||||
|
app: master-staging
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
name: ui
|
||||||
|
---
|
22
kubernetes/jenkins-staging/kustomization.yaml
Normal file
22
kubernetes/jenkins-staging/kustomization.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Copyright 2019 Google LLC
|
||||||
|
#
|
||||||
|
# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://llvm.org/LICENSE.txt
|
||||||
|
#
|
||||||
|
# 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: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: jenkins
|
||||||
|
resources:
|
||||||
|
- PersistentVolume.yaml
|
||||||
|
- Deployment.yaml
|
||||||
|
- Services.yaml
|
||||||
|
|
|
@ -132,18 +132,6 @@ spec:
|
||||||
targetPort: 50000
|
targetPort: 50000
|
||||||
name: agent
|
name: agent
|
||||||
---
|
---
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: jenkins
|
|
||||||
namespace: jenkins
|
|
||||||
spec:
|
|
||||||
# tls:
|
|
||||||
# - secretName: tls
|
|
||||||
backend:
|
|
||||||
serviceName: jenkins-ui
|
|
||||||
servicePort: 8080
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
|
|
1
kubernetes/reverse-proxy/.gitignore
vendored
Normal file
1
kubernetes/reverse-proxy/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
auth
|
|
@ -49,7 +49,37 @@ spec:
|
||||||
apiVersion: extensions/v1beta1
|
apiVersion: extensions/v1beta1
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
name: nginx-ingress-staging
|
name: nginx-ingress-staging-jenkins
|
||||||
|
namespace: jenkins
|
||||||
|
annotations:
|
||||||
|
# static IP assignment not working. Not sure why.
|
||||||
|
kubernetes.io/ingress.global-static-ip-name: "web-static-ip"
|
||||||
|
kubernetes.io/ingress.class: "nginx"
|
||||||
|
cert-manager.io/issuer: "letsencrypt-staging"
|
||||||
|
nginx.ingress.kubernetes.io/auth-type: basic
|
||||||
|
nginx.ingress.kubernetes.io/auth-secret: proxy-auth
|
||||||
|
nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - LLVM pre-merge checks"
|
||||||
|
nginx.ingress.kubernetes.io/configuration-snippet: |
|
||||||
|
proxy_set_header Authorization $remote_user;
|
||||||
|
spec:
|
||||||
|
tls:
|
||||||
|
- secretName: jenkins-staging-tls
|
||||||
|
hosts:
|
||||||
|
- jenkins.staging.llvm-merge-guard.org
|
||||||
|
|
||||||
|
rules:
|
||||||
|
- host: jenkins.staging.llvm-merge-guard.org
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- backend:
|
||||||
|
serviceName: jenkins-ui-staging
|
||||||
|
servicePort: 8080
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: nginx-ingress-staging-results
|
||||||
namespace: jenkins
|
namespace: jenkins
|
||||||
annotations:
|
annotations:
|
||||||
# static IP assignment not working. Not sure why.
|
# static IP assignment not working. Not sure why.
|
||||||
|
@ -61,22 +91,11 @@ spec:
|
||||||
- secretName: results-staging-tls
|
- secretName: results-staging-tls
|
||||||
hosts:
|
hosts:
|
||||||
- results.staging.llvm-merge-guard.org
|
- results.staging.llvm-merge-guard.org
|
||||||
- secretName: results-staging-tls
|
|
||||||
hosts:
|
|
||||||
- jenkins.staging.llvm-merge-guard.org
|
|
||||||
|
|
||||||
rules:
|
rules:
|
||||||
- host: jenkins.staging.llvm-merge-guard.org
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- backend:
|
|
||||||
serviceName: jenkins-ui
|
|
||||||
servicePort: 8080
|
|
||||||
- host: results.staging.llvm-merge-guard.org
|
- host: results.staging.llvm-merge-guard.org
|
||||||
http:
|
http:
|
||||||
paths:
|
paths:
|
||||||
- backend:
|
- backend:
|
||||||
serviceName: nginx-results
|
serviceName: nginx-results
|
||||||
servicePort: 80
|
servicePort: 80
|
||||||
|
|
||||||
---
|
---
|
Loading…
Reference in a new issue