{"id":57841,"date":"2026-04-02T14:49:36","date_gmt":"2026-04-02T22:49:36","guid":{"rendered":"https:\/\/www.sumologic.com\/blog\/kubernetes%e4%b8%8a%e3%81%abpostgresql%e3%82%92%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95"},"modified":"2026-01-22T05:55:02","modified_gmt":"2026-01-22T13:55:02","slug":"kubernetes-deploy-postgres","status":"publish","type":"blog","link":"https:\/\/www.sumologic.com\/ja\/blog\/kubernetes-deploy-postgres","title":{"rendered":"Kubernetes\u4e0a\u306bPostgreSQL\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u65b9\u6cd5"},"content":{"rendered":"\n<section class=\"e-stn e-stn-0d652506f82b000a392973813b918ee25d5b4211 e-stn--glossary-inner-content e-stn--table-of-content\"><div class=\"container\">\n<div class=\"wp-block-b3rg-row e-row row\">\n<div class=\"wp-block-b3rg-column e-col e-col-1f7b3997080fc292474d26ff00c905d99d3520fa e-col--content-wrapper  col-sm-12 col-lg-12 col-xl-12\">\n<div class=\"e-div e-div-a1b32f66e1749758df41d5aea14f647cd10e362c e-div--card-btn-link\"><div class=\"e-img \">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"400\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/Deploy-postgreSQl-header.jpg\" alt=\"\" class=\"wp-image-4667\" title=\"\"><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Kubernetes \u306f\u3001\u30b3\u30f3\u30c6\u30ca\u5316\u3055\u308c\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30c7\u30d7\u30ed\u30a4\u3001\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3001\u7ba1\u7406\u3092\u81ea\u52d5\u5316\u3059\u308b\u30b3\u30f3\u30c6\u30ca\u30aa\u30fc\u30b1\u30b9\u30c8\u30ec\u30fc\u30b7\u30e7\u30f3\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3042\u308a\u3001\u30ed\u30fc\u30ea\u30f3\u30b0\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3084\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u306b\u304a\u3051\u308b\u591a\u304f\u306e\u624b\u52d5\u4f5c\u696d\u3092\u62bd\u8c61\u5316\u3057\u307e\u3059\u3002\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u969b\u306b\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u3067\u305d\u306e\u6a5f\u80fd\u3092\u6d3b\u7528\u3067\u304d\u308b\u3088\u3046\u3001PostgreSQL \u306e\u3088\u3046\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u00a0\u00a0<\/p>\n\n\n\n<p>\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001Kubernetes\u30af\u30e9\u30b9\u30bf\u306bPostgreSQL\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u624b\u9806\u3092\u9806\u3092\u8ffd\u3063\u3066\u8aac\u660e\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u67d4\u8edf\u306a\u69cb\u6210\u304c\u53ef\u80fd\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u306ePostgreSQL\u74b0\u5883\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002Google Kubernetes Engine (GKE)\u3001Amazon EKS\u3001IBM Cloud Kubernetes Service\u3001\u3042\u308b\u3044\u306fMinikube\u306e\u3088\u3046\u306a\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u306e\u3044\u305a\u308c\u3092\u4f7f\u7528\u3057\u3066\u3044\u3066\u3082\u3001\u3053\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306f\u9069\u7528\u53ef\u80fd\u3067\u3059\u3002\u3053\u306e\u307e\u307e\u8aad\u307f\u9032\u3081\u3066\u3001\u307e\u305a\u306f\u30c6\u30b9\u30c8\u7528\u306e\u5358\u4e00\u306ePostgreSQL\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092Kubernetes\u4e0a\u306b\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u65b9\u6cd5\u3092\u5b66\u3073\u307e\u3057\u3087\u3046\u3002\u3055\u3089\u306b\u3001Helm\u3001Kubernetes Operator\u3001Bitnami PostgreSQL\u3068\u3044\u3063\u305f\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u305f\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u30c7\u30d7\u30ed\u30a4\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3082\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequisites\">\u524d\u63d0\u6761\u4ef6<\/h2>\n\n\n\n<p>\u6b21\u306e\u624b\u9806\u3067\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kubernetes\u30af\u30e9\u30b9\u30bf\u30fc\uff08DigitalOcean\u3001Amazon Web Services\u3001Google Cloud\u3001IBM Cloud\u306a\u3069\u306e\u30af\u30e9\u30a6\u30c9\u30d7\u30ed\u30d0\u30a4\u30c0\u4e0a\u3001\u307e\u305f\u306f\u30ed\u30fc\u30ab\u30eb\u7528\u306e<a href=\"https:\/\/kind.sigs.k8s.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Kind<\/a>\u3084<a href=\"https:\/\/github.com\/kubernetes\/minikube\" target=\"_blank\" rel=\"noreferrer noopener\">Minikube<\/a>\u4e0a\uff09<\/li>\n\n\n\n<li>Kubernetes API\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb<a href=\"https:\/\/www.sumologic.com\/blog\/kubectl-logs\">kubectl<\/a>\u306b\u95a2\u3059\u308b\u5b9f\u7528\u7684\u306a\u77e5\u8b58<\/li>\n<\/ul>\n\n\n\n<p>\u958b\u59cb\u3059\u308b\u524d\u306b\u3001Kubernetes\u4e0a\u306b\u5358\u4e00\u306ePostgreSQL\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u624b\u9806\u3092\u304a\u3055\u3089\u3044\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"simple-postgresql-deployment\">\u30b7\u30f3\u30d7\u30eb\u306aPostgreSQL\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dockerize-postgresql\">PostgreSQL\u306eDocker\u5316<\/h3>\n\n\n\n<p>Kubernetes \u306f\u30ec\u30b8\u30b9\u30c8\u30ea\u304b\u3089<a href=\"https:\/\/www.sumologic.com\/glossary\/docker\">Docker<\/a>\u30a4\u30e1\u30fc\u30b8\u3092\u53d6\u5f97\u3057\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u57fa\u3065\u3044\u3066\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3059\u3002<a href=\"https:\/\/docs.docker.com\/samples\/postgresql_service\/#install-postgresql-on-docker\" target=\"_blank\" rel=\"noreferrer noopener\">\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u72ec\u81ea\u306ePostgreSQL Docker\u30a4\u30e1\u30fc\u30b8<\/a>\u3092\u30d3\u30eb\u30c9\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3057\u3001Docker Hub \u306b\u3042\u308b\u516c\u5f0f\u306e\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u672c\u8a18\u4e8b\u3067\u306f\u3001\u6700\u65b0\u306e<a href=\"https:\/\/hub.docker.com\/_\/postgres\" target=\"_blank\" rel=\"noreferrer noopener\">Postgres 15.3 \u30a4\u30e1\u30fc\u30b8<\/a>\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-your-connection-configuration-and-secrets\">\u63a5\u7d9a\u8a2d\u5b9a\u3068Secret\u306e\u4f5c\u6210<\/h3>\n\n\n\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8cc7\u683c\u60c5\u5831\u306a\u3069\u306e\u6a5f\u5bc6\u60c5\u5831\u3092\u5b89\u5168\u306b\u4fdd\u5b58\u3059\u308b\u305f\u3081\u3001Kubernetes\u306e\u30cd\u30a4\u30c6\u30a3\u30d6\u30ea\u30bd\u30fc\u30b9\u3067\u3042\u308bKubernetes Secrets\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u00a0<\/p>\n\n\n\n<p>Kubernetes\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306fbase64\u30a8\u30f3\u30b3\u30fc\u30c9\u5f62\u5f0f\u3067Secret\u306e\u4fdd\u5b58\u3092\u884c\u3044\u307e\u3059\u304c\u3001\u3053\u308c\u3060\u3051\u3067\u306f\u5b89\u5168\u3068\u306f\u3044\u3048\u307e\u305b\u3093\u3002\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5f37\u5316\u306e\u305f\u3081\u3001\u4fdd\u5b58\u6642\u306e\u6697\u53f7\u5316\u3092\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u3059\u3079\u3066\u306e\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001Kubernetes Secret\u306e\u305f\u3081\u306e\u8a2d\u5b9a\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002Postgres\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u306b\u306f\u4ee5\u4e0b\u306e\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<p><\/p>\n\n\n\n<code>\u276f echo -n \"postgres\" | base64<br\/>cG9zdGdyZXMK<\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u6b21\u306b\u3001Secrets\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u306b\u9069\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<code>&gt; cat postgres-secrets.yml<br\/>apiVersion: v1<br\/>kind: Secret<br\/>metadata:<br\/>name: postgres-secret-config<br\/>type: Opaque<br\/>data:<br\/>password: cG9zdGdyZXMK<\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3053\u3053\u3067\u306f <code>kind<\/code> \u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u3001Kubernetes \u306b\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u4f7f\u3063\u3066\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u3088\u3046\u6307\u793a\u3059\u308b Secret \u3067\u3059\u3002\u3053\u308c\u3089\u306e\u5024\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u540d\u524d\u306f\u3001<code>postgres-secret-config<\/code> \u3068\u3044\u3046\u30ad\u30fc\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001data \u30bb\u30af\u30b7\u30e7\u30f3\u306b\u3001\u79d8\u5bc6\u306b\u4fdd\u5b58\u3057\u305f\u3044\u30ad\u30fc\uff0f\u5024\u306e\u30da\u30a2\u3092\u6307\u5b9a\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u3053\u3053\u3067\u3053\u306e\u8a2d\u5b9a\u3092\u9069\u7528\u3057\u3001\u5185\u5bb9\u304c\u6b63\u3057\u304f\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<code>\u276f kubectl apply -f postgres-secrets.yml<br\/>secret\/postgres-secret-config created<br\/>\u276f kubectl get secret postgres-secret-config -o yaml<br\/>apiVersion: v1<br\/>data:<br\/>password: cG9zdGdyZXMK<br\/>....<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-persistentvolume-and-persistentvolumeclaim\">PersistentVolume\u3068PersistentVolumeClaim\u306e\u4f5c\u6210<\/h3>\n\n\n\n<p>Docker\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u306f\u60c5\u5831\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u6c38\u7d9a\u7684\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u5b58\u5728\u3057\u306a\u3044\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\u305f\u3081\u3001\u30b3\u30f3\u30c6\u30ca\u304c\u5b58\u5728\u3057\u306a\u304f\u306a\u3063\u305f\u3068\u304d\u306e\u305f\u3081\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30c7\u30fc\u30bf\u7528\u306e\u6c38\u7d9a\u7684\u306a\u30d5\u30a1\u30a4\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u89e3\u6c7a\u7b56\u306f\u3001PostgreSQL\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u30de\u30a6\u30f3\u30c8\u3059\u308b\u3053\u3068\u3067\u3059\u3002Kubernetes\u3067\u306f\u3053\u308c\u3089\u306e\u64cd\u4f5c\u306b\u7570\u306a\u308b\u8a2d\u5b9a\u5f62\u5f0f\u304c\u63a1\u7528\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3044\u307e\u3059\u3002\u00a0\u00a0<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f7f\u7528\u3059\u308b\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30bf\u30a4\u30d7\u3092\u8a18\u8ff0\u3059\u308bPersistentVolume\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u00a0<\/li>\n\n\n\n<li>\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9\u306b\u57fa\u3065\u304d\u3001\u7279\u5b9a\u306ePersistentVolume\u30bf\u30a4\u30d7\u306e\u4f7f\u7528\u3092\u8981\u6c42\u3059\u308bPersistentVolumeClaim\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u30dc\u30ea\u30e5\u30fc\u30e0\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306b\u9069\u3057\u305f<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/storage-classes\/\" target=\"_blank\" rel=\"noopener\">StorageClass<\/a>\uff08\u6a19\u6e96\u3001gp2\u3001\u307e\u305f\u306f\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068IOPS\u6700\u9069\u5316\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u30af\u30e9\u30a6\u30c9\u30d7\u30ed\u30d0\u30a4\u30c0\u56fa\u6709\u306e\u52d5\u7684\u30d7\u30ed\u30d3\u30b8\u30e7\u30ca\u30fc\u306a\u3069\uff09\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u307e\u305a\u3001PersistentVolume\u306e\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<code>&gt; cat pv-volume.yml<br\/>apiVersion: v1<br\/>kind: PersistentVolume<br\/>metadata:<br\/>name: postgres-pv-volume<br\/>labels:<br\/>type: local<br\/>spec:<br\/>storageClassName: manual<br\/>capacity:<br\/>storage: 5Gi<br\/>accessModes:<br\/>- ReadWriteOnce<br\/>hostPath:<br\/>path: \"\/mnt\/data\"<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3053\u306e\u8a2d\u5b9a\u3067\u306f\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u30ce\u30fc\u30c9\u4e0a\u306e\/mnt\/data\u306b\u30015GB\u306e\u8aad\u307f\u66f8\u304d\u53ef\u80fd\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u78ba\u4fdd\u3059\u308b\u3088\u3046\u306b\u6307\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u3092\u9069\u7528\u3057\u3001\u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u304c\u4f7f\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<code>\u276f kubectl apply -f pv-volume.yml<br\/>persistentvolume\/postgres-pv-volume created<br\/>\u276f kubectl get pv postgres-pv-volume<br\/>NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE<br\/>postgres-pv-volume 5Gi RWO Retain Available manual 51s<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u524d\u306e\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u306e\u8a73\u7d30\u3068\u4e00\u81f4\u3059\u308bPersistentVolumeClaim\u8a2d\u5b9a\u306b\u3088\u308a\u30d5\u30a9\u30ed\u30fc\u30a2\u30c3\u30d7\u3059\u308b\u3053\u3068\u304c\u6c42\u3081\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<code>&gt; cat pv-claim.yml<br\/>apiVersion: v1<br\/>kind: PersistentVolumeClaim<br\/>metadata:<br\/>name: postgres-pv-claim<br\/>spec:<br\/>storageClassName: manual<br\/>accessModes:<br\/>- ReadWriteOnce<br\/>resources:<br\/>requests:<br\/>storage: 1Gi<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3053\u306e\u69cb\u6210\u3067\u306f\u3001\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9\u540d\u3092\u4f7f\u7528\u3057\u30661GB\u306e\u30c7\u30fc\u30bf\u306b\u5bfe\u3059\u308bPersistentVolumeClaim\u3092\u8981\u6c42\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u91cd\u8981\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u3067\u3042\u308a\u3001Kubernetes\u304c\u5229\u7528\u53ef\u80fd\u306a5GB\u306e\u30b9\u30c8\u30ec\u30fc\u30b8\u30af\u30e9\u30b9\u304b\u3089\u3053\u306e\u8981\u6c42\u306e\u305f\u3081\u306b1GB\u3092\u78ba\u4fdd\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3053\u308c\u3092\u9069\u7528\u3057\u3001\u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u8981\u6c42\u304c\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<code><br\/>\u276f kubectl apply -f pv-claim.yml<br\/>persistentvolumeclaim\/postgres-pv-claim created<br\/>\u276f kubectl get pvc postgres-pv-claim<br\/>NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE<br\/>postgres-pv-claim Bound postgres-pv-volume 1Gi RWO manual 5m32s<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-a-kubernetes-deployment-for-postgresql\">PostgreSQL\u7528\u306eKubernetes\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u4f5c\u6210<\/h3>\n\n\n\n<p>Secret\u540dPostgres-secret-config\u306e\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u3001\u5148\u307b\u3069\u4f5c\u6210\u3057\u305fPersistentVolume\u3068PersistentVolumeClaim\u3092\u53c2\u7167\u3057\u3066\u3001Kubernetes\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u8a2d\u5b9a\u3092\u767a\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<code><br\/>&gt; cat postgres-deployment.yml<br\/>apiVersion: apps\/v1<br\/>kind: Deployment<br\/>metadata:<br\/>name: postgres<br\/>spec:<br\/>replicas: 1<br\/>selector:<br\/>matchLabels:<br\/>app: postgres<br\/>template:<br\/>metadata:<br\/>labels:<br\/>app: postgres<br\/>spec:<br\/>volumes:<br\/>- name: postgres-pv-storage<br\/>persistentVolumeClaim:<br\/>claimName: postgres-pv-claim<br\/>containers:<br\/>- name: postgres<br\/>image: postgres:11<br\/>imagePullPolicy: IfNotPresent<br\/>ports:<br\/>- containerPort: 5432<br\/>env:<br\/>- name: POSTGRES_PASSWORD<br\/>valueFrom:<br\/>secretKeyRef:<br\/>name: postgres-secret-config<br\/>key: password<br\/>- name: PGDATA<br\/>value: \/var\/lib\/postgresql\/data\/pgdata<br\/>volumeMounts:<br\/>- mountPath: \/var\/lib\/postgresql\/data<br\/>name: postgres-pv-storage<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001\u5148\u306b\u5b9a\u7fa9\u3057\u305f\u3059\u3079\u3066\u306e\u8a2d\u5b9a\u3092\u3001Kubernetes \u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u8a2d\u5b9a\u304a\u3088\u3073\u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u30de\u30a6\u30f3\u30c8\u3068\u7d44\u307f\u5408\u308f\u305b\u307e\u3057\u305f\u3002apiVersion: apps\/v1 \u306e\u30c7\u30d7\u30ed\u30a4\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001selector \u3084 metadata \u30d5\u30a3\u30fc\u30eb\u30c9\u306a\u3069\u3001\u304b\u306a\u308a\u591a\u304f\u306e\u9805\u76ee\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6b21\u306b\u3001\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u306e\u8a73\u7d30\u3068\u30a4\u30e1\u30fc\u30b8\u30d7\u30eb\u30dd\u30ea\u30b7\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306f\u3059\u3079\u3066\u3001\u305d\u306e\u30b3\u30f3\u30c6\u30ca\u3067\u6b63\u3057\u3044\u30dc\u30ea\u30e5\u30fc\u30e0\u3068\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u304c\u4f7f\u7528\u3055\u308c\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u6b21\u306b\u3053\u308c\u3092\u9069\u7528\u3057\u3001\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u304c\u5229\u7528\u53ef\u80fd\u304b\u3064\u6b63\u5e38\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<code><br\/>\u276f kubectl apply -f postgres-deployment.yml<br\/>deployment.apps\/postgres created<br\/>\u276f kubectl get deployments<br\/>NAME READY UP-TO-DATE AVAILABLE AGE<br\/>postgres 1\/1 1 1 28s<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-a-service-to-expose-the-postgresql-server\">PostgreSQL\u30b5\u30fc\u30d0\u30fc\u3092\u516c\u958b\u3059\u308b\u305f\u3081\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u4f5c\u6210<\/h3>\n\n\n\n<p>Kubernetes Service \u3092\u4f7f\u7528\u3057\u3066 PostgreSQL \u306e Pod \u3092\u516c\u958b\u3057\u307e\u3059\u3002\u3053\u308c\u3092\u884c\u3046\u306b\u306f\u3001\u5225\u306e\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\u304b\u3001NodePort \u307e\u305f\u306f LoadBalancer \u3092\u516c\u958b\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306e\u305f\u3081\u3001\u3053\u3053\u3067\u306f NodePort \u306e\u4f7f\u3044\u65b9\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002NodePort \u306f\u3001\u30ce\u30fc\u30c9\u306e IP \u4e0a\u306e\u9759\u7684\u30dd\u30fc\u30c8\u3067\u30b5\u30fc\u30d3\u30b9\u3092\u516c\u958b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6b21\u306e\u30b5\u30fc\u30d3\u30b9\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u304c\u4f7f\u7528\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<code><br\/>&gt; cat postgres-service.yml<br\/>apiVersion: v1<br\/>kind: Service<br\/>metadata:<br\/>name: postgres<br\/>labels:<br\/>app: postgres<br\/>spec:<br\/>type: NodePort<br\/>ports:<br\/>- port: 5432<br\/>selector:<br\/>app: postgres<br\/><\/code>\n\n\n\n<p><br\/><\/p>\n\n\n\n<p>\u6b21\u306b\u3053\u308c\u3092\u9069\u7528\u3057\u3001\u30b5\u30fc\u30d3\u30b9\u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3068\u3001\u30dd\u30fc\u30c8\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<code><br\/>\u276f kubectl apply -f postgres-service.yml<br\/>service\/postgres created<br\/>\u276f kubectl get service postgres<br\/>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"test-the-connection-to-the-postgres-database\">Postgres\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u30c6\u30b9\u30c8<\/h3>\n\n\n\n<p>\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u5185\u90e8\u3088\u308aPostgreSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306f\u305a\u3067\u3059\u3002<\/p>\n\n\n\n<code><br\/>\u276f kubectl get pods<br\/>NAME READY STATUS RESTARTS AGE<br\/>postgres-57f4746d96-7z5q8 1\/1 Running 0 30m<br\/>\u276f kubectl exec -it postgres-57f4746d96-7z5q8 -- psql -U postgres<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>Kubernetes\u30dd\u30c3\u30c9\u540d\u3092\u5909\u6570\u306b\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u4fbf\u5229\u306a\u65b9\u6cd5\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<code><br\/>POD=$(kubectl get pods -l app=postgres -o jsonpath=\"{.items[0].metadata.name}\")<\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u307e\u305f\u3001\u5225\u306eDocker\u30b3\u30f3\u30c6\u30ca\u3092\u4f7f\u7528\u3057\u3001psql\u30b3\u30de\u30f3\u30c9\u7d4c\u7531\u3067\u63a5\u7d9a\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<code><br\/>export POSTGRES_PASSWORD=$(kubectl get secret postgres-secret-config -o jsonpath=\"{.data.password}\" | base64 --decode)<br\/>\u276f kubectl run postgres-client --rm --tty -i --restart='Never' --image postgres:11 --env=\"PGPASSWORD=$POSTGRES_PASSWORD\" --command -- psql -h postgres -U postgres<br\/><\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u30b3\u30de\u30f3\u30c9\u30d7\u30ed\u30f3\u30d7\u30c8\u304c\u8868\u793a\u3055\u308c\u306a\u3044\u5834\u5408\u306f\u3001Enter\u30ad\u30fc\u3092\u62bc\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<code><br\/>postgres=#<\/code>\n\n\n\n<p><\/p>\n\n\n\n<p>\u3053\u308c\u3067\u3001\u30af\u30a8\u30ea\u5b9f\u884c\u306e\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"advanced-postgresql-deployment\">\u9ad8\u5ea6\u306aPostgreSQL\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8<\/h2>\n\n\n\n<p>\u524d\u306e\u4f8b\u3067\u306f\u3001\u958b\u767a\u76ee\u7684\u3067\u5358\u4e00\u306ePostgreSQL\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u307e\u3057\u305f\u3002\u672c\u756a\u74b0\u5883\u304a\u3088\u3073\u30cf\u30a4\u30d6\u30ea\u30c3\u30c9\u30af\u30e9\u30a6\u30c9\u74b0\u5883\u3067\u306f\u3001\u4ee5\u4e0b\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/bitnami.com\/stack\/postgresql\/containers\" target=\"_blank\" rel=\"noopener\">Bitnami PostgreSQL\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8<\/a>\uff1aBitnami\u306f\u3001\u8907\u6570\u30bf\u30a4\u30d7\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\uff08Kubernetes\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u7ba1\u7406\u3059\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u3067\u3042\u308bHelm\u3092\u542b\u3080\uff09\u3068\u3001\u5927\u898f\u6a21\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u305f\u3081\u306e\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u591a\u6570\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/zalando\/postgres-operator\" target=\"_blank\" rel=\"noopener\">Zalando PostgreSQL\u30aa\u30da\u30ec\u30fc\u30bf\u30fc<\/a>\uff1a<a href=\"https:\/\/github.com\/zalando\/patroni\" target=\"_blank\" rel=\"noopener\">Patroni<\/a>\u30d9\u30fc\u30b9\u306e\u65e2\u5b58\u30af\u30e9\u30b9\u30bf\u30fc\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3059\u308b\u9ad8\u53ef\u7528\u6027Kubernetes\u30aa\u30da\u30ec\u30fc\u30bf\u30fc\u3067\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3001\u4f01\u696d\u5bfe\u5fdc\u306e\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3068\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u57fa\u76e4\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"next-steps\">\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/h2>\n\n\n\n<p>Kubernetes \u4e0a\u306b\u30b7\u30f3\u30d7\u30eb\u306a PostgreSQL \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30c7\u30d7\u30ed\u30a4\u3057\u305f\u306e\u3067\u3001\u6b21\u306f\u76e3\u8996\u3068\u30ed\u30b0\u306e\u7d71\u5408\u306b\u9032\u3080\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\u3002Sumo Logic \u306e\u3088\u3046\u306a\u30c4\u30fc\u30eb\u306f\u9ad8\u5ea6\u306a Kubernetes \u76e3\u8996\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u30af\u30e9\u30b9\u30bf\u30fc\u30ea\u30bd\u30fc\u30b9\u306e\u7ba1\u7406\u3001Kubernetes Pod \u304b\u3089\u306e\u30ed\u30b0\u5206\u6790\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u53ef\u89b3\u6e2c\u6027\u306e\u78ba\u4fdd\u3092\u652f\u63f4\u3057\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u3001\u30af\u30ec\u30fc\u30e0\u304c\u524a\u9664\u3055\u308c\u308b\u3068\u30dc\u30ea\u30e5\u30fc\u30e0\u3082\u524a\u9664\u3055\u308c\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u30ea\u30af\u30ec\u30fc\u30e0\u30dd\u30ea\u30b7\u30fc\u3092 Retain \u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001PVC \u304c\u524a\u9664\u3055\u308c\u3066\u3082\u30c7\u30fc\u30bf\u304c\u4fdd\u6301\u3055\u308c\u307e\u3059\u3002<br\/><br\/><a href=\"https:\/\/www.sumologic.com\/ja\/kubernetes-monitoring\" data-type=\"page\" data-id=\"104\">Sumo Logic \u304c Kubernetes \u76e3\u8996\u306b\u3069\u306e\u3088\u3046\u306b\u5f79\u7acb\u3064\u304b\u3092\u305c\u3072\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":331,"featured_media":46230,"template":"","meta":{"_acf_changed":false,"show_custom_date":false,"custom_date":"","featured":false,"featured_image":0,"learn_more_label":"","image_alt_text":"","learn_more_type":"","show_popup":false,"learn_more_link_file":0,"event_date":false,"event_start_date":"","event_end_date":"","place_holder_image_url":"","post_reading_time":"2","notification_enabled":false,"notification_text":"","notification_logo":"","notification_expiration_time":0,"is_enable_transparent_header":false,"selected_taxonomy_terms":{"blog-category":[326],"blog-tag":[],"translation_priority":[221]},"selected_primary_terms":[],"learn_more_link":[],"featured_page_list":[],"notification_enabled_post_list":[],"_gspb_post_css":"","_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"62284,62286,62288","_relevanssi_noindex_reason":"","inline_featured_image":false,"footnotes":""},"blog-category":[326],"blog-tag":[],"class_list":["post-57841","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-devops-it-operations"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/blog\/57841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/users\/331"}],"version-history":[{"count":3,"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/blog\/57841\/revisions"}],"predecessor-version":[{"id":67377,"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/blog\/57841\/revisions\/67377"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/media\/46230"}],"wp:attachment":[{"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/media?parent=57841"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/blog-category?post=57841"},{"taxonomy":"blog-tag","embeddable":true,"href":"https:\/\/www.sumologic.com\/ja\/wp-json\/wp\/v2\/blog-tag?post=57841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}