{"id":65122,"date":"2024-06-04T15:58:53","date_gmt":"2024-06-04T12:28:53","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/zai-k8snei-zi-jian-gityuan-cheng-cang-ku-285k\/"},"modified":"2024-06-04T15:58:53","modified_gmt":"2024-06-04T12:28:53","slug":"zai-k8snei-zi-jian-gityuan-cheng-cang-ku-285k","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/zai-k8snei-zi-jian-gityuan-cheng-cang-ku-285k\/","title":{"rendered":"\u0627\u0646\u0628\u0627\u0631 \u0631\u0627\u0647 \u062f\u0648\u0631 Git \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 K8s \u0628\u0633\u0627\u0632\u06cc\u062f"},"content":{"rendered":"<ul>\n<li><strong>1. \u0627\u0628\u062a\u062f\u0627 \u0645\u0634\u06a9\u0644 \u062a\u062f\u0627\u0648\u0645 \u0631\u0627 \u062d\u0644 \u06a9\u0646\u06cc\u062f<\/strong><\/li>\n<\/ul>\n<blockquote>\n<p>\u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc persistence\u060c \u0645\u06cc\u0632\u0628\u0627\u0646 (\u0633\u0631\u0648\u0631) \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Kind \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:\n<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>docker exec -it dbe0bb145add mkdir -p \/data\/gitea\n<\/code><\/pre>\n<\/div>\n<blockquote>\n<p><strong>\u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631<\/strong>\n<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>(base) [root@ip-10-242-18-237 ec2-user]# docker exec -it dbe0bb145add ls  \/data\/\ndocker  gitea  jenkins\n\n<\/code><\/pre>\n<\/div>\n<blockquote>\n<p><strong>\u06cc\u06a9 \u062d\u062c\u0645 \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong>\n<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>apiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: gitea-pv-volume\n  labels:\n    type: local\nspec:\n  storageClassName: standard\n  claimRef:\n    name: gitea-pv-claim\n    namespace: devops-tools\n  capacity:\n    storage: 10Gi\n  accessModes:\n    - ReadWriteOnce\n  local:\n    path: \/data\/gitea\n  nodeAffinity:\n    required:\n      nodeSelectorTerms:\n      - matchExpressions:\n        - key: kubernetes.io\/hostname\n          operator: In\n          values:\n          - spiders-control-plane\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: gitea-pv-claim\n  namespace: devops-tools\nspec:\n  storageClassName: standard\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 10Gi\n<\/code><\/pre>\n<\/div>\n<ul>\n<li><strong>2. \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0627\u0646\u0628\u0627\u0631 gitea<\/strong><\/li>\n<\/ul>\n<blockquote>\n<p><strong>\u0627\u06af\u0631 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f.<\/strong>\n<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: gitea-postgres\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: gitea-postgres\n  template:\n    metadata:\n      labels:\n        app: gitea-postgres\n    spec:\n      containers:\n        - name: postgres\n          image: postgres:13\n          env:\n            - name: POSTGRES_DB\n              value: \"gitea\"\n            - name: POSTGRES_USER\n              value: \"gitea\"\n            - name: POSTGRES_PASSWORD\n              value: \"666\"\n          ports:\n            - containerPort: 5432\n          volumeMounts:\n            - mountPath: \/var\/lib\/postgresql\/data\n              name: postgres-storage\n      volumes:\n        - name: postgres-storage\n          persistentVolumeClaim:\n            claimName: gitea-pv-claim\n---\n\napiVersion: v1\nkind: Service\nmetadata:\n  name: gitea-postgres\n  labels:\n    app: gitea-postgres\nspec:\n  ports:\n    - port: 5432\n  selector:\n    app: gitea-postgres\n\n<\/code><\/pre>\n<\/div>\n<blockquote>\n<p><strong>\u0633\u0631\u0648\u06cc\u0633 Gitea \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f<\/strong>\n<\/p>\n<\/blockquote>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: gitea\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: gitea\n  template:\n    metadata:\n      labels:\n        app: gitea\n    spec:\n      initContainers:\n        - name: init-permissions\n          image: busybox\n          command: [\"sh\", \"-c\", \"chown -R 1000:1000 \/data\/gitea\"]\n          volumeMounts:\n            - name: gitea-storage\n              mountPath: \/data\/gitea\n      containers:\n        - name: gitea\n          image: gitea\/gitea:1.16.0\n          env:\n            - name: USER_UID\n              value: \"1000\"\n            - name: USER_GID\n              value: \"1000\"\n            - name: GITEA__database__DB_TYPE\n              value: \"postgres\"\n            - name: GITEA__database__HOST\n              value: \"gitea-postgres:5432\"\n            - name: GITEA__database__NAME\n              value: \"gitea\"\n            - name: GITEA__database__USER\n              value: \"gitea\"\n            - name: GITEA__database__PASSWD\n              value: \"666\"\n          ports:\n            - containerPort: 3000\n            - containerPort: 22\n          volumeMounts:\n            - mountPath: \/data\n              name: gitea-storage\n              readOnly: false\n      volumes:\n        - name: gitea-storage\n          persistentVolumeClaim:\n            claimName: gitea-pv-claim\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: gitea\n  labels:\n    app: gitea\nspec:\n  ports:\n    - name: http\n      port: 3000\n      targetPort: 3000\n    - name: ssh\n      port: 96\n      targetPort: 22\n  selector:\n    app: gitea\n<\/code><\/pre>\n<\/div>\n<ul>\n<li><strong>3. \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0646\u0628\u0627\u0631 \u0631\u0627\u0647 \u062f\u0648\u0631 Git \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<blockquote>\n<p>\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0631 \u0627\u0633\u0627\u0633 IP \u062f\u0631 \u062e\u0648\u0634\u0647 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0633\u0631\u0648\u06cc\u0633: http:\/\/10.96.126.83:3000<br \/>\n\u0646\u062a\u06cc\u062c\u0647: \u0622\u0632\u0645\u0648\u0646 \u062f\u0631\u0648\u0646 \u062e\u0648\u0634\u0647 \u0627\u06cc \u0642\u0628\u0648\u0644 \u0634\u062f!<\/p>\n<\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttirctcbeava781qulnb.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"800\" height=\"354\" title=\"\"><\/p>\n<ul>\n<li><strong>4. \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc Nginx \u0631\u0627 \u0637\u0648\u0631\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646 \u0628\u0647 \u0645\u062e\u0632\u0646 \u0631\u0627\u0647 \u062f\u0648\u0631 Git \u062f\u0631 \u062e\u0627\u0631\u062c \u0627\u0632 \u062e\u0648\u0634\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a.<\/strong><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxitl3d9t2tu254d0fx19.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"800\" height=\"193\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3u1n25thwgnfi8h6cswx.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"800\" height=\"624\" title=\"\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. \u0627\u0628\u062a\u062f\u0627 \u0645\u0634\u06a9\u0644 \u062a\u062f\u0627\u0648\u0645 \u0631\u0627 \u062d\u0644 \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc persistence\u060c \u0645\u06cc\u0632\u0628\u0627\u0646 (\u0633\u0631\u0648\u0631) \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 Kind \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f: docker exec -it dbe0bb145add mkdir -p \/data\/gitea \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631 (base) [root@ip-10-242-18-237 ec2-user]# docker exec -it dbe0bb145add ls \/data\/ docker gitea jenkins \u06cc\u06a9 \u062d\u062c\u0645 \u067e\u0627\u06cc\u062f\u0627\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":65123,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-65122","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/65122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=65122"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/65122\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/65123"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=65122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=65122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=65122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}