{"id":6777,"date":"2022-10-25T13:19:39","date_gmt":"2022-10-25T04:19:39","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6777"},"modified":"2022-12-03T16:49:01","modified_gmt":"2022-12-03T07:49:01","slug":"kubernetes-jenkins-%ec%84%a4%ec%b9%98","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6777","title":{"rendered":"Kubernetes &#8211; Jenkins \uc124\uce58"},"content":{"rendered":"<h1>Kubernetes &#8211; Jenkins \uc124\uce58<\/h1>\n<p>\ubb38\uc11c\ub97c \ub2e8\uc21c\ud654\ud558\uae30 \uc704\ud574 hostPath \uc800\uc7a5\uc18c\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4.<br \/>\n\uc6b4\uc601\ud658\uacbd\uc5d0\uc11c\ub294 NFS \ub610\ub294 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uc800\uc7a5\uc18c\ub97c \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>node \uc11c\ubc84\uc5d0 <code>\/jenkins-data<\/code> \ud3f4\ub354\uac00 \uc788\uc5b4\uc57c \ud558\uace0,<br \/>\n\uad8c\ud55c\uc740 0777 \uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h2>\uc800\uc7a5\uc18c \uc0dd\uc131<\/h2>\n<pre><code class=\"language-bash\"># node \uc11c\ubc84\uc5d0\uc11c \uc2e4\ud589\nsudo mkdir \/jenkins-data\nsudo chmod 777 \/jenkins-data<\/code><\/pre>\n<h2>ServiceAccount \uc0dd\uc131<\/h2>\n<p>jenkins \ub294 \ud558\ub294 \uc77c\uc774 \ub9ce\uc740 \ub9cc\ud07c \ubd80\uc5ec\ud574\uc57c\ud560 \uad8c\ud55c\ub3c4 \ub9ce\ub2e4.<\/p>\n<pre><code class=\"language-bash\">kubectl create namespace jenkins<\/code><\/pre>\n<pre><code class=\"language-bash\"># https:\/\/raw.githubusercontent.com\/jenkins-infra\/jenkins.io\/master\/content\/doc\/tutorials\/kubernetes\/installing-jenkins-on-kubernetes\/jenkins-sa.yaml\nvi jenkins-sa.yaml\n---------------------------\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: jenkins\n  namespace: jenkins\n---\napiVersion: rbac.authorization.k8s.io\/v1\nkind: ClusterRole\nmetadata:\n  annotations:\n    rbac.authorization.kubernetes.io\/autoupdate: &quot;true&quot;\n  labels:\n    kubernetes.io\/bootstrapping: rbac-defaults\n  name: jenkins\nrules:\n- apiGroups:\n  - &#039;*&#039;\n  resources:\n  - statefulsets\n  - services\n  - replicationcontrollers\n  - replicasets\n  - podtemplates\n  - podsecuritypolicies\n  - pods\n  - pods\/log\n  - pods\/exec\n  - podpreset\n  - poddisruptionbudget\n  - persistentvolumes\n  - persistentvolumeclaims\n  - jobs\n  - endpoints\n  - deployments\n  - deployments\/scale\n  - daemonsets\n  - cronjobs\n  - configmaps\n  - namespaces\n  - events\n  - secrets\n  verbs:\n  - create\n  - get\n  - watch\n  - delete\n  - list\n  - patch\n  - update\n- apiGroups:\n  - &quot;&quot;\n  resources:\n  - nodes\n  verbs:\n  - get\n  - list\n  - watch\n  - update\n---\napiVersion: rbac.authorization.k8s.io\/v1\nkind: ClusterRoleBinding\nmetadata:\n  annotations:\n    rbac.authorization.kubernetes.io\/autoupdate: &quot;true&quot;\n  labels:\n    kubernetes.io\/bootstrapping: rbac-defaults\n  name: jenkins\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: jenkins\nsubjects:\n- apiGroup: rbac.authorization.k8s.io\n  kind: Group\n  name: system:serviceaccounts:jenkins\n---------------------------<\/code><\/pre>\n<pre><code class=\"language-bash\">kubectl apply -f jenkins-sa.yaml<\/code><\/pre>\n<h2>jenkins \uc124\uce58<\/h2>\n<pre><code class=\"language-bash\">vi jenkins.yaml\n---------------------------\napiVersion: apps\/v1\nkind: StatefulSet\nmetadata:\n  name: jenkins\n  namespace: jenkins\nspec:\n  serviceName: jenkins\n  replicas: 1\n  selector:\n    matchLabels:\n      app: jenkins\n  template:\n    metadata:\n      labels:\n        app: jenkins\n    spec:\n      serviceAccountName: jenkins\n      containers:\n      - name: jenkins\n        image: jenkins\/jenkins:lts\n        ports:\n          - name: http-port\n            containerPort: 8080\n        volumeMounts:\n          - name: jenkins-vol\n            mountPath: \/var\/jenkins_home\n      volumes:\n        - name: jenkins-vol\n          hostPath:\n            path: \/jenkins-data\n            type: Directory\n\n---\n\napiVersion: v1\nkind: Service\nmetadata:\n  name: jenkins\n  namespace: jenkins\nspec:\n  type: NodePort\n  ports:\n    - nodePort: 30088\n      port: 8080\n      targetPort: 8080\n  selector:\n    app: jenkins\n---------------------------<\/code><\/pre>\n<pre><code class=\"language-bash\">kubectl apply -f jenkins.yaml<\/code><\/pre>\n<p>http:\/\/&lt;node \uc11c\ubc84 \uc544\uc774\ud53c&gt;:30088\/ \uc5d0 \uc811\uc18d\ud558\uba74 \uc820\ud0a8\uc2a4\ub97c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -n jenkins\nkubectl exec -it -n jenkins jenkins-0 -- cat \/var\/jenkins_home\/secrets\/initialAdminPassword<\/code><\/pre>\n<h2>\uc624\ub958\ud574\uacb0<\/h2>\n<blockquote>\n<p>This Jenkins instance appears to be offline.<\/p>\n<p>\ub79c\ub364\ud558\uac8c \uc704 \uc624\ub958\uac00 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n<\/blockquote>\n<p>\uc800\uc808\ub85c \uace0\uccd0\uc9c0\uae30\ub3c4 \ud558\uace0 \uc548\uace0\uccd0\uc9c0\uae30\ub3c4 \ud55c\ub2e4.<br \/>\n\uadf8\ub7f4 \ub550 <code>dnsPolicy: Default<\/code> \ub97c \ud574\uc8fc\uba74 \uace0\uccd0\uc9c4\ub2e4.<\/p>\n<pre><code class=\"language-bash\">kubectl edit StatefulSet jenkins -n jenkins\n---------------------------\n    spec:\n      containers:\n      - image: jenkins\/jenkins:lts\n        imagePullPolicy: IfNotPresent\n        name: jenkins\n        ports:\n        - containerPort: 8080\n          name: http-port\n          protocol: TCP\n        resources: {}\n        terminationMessagePath: \/dev\/termination-log\n        terminationMessagePolicy: File\n        volumeMounts:\n        - mountPath: \/var\/jenkins_home\n          name: jenkins-vol\n      dnsPolicy: Default                                   # \uc5ec\uae30\n---------------------------<\/code><\/pre>\n<h2>jenkins \uc0ad\uc81c<\/h2>\n<pre><code class=\"language-bash\">kubectl delete -f jenkins.yaml\nkubectl delete -f jenkins-sa.yaml<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes &#8211; Jenkins \uc124\uce58 \ubb38\uc11c\ub97c \ub2e8\uc21c\ud654\ud558\uae30 \uc704\ud574 hostPath \uc800\uc7a5\uc18c\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4. \uc6b4\uc601\ud658\uacbd\uc5d0\uc11c\ub294 NFS \ub610\ub294 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uc800\uc7a5\uc18c\ub97c \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4. node \uc11c\ubc84\uc5d0 \/jenkins-data \ud3f4\ub354\uac00 \uc788\uc5b4\uc57c \ud558\uace0, \uad8c\ud55c\uc740 0777 \uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc800\uc7a5\uc18c \uc0dd\uc131 # node \uc11c\ubc84\uc5d0\uc11c \uc2e4\ud589 sudo mkdir \/jenkins-data sudo chmod 777 \/jenkins-data ServiceAccount \uc0dd\uc131 jenkins \ub294 \ud558\ub294 \uc77c\uc774 \ub9ce\uc740 \ub9cc\ud07c \ubd80\uc5ec\ud574\uc57c\ud560 \uad8c\ud55c\ub3c4 \ub9ce\ub2e4. kubectl create namespace\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6777\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-6777","post","type-post","status-publish","format-standard","hentry","category-devops"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/6777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6777"}],"version-history":[{"count":6,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/6777\/revisions"}],"predecessor-version":[{"id":7117,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/6777\/revisions\/7117"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}