├── images
└── BF.30635756.1.jpg
├── Dockerfile
├── README.md
├── loadbalancer.yaml
├── index.html
├── hello-nginx.conf
├── service.yaml
├── Jenkinsfile
└── game-2048.yaml
/images/BF.30635756.1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndersonJo/jenkins-tutorial/main/images/BF.30635756.1.jpg
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nginx:mainline-alpine
2 | RUN rm /etc/nginx/conf.d/*
3 | ADD hello-nginx.conf /etc/nginx/conf.d/
4 | ADD index.html /usr/share/nginx/html/
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Jenkins Tutorial
3 |
4 | ## Introduction
5 |
6 | I am Anderson
7 |
8 | 1. Hello
9 | 2. World
10 |
11 | 추가적인 개발!
12 | 더 추가적인 개발
13 | 더더더더 추가적인 개발
14 |
--------------------------------------------------------------------------------
/loadbalancer.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: nginx-service-loadbalancer
5 | spec:
6 | type: LoadBalancer
7 | selector:
8 | app: nginx
9 | ports:
10 | - protocol: TCP
11 | port: 80
12 | targetPort: 80
13 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World - Nginx Docker
6 |
7 |
8 |
9 | Hello World - 조창민 Anderson ㅎ라하하하하
10 | 젠킨스 업데이트 후
11 | 젠킨스 하하하하하하하하하~ 123456789
12 | 추가추가추
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/hello-nginx.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 |
4 | root /usr/share/nginx/html;
5 | try_files /index.html =404;
6 |
7 | expires -1;
8 |
9 | sub_filter_once off;
10 | sub_filter 'server_hostname' '';
11 | sub_filter 'server_address' ':';
12 | sub_filter 'server_url' '';
13 | sub_filter 'server_date' '';
14 | sub_filter 'request_id' '';
15 | }
16 |
--------------------------------------------------------------------------------
/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: apps/v1
2 | kind: Deployment
3 | metadata:
4 | name: nginx-deployment
5 | labels:
6 | app: nginx
7 | spec:
8 | replicas: 2
9 | selector:
10 | matchLabels:
11 | app: nginx
12 | template:
13 | metadata:
14 | labels:
15 | app: nginx
16 | spec:
17 | containers:
18 | - name: nginx
19 | image: 998902534284.dkr.ecr.ap-northeast-2.amazonaws.com/jenkins-ecr:IMAGE_VERSION # ECS Container 로 수정
20 | imagePullPolicy: Always
21 | ports:
22 | - containerPort: 80
23 |
--------------------------------------------------------------------------------
/Jenkinsfile:
--------------------------------------------------------------------------------
1 | REGION = 'ap-northeast-2'
2 | EKS_API = 'https://4F9DFA86946EDE8E354DB0CEFF618BAD.yl4.ap-northeast-2.eks.amazonaws.com'
3 | EKS_CLUSTER_NAME='Jenkins-EKS-Cluster'
4 | EKS_NAMESPACE='default'
5 | EKS_JENKINS_CREDENTIAL_ID='kubectl-deploy-credentials'
6 | ECR_PATH = '998902534284.dkr.ecr.ap-northeast-2.amazonaws.com'
7 | ECR_IMAGE = 'jenkins-ecr'
8 | AWS_CREDENTIAL_ID = 'jenkins-aws-credentials'
9 |
10 | node {
11 | stage('Clone Repository'){
12 | checkout scm
13 | }
14 | stage('Docker Build'){
15 | // Docker Build
16 | docker.withRegistry("https://${ECR_PATH}", "ecr:${REGION}:${AWS_CREDENTIAL_ID}"){
17 | image = docker.build("${ECR_PATH}/${ECR_IMAGE}", "--network=host --no-cache .")
18 | }
19 | }
20 | stage('Push to ECR'){
21 | docker.withRegistry("https://${ECR_PATH}", "ecr:${REGION}:${AWS_CREDENTIAL_ID}"){
22 | image.push("v${env.BUILD_NUMBER}")
23 | }
24 | }
25 | stage('CleanUp Images'){
26 | sh"""
27 | docker rmi ${ECR_PATH}/${ECR_IMAGE}:v$BUILD_NUMBER
28 | docker rmi ${ECR_PATH}/${ECR_IMAGE}:latest
29 | """
30 | }
31 | stage('Deploy to K8S'){
32 | withKubeConfig([credentialsId: "kubectl-deploy-credentials",
33 | serverUrl: "${EKS_API}",
34 | clusterName: "${EKS_CLUSTER_NAME}"]){
35 | sh "sed 's/IMAGE_VERSION/v${env.BUILD_ID}/g' service.yaml > output.yaml"
36 | sh "aws eks --region ${REGION} update-kubeconfig --name ${EKS_CLUSTER_NAME}"
37 | sh "kubectl apply -f output.yaml"
38 | sh "rm output.yaml"
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/game-2048.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | apiVersion: v1
3 | kind: Namespace
4 | metadata:
5 | name: game-2048
6 | ---
7 | apiVersion: apps/v1
8 | kind: Deployment
9 | metadata:
10 | namespace: game-2048
11 | name: deployment-2048
12 | spec:
13 | selector:
14 | matchLabels:
15 | app.kubernetes.io/name: app-2048
16 | replicas: 5
17 | template:
18 | metadata:
19 | labels:
20 | app.kubernetes.io/name: app-2048
21 | spec:
22 | containers:
23 | - image: alexwhen/docker-2048
24 | imagePullPolicy: Always
25 | name: app-2048
26 | ports:
27 | - containerPort: 80
28 | ---
29 | apiVersion: v1
30 | kind: Service
31 | metadata:
32 | namespace: game-2048
33 | name: service-2048
34 | spec:
35 | ports:
36 | - port: 80
37 | targetPort: 80
38 | protocol: TCP
39 | type: NodePort
40 | selector:
41 | app.kubernetes.io/name: app-2048
42 | ---
43 | apiVersion: networking.k8s.io/v1
44 | kind: Ingress
45 | metadata:
46 | namespace: game-2048
47 | name: ingress-2048
48 | annotations:
49 | kubernetes.io/ingress.class: alb
50 | # alb.ingress.kubernetes.io/group.name: game-2048
51 | # alb.ingress.kubernetes.io/healthcheck-path: "/health-check"
52 | alb.ingress.kubernetes.io/scheme: internet-facing
53 | alb.ingress.kubernetes.io/target-type: ip
54 | alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTP":8080}]'
55 | # alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
56 | # alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
57 | spec:
58 | defaultBackend:
59 | service:
60 | name: zeppelin-server
61 | port:
62 | number: 80
63 | rules:
64 | - http:
65 | paths:
66 | - path: /*
67 | pathType: ImplementationSpecific
68 | backend:
69 | service:
70 | name: service-2048
71 | port:
72 | number: 80
73 |
--------------------------------------------------------------------------------