{"id":845,"date":"2020-08-28T22:28:50","date_gmt":"2020-08-28T13:28:50","guid":{"rendered":"http:\/\/blog.kanotype.net\/?p=845"},"modified":"2020-08-28T22:35:55","modified_gmt":"2020-08-28T13:35:55","slug":"kubernetes%e3%81%abjenkins%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/blog.kanotype.net\/?p=845","title":{"rendered":"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Kubernetes\u4e0a\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002\u524d\u56de\u300c<a rel=\"noreferrer noopener\" href=\"https:\/\/blog.kanotype.net\/?p=839\" data-type=\"URL\" data-id=\"https:\/\/blog.kanotype.net\/?p=839\" target=\"_blank\">VirtualBox\u3067Kubernetes\u74b0\u5883\u69cb\u7bc9<\/a>\u300d\u306e\u5fdc\u7528\u7de8\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306e\u76ee\u7684\u306fKubernetes\u4e0a\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3001\u4ee5\u4e0b\u306e\u4ed5\u69d8\u3092\u9054\u6210\u3059\u308b\u3053\u3068\u3067\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Jenkins\u306e\u30b8\u30e7\u30d6\u3067Docker\u304c\u4f7f\u3048\u308b\u3053\u3068<\/li><li>Jenkins\u306e\u30c7\u30fc\u30bf\u3092\u7c21\u5358\u306b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3067\u304d\u308b\u3053\u3068 (VirtualBox\u306e\u4eee\u60f3HDD\u3092\u5229\u7528)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u6700\u521d\u306b\u3001Jenkins\u306e\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308bVolume\u306e\u305f\u3081\u306e\u4eee\u60f3HDD\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002VirtualBox\u3067\u4ee5\u4e0b\u306e\u4eee\u60f3HDD\u30923\u500b\u4f5c\u6210\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Jenkins Home\u7528 : 32 GiB<\/li><li>Jenkins Workspace\u7528 : 128 GiB<\/li><li>Jenkins Docker\u8a8d\u8a3c\u66f8\u7528 : 1 GiB<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u3057\u3066\u3053\u306e\u4eee\u60f3HDD\u3092Jenkins\u3092\u904b\u7528\u3059\u308bKubernetes\u306eWorker Node\u306b\u30de\u30a6\u30f3\u30c8\u3057\u3001\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3057\u3066\u304a\u304d\u307e\u3059\u3002(\/etc\/fstab\u3067\u518d\u8d77\u52d5\u3057\u3066\u3082\u81ea\u52d5\u3067\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u304a\u304f\u306e\u3082\u5fd8\u308c\u305a\u306b)<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\/mnt\/volumes\/jenkins-home<\/li><li>\/mnt\/volumes\/jenkins-workspace<\/li><li>\/mnt\/volumes\/jenkins-docker-certs<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3067\u306f\u672c\u683c\u7684\u306bKubernetes\u306e\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002\u307e\u305a\u306fPersistentVolume\u3092\u4f5c\u308a\u307e\u3059\u3002PersistentVolume\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308bWorker Node\u306e\u540d\u524d\u306f\u300ck8s-node-0\u300d\u3068\u3044\u3046\u524d\u63d0\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: jenkins-home-pv\n  labels:\n    volume-name: jenkins-home\nspec:\n  capacity:\n    storage: 32Gi\n  volumeMode: Filesystem\n  accessModes:\n  - ReadWriteOnce\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: local-storage\n  local:\n    path: \/mnt\/volumes\/jenkins-home\n  nodeAffinity:\n    required:\n      nodeSelectorTerms:\n      - matchExpressions:\n        - key: kubernetes.io\/hostname\n          operator: In\n          values:\n          - k8s-node-0\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: jenkins-workspace-pv\n  labels:\n    volume-name: jenkins-workspace\nspec:\n  capacity:\n    storage: 128Gi\n  volumeMode: Filesystem\n  accessModes:\n  - ReadWriteOnce\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: local-storage\n  local:\n    path: \/mnt\/volumes\/jenkins-workspace\n  nodeAffinity:\n    required:\n      nodeSelectorTerms:\n      - matchExpressions:\n        - key: kubernetes.io\/hostname\n          operator: In\n          values:\n          - k8s-node-0\n---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: jenkins-docker-certs-pv\n  labels:\n    volume-name: jenkins-docker-certs\nspec:\n  capacity:\n    storage: 1Gi\n  volumeMode: Filesystem\n  accessModes:\n  - ReadWriteOnce\n  persistentVolumeReclaimPolicy: Retain\n  storageClassName: local-storage\n  local:\n    path: \/mnt\/volumes\/jenkins-docker-certs\n  nodeAffinity:\n    required:\n      nodeSelectorTerms:\n      - matchExpressions:\n        - key: kubernetes.io\/hostname\n          operator: In\n          values:\n          - k8s-node-0<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8a18\u3092jenkins-volume.yaml\u306b\u4fdd\u5b58\u3057\u3001Kubernetes\u306b\u53cd\u6620\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f jenkins-volume.yaml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3067Jenkins\u306e\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306ePersistentVolume\u304c\u4f5c\u3089\u308c\u307e\u3057\u305f\u3002\u6b21\u306bJenkins\u672c\u4f53\u3068Docker\u5b9f\u884c\u306e\u305f\u3081\u306e\u30b3\u30f3\u30c6\u30ca\u304c\u5165\u3063\u305fPod\u3092\u4f5c\u308a\u307e\u3059\u3002Jenkins\u306f\u518d\u8d77\u52d5\u5f8c\u3082\u5404\u7a2e\u8a2d\u5b9a\u3084\u30c7\u30fc\u30bf\u3092\u4fdd\u6301\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u306e\u3067StatefulSet\u3067\u4f5c\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apiVersion: v1\nkind: Namespace\nmetadata:\n  name: jenkins\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: jenkins\n  namespace: jenkins\n  labels:\n    app: jenkins\nspec:\n  type: NodePort\n  ports:\n  - nodePort: 30000\n    port: 8080\n    targetPort: 8080\n    protocol: TCP\n    name: http\n  selector:\n    app: jenkins\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      securityContext:\n        fsGroup: 1000\n      containers:\n      - name: jenkins-blueocean\n        image: jenkinsci\/blueocean\n        ports:\n        - containerPort: 8080\n          name: http\n        - containerPort: 50000\n          name: inbound\n        env:\n        - name: DOCKER_HOST\n          value: \"tcp:\/\/localhost:2376\"\n        - name: DOCKER_CERT_PATH\n          value: \"\/certs\/client\"\n        - name: DOCKER_TLS_VERIFY\n          value: \"1\"\n        - name: JENKINS_OPTS\n          value: \"--prefix=\/jenkins\"\n        volumeMounts:\n        - name: jenkins-home\n          mountPath: \/var\/jenkins_home\n        - name: jenkins-workspace\n          mountPath: \/var\/jenkins_home\/workspace\n        - name: jenkins-docker-certs\n          mountPath: \/certs\/client\n          readOnly: true\n        livenessProbe:\n          httpGet:\n            path: \/jenkins\/login\n            port: 8080\n          initialDelaySeconds: 300 \n          periodSeconds: 60\n          timeoutSeconds: 30\n      - name: jenkins-docker\n        image: docker:dind\n        securityContext:\n          privileged: true\n        ports:\n        - containerPort: 2376\n          name: docker-daemon\n        env:\n        - name: DOCKER_TLS_CERTDIR\n          value: \"\/certs\"\n        volumeMounts:\n        - name: jenkins-home\n          mountPath: \/var\/jenkins_home\n        - name: jenkins-workspace\n          mountPath: \/var\/jenkins_home\/workspace\n        - name: jenkins-docker-certs\n          mountPath: \/certs\/client\n  volumeClaimTemplates:\n  - metadata:\n      name: jenkins-home\n    spec:\n      selector:\n        matchLabels:\n          volume-name: jenkins-home\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: \"local-storage\"\n      resources:\n        requests:\n          storage: 32Gi\n  - metadata:\n      name: jenkins-workspace\n    spec:\n      selector:\n        matchLabels:\n          volume-name: jenkins-workspace\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: \"local-storage\"\n      resources:\n        requests:\n          storage: 128Gi\n  - metadata:\n      name: jenkins-docker-certs\n    spec:\n      selector:\n        matchLabels:\n          volume-name: jenkins-docker-certs\n      accessModes: [ \"ReadWriteOnce\" ]\n      storageClassName: \"local-storage\"\n      resources:\n        requests:\n          storage: 1Gi\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8a18\u3092jenkins.yaml\u3067\u4fdd\u5b58\u3057\u3001Kubernetes\u306b\u53cd\u6620\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f jenkins.yaml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7279\u306b\u554f\u984c\u304c\u8d77\u304d\u3066\u306a\u3044\u5834\u5408\u3001\u3057\u3070\u3089\u304f\u3059\u308b\u3068Jenkins\u306ePod\u304c\u8d77\u52d5\u3057\u307e\u3059\u3002Jenkins\u306e\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u3001Jenkins\u306e\u521d\u671f\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306b\u5fc5\u8981\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl logs jenkins-0  jenkins-blueocean<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jenkins\u306eURL\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u521d\u671f\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>http:\/\/[Worker Node\u306e\u5916\u90e8IP]:30000\/jenkins<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u308c\u3067Kubernetes\u4e0a\u306bJenkins\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3067\u304d\u307e\u3057\u305f\u3002Reverse Proxy\u3092\u7acb\u3066\u3066Kubernetes\u306e\u30ce\u30fc\u30c9IP\u3092\u96a0\u853d\u3059\u308b\u3068\u3088\u308a\u4f7f\u3044\u3084\u3059\u304f\u306a\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jenkins\u306e\u30c7\u30fc\u30bf\u306fVirtualBox\u306e\u4eee\u60f3HDD\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u30b7\u30f3\u30d7\u30eb\u306bHDD\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u3067\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u53d6\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306e\u624b\u9806\u306f<a rel=\"noreferrer noopener\" href=\"https:\/\/www.jenkins.io\/doc\/book\/installing\/#docker\" target=\"_blank\">Jenkins\u3092Docker\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u624b\u9806<\/a>\u3092\u53c2\u8003\u306bKubernetes\u3067\u52d5\u304f\u3088\u3046\u4fee\u6b63\u3092\u52a0\u3048\u305f\u3082\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[\u304a\u307e\u3051]<br>\u4eca\u56de\u4f7f\u3063\u305fjenkins.yaml\u306e\u7c21\u5358\u306a\u89e3\u8aac\u3067\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Jenkins\u306eService\u3092\u751f\u6210<ul><li>NodePort\u30bf\u30a4\u30d7\u3002\u30ce\u30fc\u30c9IP:30000\u3092JenkinsPod\u306e8080\u30dd\u30fc\u30c8\u306b\u8ee2\u9001<\/li><\/ul><\/li><li>Jenkins\u306ePod\u3092\u751f\u6210<ul><li>Jenkins\u304cPersistentVolume\u306b\u30c7\u30fc\u30bf\u3092\u66f8\u304d\u8fbc\u3081\u308b\u3088\u3046\u306bfsGroup\u30921000\u306b\u8a2d\u5b9a<\/li><li>Jenkins\u672c\u4f53\u306e\u30b3\u30f3\u30c6\u30ca\u751f\u6210<ul><li>\u30a2\u30af\u30bb\u30b9URL\u306b\/jenkins\/\u3092\u4ed8\u3051\u308b<\/li><li>\u5404\u7a2ePersistentVolume\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b<\/li><li>Docker In Docker\u306e\u30db\u30b9\u30c8\u60c5\u5831\u3092\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u8a2d\u5b9a<\/li><li>LivenessProbe\u3067\u3082\u3057Jenkins\u304c\u843d\u3061\u305f\u3089\u81ea\u52d5\u3067\u518d\u8d77\u52d5\u3059\u308b\u3088\u3046\u306b\u3002\u521d\u56de\u8d77\u52d5\u306e5\u5206\u5f8c\u304b\u30891\u5206\u9593\u9694\u3067\u30c1\u30a7\u30c3\u30af\u3002<\/li><li>LocalPersistentVolume\u3092\u4f7f\u3046\u3088\u3046\u306bVolumeClaim\u8a2d\u5b9a<\/li><\/ul><\/li><li>Docker In Docker\u30b3\u30f3\u30c6\u30ca\u751f\u6210<ul><li>\u5404\u7a2ePersistentVolume\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b<\/li><li>LocalPersistentVolume\u3092\u4f7f\u3046\u3088\u3046\u306bVolumeClaim\u8a2d\u5b9a<\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes\u4e0a\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002\u524d\u56de\u300cVirtualBox\u3067Kubernetes\u74b0\u5883\u69cb\u7bc9\u300d\u306e\u5fdc\u7528\u7de8\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[100],"tags":[118,119,121],"class_list":["post-845","post","type-post","status-publish","format-standard","hentry","category-100","tag-kubernetes","tag-docker","tag-jenkins","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b - \u30ab\u30ce\u30d6\u30ed\u30b0<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.kanotype.net\/?p=845\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b - \u30ab\u30ce\u30d6\u30ed\u30b0\" \/>\n<meta property=\"og:description\" content=\"Kubernetes\u4e0a\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002\u524d\u56de\u300cVirtualBox\u3067Kubernetes\u74b0\u5883\u69cb\u7bc9\u300d\u306e\u5fdc\u7528\u7de8\u306b\u306a\u308a\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.kanotype.net\/?p=845\" \/>\n<meta property=\"og:site_name\" content=\"\u30ab\u30ce\u30d6\u30ed\u30b0\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-28T13:28:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-08-28T13:35:55+00:00\" \/>\n<meta name=\"author\" content=\"KanoT\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"KanoT\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/?p=845#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/?p=845\"},\"author\":{\"name\":\"KanoT\",\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/#\\\/schema\\\/person\\\/4ad86ae071b384c7de0b93a63002856d\"},\"headline\":\"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\",\"datePublished\":\"2020-08-28T13:28:50+00:00\",\"dateModified\":\"2020-08-28T13:35:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/?p=845\"},\"wordCount\":116,\"commentCount\":0,\"keywords\":[\"Kubernetes\",\"Docker\",\"Jenkins\"],\"articleSection\":[\"\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.kanotype.net\\\/?p=845#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/?p=845\",\"url\":\"https:\\\/\\\/blog.kanotype.net\\\/?p=845\",\"name\":\"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b - \u30ab\u30ce\u30d6\u30ed\u30b0\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/#website\"},\"datePublished\":\"2020-08-28T13:28:50+00:00\",\"dateModified\":\"2020-08-28T13:35:55+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/#\\\/schema\\\/person\\\/4ad86ae071b384c7de0b93a63002856d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/?p=845#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.kanotype.net\\\/?p=845\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/?p=845#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/blog.kanotype.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/#website\",\"url\":\"https:\\\/\\\/blog.kanotype.net\\\/\",\"name\":\"\u30ab\u30ce\u30d6\u30ed\u30b0\",\"description\":\"\u5404\u7a2e\u77e5\u8b58\u4fdd\u7ba1\u6240\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.kanotype.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/#\\\/schema\\\/person\\\/4ad86ae071b384c7de0b93a63002856d\",\"name\":\"KanoT\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/blog.kanotype.net\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/cropped-Icon-2025-glow-small-96x96.png\",\"url\":\"https:\\\/\\\/blog.kanotype.net\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/cropped-Icon-2025-glow-small-96x96.png\",\"contentUrl\":\"https:\\\/\\\/blog.kanotype.net\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/cropped-Icon-2025-glow-small-96x96.png\",\"caption\":\"KanoT\"},\"description\":\"KANOTYPE\u7ba1\u7406\u8005\u3002\",\"url\":\"https:\\\/\\\/blog.kanotype.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b - \u30ab\u30ce\u30d6\u30ed\u30b0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.kanotype.net\/?p=845","og_locale":"ja_JP","og_type":"article","og_title":"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b - \u30ab\u30ce\u30d6\u30ed\u30b0","og_description":"Kubernetes\u4e0a\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002\u524d\u56de\u300cVirtualBox\u3067Kubernetes\u74b0\u5883\u69cb\u7bc9\u300d\u306e\u5fdc\u7528\u7de8\u306b\u306a\u308a\u307e\u3059\u3002","og_url":"https:\/\/blog.kanotype.net\/?p=845","og_site_name":"\u30ab\u30ce\u30d6\u30ed\u30b0","article_published_time":"2020-08-28T13:28:50+00:00","article_modified_time":"2020-08-28T13:35:55+00:00","author":"KanoT","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"KanoT","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"2\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.kanotype.net\/?p=845#article","isPartOf":{"@id":"https:\/\/blog.kanotype.net\/?p=845"},"author":{"name":"KanoT","@id":"https:\/\/blog.kanotype.net\/#\/schema\/person\/4ad86ae071b384c7de0b93a63002856d"},"headline":"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b","datePublished":"2020-08-28T13:28:50+00:00","dateModified":"2020-08-28T13:35:55+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.kanotype.net\/?p=845"},"wordCount":116,"commentCount":0,"keywords":["Kubernetes","Docker","Jenkins"],"articleSection":["\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.kanotype.net\/?p=845#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.kanotype.net\/?p=845","url":"https:\/\/blog.kanotype.net\/?p=845","name":"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b - \u30ab\u30ce\u30d6\u30ed\u30b0","isPartOf":{"@id":"https:\/\/blog.kanotype.net\/#website"},"datePublished":"2020-08-28T13:28:50+00:00","dateModified":"2020-08-28T13:35:55+00:00","author":{"@id":"https:\/\/blog.kanotype.net\/#\/schema\/person\/4ad86ae071b384c7de0b93a63002856d"},"breadcrumb":{"@id":"https:\/\/blog.kanotype.net\/?p=845#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.kanotype.net\/?p=845"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.kanotype.net\/?p=845#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/blog.kanotype.net\/"},{"@type":"ListItem","position":2,"name":"Kubernetes\u306bJenkins\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b"}]},{"@type":"WebSite","@id":"https:\/\/blog.kanotype.net\/#website","url":"https:\/\/blog.kanotype.net\/","name":"\u30ab\u30ce\u30d6\u30ed\u30b0","description":"\u5404\u7a2e\u77e5\u8b58\u4fdd\u7ba1\u6240","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.kanotype.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/blog.kanotype.net\/#\/schema\/person\/4ad86ae071b384c7de0b93a63002856d","name":"KanoT","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/blog.kanotype.net\/wp-content\/uploads\/2026\/07\/cropped-Icon-2025-glow-small-96x96.png","url":"https:\/\/blog.kanotype.net\/wp-content\/uploads\/2026\/07\/cropped-Icon-2025-glow-small-96x96.png","contentUrl":"https:\/\/blog.kanotype.net\/wp-content\/uploads\/2026\/07\/cropped-Icon-2025-glow-small-96x96.png","caption":"KanoT"},"description":"KANOTYPE\u7ba1\u7406\u8005\u3002","url":"https:\/\/blog.kanotype.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=\/wp\/v2\/posts\/845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=845"}],"version-history":[{"count":3,"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=\/wp\/v2\/posts\/845\/revisions"}],"predecessor-version":[{"id":848,"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=\/wp\/v2\/posts\/845\/revisions\/848"}],"wp:attachment":[{"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kanotype.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}