{"id":43709,"date":"2023-02-21T20:49:34","date_gmt":"2023-03-14T13:31:27","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/"},"modified":"2024-04-29T15:39:35","modified_gmt":"2024-04-29T07:39:35","slug":"%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/","title":{"rendered":"\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f"},"content":{"rendered":"<h2>\u4f60\u5728\u505a\u4ec0\u4e48\uff1f<\/h2>\n<p>\u5927\u5bb6\u90fd\u662f\u4e91\u539f\u751f\u5417\uff1f<br \/>\nGitLab 11.6\u53d1\u5e03\u4e86\u53ef\u4ee5\u5c06Serverless\u5e94\u7528\u90e8\u7f72\u5230Kubernetes\u96c6\u7fa4\u4e0a\u7684\u529f\u80fd\u3002<\/p>\n<p>GitLab\u6b63\u5728\u5feb\u901f\u53d1\u5c55\u4e2d\uff0c\u800c\u5b89\u88c5\u65b9\u6cd5\u4e5f\u5728\u4e0d\u65ad\u53d8\u5316\u3002\u4e0d\u4ec5\u63d0\u4f9b\u4e86\u4f20\u7edf\u7684Omnibus GitLab package\uff08Docker\u955c\u50cf\uff09\uff0c\u8fd8\u63a8\u51fa\u4e86\u9002\u7528\u4e8e\u4f7f\u7528Helm\u5728Kubernetes\u96c6\u7fa4\u4e0a\u90e8\u7f72GitLab\u7684\u4e91\u539f\u751f\u955c\u50cf\uff08Helm Chart\uff09(\u800c\u4e14\u6bd4stable\/gitlab\u7684Chart\u7248\u672c\u66f4\u65b0\uff01)\u3002<\/p>\n<p>\u6211\u60f3\u4f7f\u7528\u4e91\u539f\u751f\u7684\u65b9\u6cd5\u5c06GitLab\u90e8\u7f72\u5230kubernetes\u96c6\u7fa4\u4e2d\uff0c\u6211\u4e5f\u60f3\u5c1d\u8bd5\u4e00\u4e0bServerless\u7684\u529f\u80fd\u3002<\/p>\n<p>\u7531\u4e8e\u5bf9CPU\/\u5185\u5b58\u8d44\u6e90\u6709\u4e00\u5b9a\u7684\u9700\u6c42\uff08\u7a0d\u540e\u4f1a\u63d0\u5230\uff09\uff0c\u6240\u4ee5\u8fd9\u6b21\u6211\u60f3\u5728\u4e0d\u9700\u8981\u82b1\u8d39\u91d1\u94b1\u7684minikube\u4e0a\u90e8\u7f72\uff0c\u800c\u4e0d\u662f\u50cfGKE\u8fd9\u6837\u7684\u516c\u5171\u4e91\u3002<br \/>\n\u7531\u4e8eminikube\u7279\u6709\u7684\u9650\u5236\uff0c\u5b58\u5728\u4e00\u4e2a\u95ee\u9898\uff08LoadBalancer\u4e0d\u5206\u914dEXTERNAL-IP\uff09\uff0c\u6211\u5c06\u4ecb\u7ecd\u89e3\u51b3\u65b9\u6cd5\u3002<\/p>\n<p>\u5b9e\u73b0\u4e91\u539f\u751f\u90e8\u7f72\u65f6\uff0c\u4f7f\u7528Helm\u4f5c\u4e3a\u90e8\u7f72\u5de5\u5177\uff0c\u8bf7\u53c2\u8003Helm\u7684\u63a8\u8350\u4f7f\u7528\u65b9\u6cd5\u3002<\/p>\n<h2>\u73af\u5883<\/h2>\n<p>\u6211\u5728\u5bb6\u4f7f\u7528\u7684\u662f\u4e00\u53f0\u5b9e\u4f53\u673a\u5668\uff08\u6838\u5fc3i7 8700K\uff0c64GB\u5185\u5b58\uff09\u3002\u64cd\u4f5c\u7cfb\u7edf\u662fUbuntu 17.10\u3002<br \/>\n\u6211\u5df2\u7ecf\u5b89\u88c5\u4e86\u4ee5\u4e0b\u8f6f\u4ef6\u3002<\/p>\n<p>minikube v0.28.2<\/p>\n<p>\u30af\u30e9\u30b9\u30bf\u30d0\u30fc\u30b8\u30e7\u30f3\u306fv1.10.0<\/p>\n<p>CPU\u30b3\u30a2\u5272\u308a\u5f53\u3066\u309212\u30b3\u30a2\u306b\u3057\u3066\u3044\u307e\u3059<\/p>\n<p>\u30e1\u30e2\u30ea\u5272\u308a\u5f53\u3066\u309220GB\u306b\u3057\u3066\u3044\u307e\u3059<\/p>\n<p>kuberctl v1.9.2<br \/>\nhelm v2.11.0<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">uname<\/span> <span class=\"nt\">-a<\/span>\r\nLinux hoge 4.13.0-46-generic <span class=\"c\">#51-Ubuntu SMP Tue Jun 12 12:36:29 UTC 2018 x86_64 x86_64 x86_64 GNU\/Linux<\/span>\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cat<\/span> \/etc\/lsb-release\r\n<span class=\"nv\">DISTRIB_ID<\/span><span class=\"o\">=<\/span>Ubuntu\r\n<span class=\"nv\">DISTRIB_RELEASE<\/span><span class=\"o\">=<\/span>17.10\r\n<span class=\"nv\">DISTRIB_CODENAME<\/span><span class=\"o\">=<\/span>artful\r\n<span class=\"nv\">DISTRIB_DESCRIPTION<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"Ubuntu 17.10\"<\/span>\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cat<\/span> \/proc\/cpuinfo | <span class=\"nb\">grep<\/span> <span class=\"s2\">\"model name\"<\/span>\r\nmodel name      : Intel<span class=\"o\">(<\/span>R<span class=\"o\">)<\/span> Core<span class=\"o\">(<\/span>TM<span class=\"o\">)<\/span> i7-8700K CPU @ 3.70GHz\r\n<span class=\"o\">(<\/span> \u7565\u300212\u30b3\u30a2 <span class=\"o\">)<\/span>\r\n<span class=\"nv\">$ <\/span>free <span class=\"nt\">-h<\/span>\r\n              total        used        free      shared  buff\/cache   available\r\nMem:            62G         18G         34G         42M         10G         43G\r\nSwap:          2.0G          0B        2.0G\r\n\r\n<span class=\"nv\">$ <\/span>minikube version\r\nminikube version: v0.28.2\r\n<span class=\"nv\">$ <\/span>kubectl version\r\nClient Version: version.Info<span class=\"o\">{<\/span>Major:<span class=\"s2\">\"1\"<\/span>, Minor:<span class=\"s2\">\"9\"<\/span>, GitVersion:<span class=\"s2\">\"v1.9.2\"<\/span>, GitCommit:<span class=\"s2\">\"5fa2db2bd46ac79e5e00a4e6ed24191080aa463b\"<\/span>, GitTreeState:<span class=\"s2\">\"clean\"<\/span>, BuildDate:<span class=\"s2\">\"2018-01-18T10:09:24Z\"<\/span>, GoVersion:<span class=\"s2\">\"go1.9.2\"<\/span>, Compiler:<span class=\"s2\">\"gc\"<\/span>, Platform:<span class=\"s2\">\"linux\/amd64\"<\/span><span class=\"o\">}<\/span>\r\nServer Version: version.Info<span class=\"o\">{<\/span>Major:<span class=\"s2\">\"1\"<\/span>, Minor:<span class=\"s2\">\"10\"<\/span>, GitVersion:<span class=\"s2\">\"v1.10.0\"<\/span>, GitCommit:<span class=\"s2\">\"fc32d2f3698e36b93322a3465f63a14e9f0eaead\"<\/span>, GitTreeState:<span class=\"s2\">\"clean\"<\/span>, BuildDate:<span class=\"s2\">\"2018-03-26T16:44:10Z\"<\/span>, GoVersion:<span class=\"s2\">\"go1.9.3\"<\/span>, Compiler:<span class=\"s2\">\"gc\"<\/span>, Platform:<span class=\"s2\">\"linux\/amd64\"<\/span><span class=\"o\">}<\/span>\r\n<span class=\"nv\">$ <\/span>helm version\r\nClient: &amp;version.Version<span class=\"o\">{<\/span>SemVer:<span class=\"s2\">\"v2.11.0\"<\/span>, GitCommit:<span class=\"s2\">\"2e55dbe1fdb5fdb96b75ff144a339489417b146b\"<\/span>, GitTreeState:<span class=\"s2\">\"clean\"<\/span><span class=\"o\">}<\/span>\r\nServer: &amp;version.Version<span class=\"o\">{<\/span>SemVer:<span class=\"s2\">\"v2.11.0\"<\/span>, GitCommit:<span class=\"s2\">\"2e55dbe1fdb5fdb96b75ff144a339489417b146b\"<\/span>, GitTreeState:<span class=\"s2\">\"clean\"<\/span><span class=\"o\">}<\/span>\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<h2>\u6240\u9700\u8d44\u6e90 (Suo3 Xu1 Zi1 Yuan2)<\/h2>\n<p>\u4ee5\u4e0b\u662f &#8220;CPU\u548cRAM\u8d44\u6e90\u8981\u6c42&#8221; \u8bb0\u8f7d\u7684\u5185\u5bb9\u3002<br \/>\n\u9ed8\u8ba4\u914d\u7f6e\u4e3a8\u4e2a\u6838\u5fc3\u548c30GB\u5185\u5b58\uff0c\u6700\u5c0f\u914d\u7f6e\u4e3a2\u4e2a\u6838\u5fc3\u548c4GB\u5185\u5b58\u3002<br \/>\n\uff08\u4e8b\u540e\u53d1\u73b0\uff0cminikube\u7684\u5185\u5b58\u5206\u914d\u5e94\u8be5\u662f30GB\u800c\u4e0d\u662f20GB\uff0c\u76ee\u524d\u6ca1\u6709\u5f71\u54cd\u3002\uff09<\/p>\n<p>by default to be adequate for a small production<\/p>\n<p>at least 8vCPU and 30gb of RAM<\/p>\n<p>non-production<\/p>\n<p>minimal GKE example values file \u306f 3vCPU 12gb<\/p>\n<p>minimal minikube example values file \u306f2vCPU, 4gb<\/p>\n<h2>\u53c3\u8003\u6587\u4ef6<\/h2>\n<p>\u6211\u6240\u63cf\u8ff0\u7684\u6b65\u9aa4\u53c2\u8003\u4e86\u4ee5\u4e0b\u6587\u4ef6\u3002<\/p>\n<p>gitlab.com<\/p>\n<p>Installing GitLab using Helm<br \/>\nDeployment Guide<br \/>\nInstallation command line options<br \/>\nReleases<\/p>\n<p>docs.gitlab.com<\/p>\n<p>GitLab Helm Chart<\/p>\n<h2>\u90e8\u7f72<\/h2>\n<p>\u6211\u4eec\u7acb\u5373\u8fdb\u884c\u90e8\u7f72\u5c1d\u8bd5\u3002<\/p>\n<h3>\u6dfb\u52a0Helm\u5b58\u50a8\u5e93<\/h3>\n<p>\u5728\u6b64\u4e4b\u524d\u589e\u52a0<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>helm repo list\r\nNAME            URL\r\nstable          https:\/\/kubernetes-charts.storage.googleapis.com\r\n<span class=\"nb\">local           <\/span>http:\/\/127.0.0.1:8879\/charts\r\nincubator       https:\/\/kubernetes-charts-incubator.storage.googleapis.com\/\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>\u589e\u6dfb<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>helm repo add gitlab https:\/\/charts.gitlab.io\/\r\n<span class=\"s2\">\"gitlab\"<\/span> has been added to your repositories\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>\u8ffd\u52a0\u540e\uff0c\u53ef\u4ee5\u4f7f\u7528gitlab\u4f5c\u4e3a\u540d\u79f0\u6dfb\u52a0\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>helm repo list\r\nNAME            URL\r\nstable          https:\/\/kubernetes-charts.storage.googleapis.com\r\n<span class=\"nb\">local           <\/span>http:\/\/127.0.0.1:8879\/charts\r\nincubator       https:\/\/kubernetes-charts-incubator.storage.googleapis.com\/\r\ngitlab          https:\/\/charts.gitlab.io\/\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>\u66f4\u65b0<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>helm repo update\r\nHang tight <span class=\"k\">while <\/span>we grab the latest from your chart repositories...\r\n...Skip <span class=\"nb\">local <\/span>chart repository\r\n...Successfully got an update from the <span class=\"s2\">\"incubator\"<\/span> chart repository\r\n...Successfully got an update from the <span class=\"s2\">\"stable\"<\/span> chart repository\r\n...Successfully got an update from the <span class=\"s2\">\"gitlab\"<\/span> chart repository\r\nUpdate Complete. \u2388 Happy Helming!\u2388\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>\u641c\u7d22<br \/>\n\u5728\u8fd9\u91cc\u4f7f\u7528\u7684\u662fgitlab\/gitlab\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u770b\u5230stable\/gitlab\u7684chart\u7248\u672c\u5f88\u65e7\u3002<br \/>\n\u662f\u7684\uff0c\u5982\u679c\u8981\u4f7f\u7528\u7684\u8bdd\uff0c\u5e94\u8be5\u4f7f\u7528Cloud native images\uff01<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>helm search gitlab\r\nNAME                            CHART VERSION   APP VERSION     DESCRIPTION\r\ngitlab\/gitlab                   1.4.2           11.6.3          Web-based Git-repository manager with wiki and issue-trac...\r\ngitlab\/gitlab-omnibus           0.1.37                          GitLab Omnibus all-in-one bundle\r\ngitlab\/gitlab-runner            0.1.44                          GitLab Runner\r\ngitlab\/kubernetes-gitlab-demo   0.1.29                          GitLab running on Kubernetes suitable <span class=\"k\">for <\/span>demos\r\nstable\/gitlab-ce                0.2.2           9.4.1           GitLab Community Edition\r\nstable\/gitlab-ee                0.2.2           9.4.1           GitLab Enterprise Edition\r\ngitlab\/auto-deploy-app          0.2.6                           GitLab<span class=\"s1\">'s Auto-deploy Helm Chart\r\n$\r\n<\/span><\/code><\/pre>\n<h3>\u90e8\u7f72<\/h3>\n<p>\u8bf7\u4f7f\u7528Helm\u547d\u4ee4\u8fdb\u884c\u90e8\u7f72\u3002<br \/>\n\u60a8\u9700\u8981\u6839\u636e\u73af\u5883\u6307\u5b9a\u76f8\u5e94\u7684\u53c2\u6570\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Chart\u540d\u306fgitlab\/gitlab\u3067\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>global.hosts.externalIP<\/p>\n<p>GKE\u306a\u3089\u3070static-ip\u3092\u53d6\u5f97\u3057\u3066\u304a\u3044\u3066\u3053\u3053\u306b\u6307\u5b9a\u3057\u305f\u3044\u3068\u3053\u308d\u3067\u3059\u306d\u3002<br \/>\n\u4eca\u56de\u306fminikube\u3067\u3059\u3002\u5f8c\u306e\u4f5c\u696d\u3067externalIP\u304c\u6c7a\u5b9a\u3057\u3066\u304b\u3089\u3067\u306a\u3044\u3068\u6307\u5b9a\u3067\u304d\u306a\u3044\u305f\u3081\u6307\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n<p>global.hosts.domain<\/p>\n<p>static-ip\u306b\u3072\u3082\u3065\u304f\u30c9\u30e1\u30a4\u30f3\u540d\u3092\u53d6\u5f97\u3057\u3066\u304a\u3044\u3066\u3053\u3053\u306b\u6307\u5b9a\u3057\u305f\u3044\u3068\u3053\u308d\u3067\u3059\u306d\u3002<br \/>\n\u4eca\u56de\u306fminikub\u3067\u3059\u3002\u4eee\u306btest.com\u3068\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\n\u5f8c\u307b\u3069hosts\u306e\u8a2d\u5b9a\u306a\u3069\u3092\u884c\u3044\u3053\u306e\u30c9\u30e1\u30a4\u30f3\u540d\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<p>namespace\u306fgitlab\u3068\u3057\u307e\u3057\u305f\u3002<br \/>\nCE(Community Edition)\u3092\u6307\u5b9a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>helm <span class=\"nb\">install <\/span>gitlab\/gitlab <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--name<\/span> gitlab <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--namespace<\/span> gitlab <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--set<\/span> global.hosts.domain<span class=\"o\">=<\/span>test.com <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--set<\/span> global.edition<span class=\"o\">=<\/span>ce <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--set<\/span> gitlab.migrations.image.repository<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-rails-ce <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--set<\/span> gitlab.sidekiq.image.repository<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-sidekiq-ce <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--set<\/span> gitlab.unicorn.image.repository<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-unicorn-ce <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--set<\/span> gitlab.unicorn.workhorse.image<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-workhorse-ce <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--set<\/span> gitlab.task-runner.image.repository<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-task-runner-ce <span class=\"se\">\\<\/span>\r\n  <span class=\"nt\">--set<\/span> certmanager-issuer.email<span class=\"o\">=<\/span>\u3042\u306a\u305f\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\r\n<\/code><\/pre>\n<p>\u5b9e\u65bd\u8bb0\u5f55<br \/>\n\u6709\u5173Chart\u7684\u4f7f\u7528\u65b9\u6cd5\u7b49\u5e38\u89c1\u7684NOTES\u6761\u76ee\u4e3a\u7a7a\uff0c\u671f\u5f85\u5728\u672a\u6765\u7684\u7ef4\u62a4\u4e2d\u8865\u5145\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>helm <span class=\"nb\">install <\/span>gitlab\/gitlab <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--name<\/span> gitlab <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--namespace<\/span> gitlab <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--set<\/span> global.hosts.domain<span class=\"o\">=<\/span>test.com <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--set<\/span> global.edition<span class=\"o\">=<\/span>ce <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--set<\/span> gitlab.migrations.image.repository<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-rails-ce <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--set<\/span> gitlab.sidekiq.image.repository<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-sidekiq-ce <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--set<\/span> gitlab.unicorn.image.repository<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-unicorn-ce <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--set<\/span> gitlab.unicorn.workhorse.image<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-workhorse-ce <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--set<\/span> gitlab.task-runner.image.repository<span class=\"o\">=<\/span>registry.gitlab.com\/gitlab-org\/build\/cng\/gitlab-task-runner-ce <span class=\"se\">\\<\/span>\r\n<span class=\"o\">&gt;<\/span>   <span class=\"nt\">--set<\/span> certmanager-issuer.email<span class=\"o\">=<\/span>\u3042\u306a\u305f\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\r\nNAME:   gitlab\r\nLAST DEPLOYED: Mon Jan 14 22:03:15 2019\r\nNAMESPACE: gitlab\r\nSTATUS: DEPLOYED\r\n\r\nRESOURCES:\r\n<span class=\"o\">==&gt;<\/span> v1\/RoleBinding\r\nNAME                       AGE\r\ngitlab-certmanager-issuer  1s\r\ngitlab-nginx-ingress       1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta1\/Ingress\r\ngitlab-unicorn   1s\r\ngitlab-minio     1s\r\ngitlab-registry  1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1\/Pod<span class=\"o\">(<\/span>related<span class=\"o\">)<\/span>\r\n\r\nNAME                                                  READY  STATUS             RESTARTS  AGE\r\ngitlab-certmanager-684998874-prjkk                    0\/1    ContainerCreating  0         1s\r\ngitlab-gitlab-runner-544fd9dcb5-92lxf                 0\/1    Init:0\/1           0         1s\r\ngitlab-gitlab-shell-77499546cb-ztw4g                  0\/1    Init:0\/2           0         1s\r\ngitlab-sidekiq-all-in-1-7bb9d95f9d-cp2l7              0\/1    Init:0\/3           0         1s\r\ngitlab-task-runner-db8556848-l5gkc                    0\/1    Init:0\/2           0         1s\r\ngitlab-unicorn-67f6d9d66b-jhlkw                       0\/2    Pending            0         1s\r\ngitlab-minio-7d5dbcccb6-9b49d                         0\/1    Pending            0         1s\r\ngitlab-nginx-ingress-controller-7565f874b9-t9qht      0\/1    Pending            0         0s\r\ngitlab-nginx-ingress-default-backend-fd5bb5468-j9f8p  0\/1    Pending            0         0s\r\ngitlab-gitaly-0                                       0\/1    Pending            0         1s\r\ngitlab-issuer.1-kjb4b                                 0\/1    Pending            0         1s\r\ngitlab-migrations.1-298sx                             0\/1    Pending            0         1s\r\ngitlab-minio-create-buckets.1-bxpbl                   0\/1    Pending            0         1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta1\/CustomResourceDefinition\r\n\r\nNAME                               AGE\r\ncertificates.certmanager.k8s.io    1s\r\nclusterissuers.certmanager.k8s.io  1s\r\nissuers.certmanager.k8s.io         1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta1\/ClusterRoleBinding\r\ngitlab-certmanager                    1s\r\ngitlab-prometheus-alertmanager        1s\r\ngitlab-prometheus-kube-state-metrics  1s\r\ngitlab-prometheus-node-exporter       1s\r\ngitlab-prometheus-server              1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta1\/RoleBinding\r\ngitlab-gitlab-runner  1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1\/Job\r\ngitlab-issuer.1                1s\r\ngitlab-migrations.1            1s\r\ngitlab-minio-create-buckets.1  1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1\/ConfigMap\r\ngitlab-certmanager-issuer-certmanager  1s\r\ngitlab-gitlab-runner                   1s\r\ngitlab-gitaly                          1s\r\ngitlab-gitlab-shell                    1s\r\ngitlab-nginx-ingress-tcp               1s\r\ngitlab-migrations                      1s\r\ngitlab-sidekiq-all-in-1                1s\r\ngitlab-sidekiq                         1s\r\ngitlab-task-runner                     1s\r\ngitlab-unicorn                         1s\r\ngitlab-workhorse-config                1s\r\ngitlab-unicorn-tests                   1s\r\ngitlab-minio-config-cm                 1s\r\ngitlab-nginx-ingress-controller        1s\r\ngitlab-postgresql                      1s\r\ngitlab-prometheus-server               1s\r\ngitlab-redis                           1s\r\ngitlab-registry                        1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1\/PersistentVolumeClaim\r\ngitlab-minio              1s\r\ngitlab-postgresql         1s\r\ngitlab-prometheus-server  1s\r\ngitlab-redis              1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1\/ServiceAccount\r\ngitlab-certmanager-issuer             1s\r\ngitlab-certmanager                    1s\r\ngitlab-gitlab-runner                  1s\r\ngitlab-nginx-ingress                  1s\r\ngitlab-prometheus-alertmanager        1s\r\ngitlab-prometheus-kube-state-metrics  1s\r\ngitlab-prometheus-node-exporter       1s\r\ngitlab-prometheus-server              1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta1\/Role\r\ngitlab-gitlab-runner  1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta2\/StatefulSet\r\ngitlab-gitaly  1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta1\/PodDisruptionBudget\r\ngitlab-gitaly                         0s\r\ngitlab-gitlab-shell                   0s\r\ngitlab-sidekiq                        0s\r\ngitlab-unicorn                        0s\r\ngitlab-minio-v1                       0s\r\ngitlab-nginx-ingress-controller       0s\r\ngitlab-nginx-ingress-default-backend  0s\r\ngitlab-redis-v1                       0s\r\ngitlab-registry-v1                    0s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta1\/ClusterRole\r\ngitlab-certmanager                    1s\r\ngitlab-prometheus-kube-state-metrics  1s\r\ngitlab-prometheus-server              1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1\/Role\r\ngitlab-certmanager-issuer  1s\r\ngitlab-nginx-ingress       1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1\/Service\r\ngitlab-gitaly                            1s\r\ngitlab-gitlab-shell                      1s\r\ngitlab-unicorn                           1s\r\ngitlab-minio-svc                         1s\r\ngitlab-nginx-ingress-controller-metrics  1s\r\ngitlab-nginx-ingress-controller          1s\r\ngitlab-nginx-ingress-controller-stats    1s\r\ngitlab-nginx-ingress-default-backend     1s\r\ngitlab-postgresql                        1s\r\ngitlab-prometheus-server                 1s\r\ngitlab-redis                             1s\r\ngitlab-registry                          1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta1\/Deployment\r\ngitlab-certmanager        1s\r\ngitlab-gitlab-runner      1s\r\ngitlab-postgresql         1s\r\ngitlab-prometheus-server  1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v1beta2\/Deployment\r\ngitlab-gitlab-shell                   1s\r\ngitlab-sidekiq-all-in-1               1s\r\ngitlab-task-runner                    1s\r\ngitlab-unicorn                        1s\r\ngitlab-minio                          1s\r\ngitlab-nginx-ingress-controller       1s\r\ngitlab-nginx-ingress-default-backend  1s\r\ngitlab-redis                          1s\r\ngitlab-registry                       1s\r\n\r\n<span class=\"o\">==&gt;<\/span> v2beta1\/HorizontalPodAutoscaler\r\ngitlab-gitlab-shell      0s\r\ngitlab-sidekiq-all-in-1  0s\r\ngitlab-unicorn           0s\r\ngitlab-registry          0s\r\n\r\n\r\nNOTES:\r\n\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<h3>\u90e8\u7f72\u7ed3\u679c<\/h3>\n<p>\u8ba9\u6211\u4eec\u6765\u770b\u4e00\u4e0bPod\u3001Service\u548cIngress\u7684\u914d\u7f6e\u3002<\/p>\n<h4>\u8c46\u835a<\/h4>\n<p>gitlab-runner\u53d1\u751f\u4e86CrashLoopBackOff\u9519\u8bef\u3002\u63a5\u4e0b\u6765\u5c06\u8fdb\u884c\u89e3\u91ca\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get po <span class=\"nt\">--all-namespaces<\/span>\r\nNAMESPACE     NAME                                                   READY     STATUS             RESTARTS   AGE\r\ngitlab        cm-acme-http-solver-bg79m                              1\/1       Running            0          8m\r\ngitlab        cm-acme-http-solver-hns5v                              1\/1       Running            0          8m\r\ngitlab        cm-acme-http-solver-srbq2                              1\/1       Running            0          8m\r\ngitlab        gitlab-certmanager-684998874-prjkk                     1\/1       Running            0          8m\r\ngitlab        gitlab-gitaly-0                                        1\/1       Running            0          8m\r\ngitlab        gitlab-gitlab-runner-544fd9dcb5-92lxf                  0\/1       CrashLoopBackOff   5          8m\r\ngitlab        gitlab-gitlab-shell-77499546cb-pmmkr                   1\/1       Running            0          8m\r\ngitlab        gitlab-gitlab-shell-77499546cb-ztw4g                   1\/1       Running            0          8m\r\ngitlab        gitlab-minio-7d5dbcccb6-9b49d                          1\/1       Running            0          8m\r\ngitlab        gitlab-nginx-ingress-controller-7565f874b9-t9qht       1\/1       Running            0          8m\r\ngitlab        gitlab-nginx-ingress-controller-7565f874b9-xz2k8       1\/1       Running            0          8m\r\ngitlab        gitlab-nginx-ingress-controller-7565f874b9-zxcjg       1\/1       Running            0          8m\r\ngitlab        gitlab-nginx-ingress-default-backend-fd5bb5468-fmsh4   1\/1       Running            0          8m\r\ngitlab        gitlab-nginx-ingress-default-backend-fd5bb5468-j9f8p   1\/1       Running            0          8m\r\ngitlab        gitlab-postgresql-5578b89f58-rswv2                     2\/2       Running            0          8m\r\ngitlab        gitlab-prometheus-server-847c8bb76-8s7nm               2\/2       Running            0          8m\r\ngitlab        gitlab-redis-7855c75bc9-ns8bc                          2\/2       Running            0          8m\r\ngitlab        gitlab-registry-f5cc79958-pg5j5                        1\/1       Running            0          8m\r\ngitlab        gitlab-registry-f5cc79958-zb5vj                        1\/1       Running            0          8m\r\ngitlab        gitlab-sidekiq-all-in-1-7bb9d95f9d-cp2l7               1\/1       Running            0          8m\r\ngitlab        gitlab-task-runner-db8556848-l5gkc                     1\/1       Running            0          8m\r\ngitlab        gitlab-unicorn-67f6d9d66b-4k4dl                        2\/2       Running            0          8m\r\ngitlab        gitlab-unicorn-67f6d9d66b-jhlkw                        2\/2       Running            0          8m\r\nkube-system   etcd-minikube                                          1\/1       Running            0          9m\r\nkube-system   heapster-fwjds                                         1\/1       Running            0          10m\r\nkube-system   influxdb-grafana-fqnvd                                 2\/2       Running            0          10m\r\nkube-system   kube-addon-manager-minikube                            1\/1       Running            0          9m\r\nkube-system   kube-apiserver-minikube                                1\/1       Running            0          9m\r\nkube-system   kube-controller-manager-minikube                       1\/1       Running            0          9m\r\nkube-system   kube-dns-86f4d74b45-nlzjv                              3\/3       Running            0          10m\r\nkube-system   kube-proxy-9pzlq                                       1\/1       Running            0          10m\r\nkube-system   kube-scheduler-minikube                                1\/1       Running            0          9m\r\nkube-system   kubernetes-dashboard-5498ccf677-j4clg                  1\/1       Running            0          10m\r\nkube-system   storage-provisioner                                    1\/1       Running            0          10m\r\nkube-system   tiller-deploy-6fd8d857bc-m6zsf                         1\/1       Running            0          9m\r\n<\/code><\/pre>\n<h4>\u670d\u52a1<\/h4>\n<p>\u56e0\u4e3a\u4f7f\u7528\u4e86minikube\uff0c\u6240\u4ee5LoadBalancer\u7684EXTERNAL-IP\u72b6\u6001\u4e3a\u3002<br \/>\n\u9700\u8981\u6309\u7167\u4e0b\u8ff0\u6b65\u9aa4\u5c06EXTERNAL-IP\u4ece\u96c6\u7fa4\u5916\u90e8\u8bbf\u95ee\uff0c\u8be6\u7ec6\u8bf4\u660e\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get svc <span class=\"nt\">--all-namespaces<\/span>\r\nNAMESPACE     NAME                                      TYPE           CLUSTER-IP       EXTERNAL-IP   PORT<span class=\"o\">(<\/span>S<span class=\"o\">)<\/span>                                   AGE\r\ndefault       kubernetes                                ClusterIP      10.96.0.1        &lt;none&gt;        443\/TCP                                   10m\r\ngitlab        cm-acme-http-solver-5jnrt                 NodePort       10.99.22.181     &lt;none&gt;        8089:31912\/TCP                            8m\r\ngitlab        cm-acme-http-solver-rlgx9                 NodePort       10.98.39.181     &lt;none&gt;        8089:32089\/TCP                            8m\r\ngitlab        cm-acme-http-solver-t5wlx                 NodePort       10.104.21.86     &lt;none&gt;        8089:32554\/TCP                            8m\r\ngitlab        gitlab-gitaly                             ClusterIP      None             &lt;none&gt;        8075\/TCP,9236\/TCP                         8m\r\ngitlab        gitlab-gitlab-shell                       ClusterIP      10.105.108.223   &lt;none&gt;        22\/TCP                                    8m\r\ngitlab        gitlab-minio-svc                          ClusterIP      10.96.20.212     &lt;none&gt;        9000\/TCP                                  8m\r\ngitlab        gitlab-nginx-ingress-controller           LoadBalancer   10.106.203.63    &lt;pending&gt;     80:32693\/TCP,443:31602\/TCP,22:32479\/TCP   8m\r\ngitlab        gitlab-nginx-ingress-controller-metrics   ClusterIP      10.100.78.127    &lt;none&gt;        9913\/TCP                                  8m\r\ngitlab        gitlab-nginx-ingress-controller-stats     ClusterIP      10.102.76.134    &lt;none&gt;        18080\/TCP                                 8m\r\ngitlab        gitlab-nginx-ingress-default-backend      ClusterIP      10.106.104.56    &lt;none&gt;        80\/TCP                                    8m\r\ngitlab        gitlab-postgresql                         ClusterIP      10.106.171.116   &lt;none&gt;        5432\/TCP                                  8m\r\ngitlab        gitlab-prometheus-server                  ClusterIP      10.101.56.39     &lt;none&gt;        80\/TCP                                    8m\r\ngitlab        gitlab-redis                              ClusterIP      10.104.57.149    &lt;none&gt;        6379\/TCP,9121\/TCP                         8m\r\ngitlab        gitlab-registry                           ClusterIP      10.102.70.88     &lt;none&gt;        5000\/TCP                                  8m\r\ngitlab        gitlab-unicorn                            ClusterIP      10.103.23.54     &lt;none&gt;        8080\/TCP,8181\/TCP                         8m\r\nkube-system   heapster                                  ClusterIP      10.110.17.167    &lt;none&gt;        80\/TCP                                    10m\r\nkube-system   kube-dns                                  ClusterIP      10.96.0.10       &lt;none&gt;        53\/UDP,53\/TCP                             10m\r\nkube-system   kubernetes-dashboard                      NodePort       10.110.36.209    &lt;none&gt;        80:30000\/TCP                              10m\r\nkube-system   monitoring-grafana                        NodePort       10.96.206.158    &lt;none&gt;        80:30002\/TCP                              10m\r\nkube-system   monitoring-influxdb                       ClusterIP      10.100.26.192    &lt;none&gt;        8083\/TCP,8086\/TCP                         10m\r\nkube-system   tiller-deploy                             ClusterIP      10.98.2.151      &lt;none&gt;        44134\/TCP                                 9m\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<h4>\u5165\u53e3<\/h4>\n<p>\u6211\u4e86\u89e3\u5230\u4f60\u60f3\u4ece\u96c6\u7fa4\u5916\u90e8\u901a\u8fc7\u4e3b\u673a\u540dgitlab.test.com\u8fdb\u884c\u8bbf\u95ee\u548c\u4f7f\u7528\u3002\u4ee5\u4e0b\u662f\u76f8\u5e94\u7684\u6b65\u9aa4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get ing <span class=\"nt\">--all-namespaces<\/span>\r\nNAMESPACE   NAME                        HOSTS               ADDRESS   PORTS     AGE\r\ngitlab      cm-acme-http-solver-khlqr   gitlab.test.com               80        10m\r\ngitlab      cm-acme-http-solver-mvq5r   minio.test.com                80        10m\r\ngitlab      cm-acme-http-solver-vjft9   registry.test.com             80        10m\r\ngitlab      gitlab-minio                minio.test.com                80, 443   11m\r\ngitlab      gitlab-registry             registry.test.com             80, 443   11m\r\ngitlab      gitlab-unicorn              gitlab.test.com               80, 443   11m\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<h4>\u5148\u5c06gitlab-runner\u7684pod\u6682\u65f6\u6302\u8d77\u3002<\/h4>\n<p>\u67e5\u770b\u65e5\u5fd7\u540e\u53d1\u73b0\u6b63\u5728\u5c1d\u8bd5\u8bbf\u95eeGitLab\u672c\u4f53(gitlab.test.com)\u3002<br \/>\n\u4e3a\u4e86\u80fd\u591f\u4ecegitlab-runner\u7684pod\u4e2d\u89e3\u6790gitlab.test.com\uff0c\u6700\u597d\u5c06runner\u7684\u526f\u672c\u6570\u8bbe\u7f6e\u4e3a0\uff0c\u5c06pod\u6570\u8bbe\u7f6e\u4e3a0\uff0c\u56e0\u4e3a\u6211\u4eec\u76ee\u524d\u4e0d\u4f7f\u7528runner\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl logs <span class=\"nt\">-f<\/span> gitlab-gitlab-runner-544fd9dcb5-92lxf <span class=\"nt\">-n<\/span> gitlab\r\nRuntime platform                                    <span class=\"nb\">arch<\/span><span class=\"o\">=<\/span>amd64 <span class=\"nv\">os<\/span><span class=\"o\">=<\/span>linux <span class=\"nv\">pid<\/span><span class=\"o\">=<\/span>15 <span class=\"nv\">revision<\/span><span class=\"o\">=<\/span>3afdaba6 <span class=\"nv\">version<\/span><span class=\"o\">=<\/span>11.5.0\r\nWARNING: Running <span class=\"k\">in <\/span>user-mode.\r\nWARNING: The user-mode requires you to manually start builds processing:\r\nWARNING: <span class=\"nv\">$ <\/span>gitlab-runner run\r\nWARNING: Use <span class=\"nb\">sudo <\/span><span class=\"k\">for <\/span>system-mode:\r\nWARNING: <span class=\"nv\">$ <\/span><span class=\"nb\">sudo <\/span>gitlab-runner...\r\n\r\nERROR: Registering runner... failed                 <span class=\"nv\">runner<\/span><span class=\"o\">=<\/span>Ixy5TRFT <span class=\"nv\">status<\/span><span class=\"o\">=<\/span>couldn<span class=\"s1\">'t execute POST against https:\/\/gitlab.test.com\/api\/v4\/runners: Post https:\/\/gitlab.test.com\/api\/v4\/runners: dial tcp 10.107.221.8:443: i\/o timeout\r\nPANIC: Failed to register this runner. Perhaps you are having network problems\r\n$\r\n<\/span><\/code><\/pre>\n<pre class=\"post-pre\"><code>$ kubectl get deployment gitlab-gitlab-runner -n gitlab\r\nNAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE\r\ngitlab-gitlab-runner   1         1         1            0           2h\r\n$\r\n$ kubectl edit deployment gitlab-gitlab-runner -n gitlab\r\ndeployment \"gitlab-gitlab-runner\" edited\r\n$ kubectl get deployment gitlab-gitlab-runner -n gitlab\r\nNAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE\r\ngitlab-gitlab-runner   0         0         0            0           2h\r\n$\r\n<\/code><\/pre>\n<h2>\u7ed9LoadBalancer\u5206\u914d\u4e00\u4e2aEXTERNAL-IP\u3002<\/h2>\n<p>\u5728minikube\u4e2d\u65e0\u6cd5\u83b7\u5f97\u5206\u914d\uff0c\u53ea\u6709\u5728GKE\u7b49\u8fdb\u884c\u90e8\u7f72\u65f6\u624d\u4f1a\u88ab\u5206\u914d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get svc gitlab-nginx-ingress-controller <span class=\"nt\">-n<\/span> gitlab\r\nNAME                              TYPE           CLUSTER-IP      EXTERNAL-IP     PORT<span class=\"o\">(<\/span>S<span class=\"o\">)<\/span>                                   AGE\r\ngitlab-nginx-ingress-controller   LoadBalancer   10.106.203.63   &lt;pending&gt;        80:32693\/TCP,443:31602\/TCP,22:32479\/TCP   44m\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>\u8fd9\u91cc\u7ed9\u6240\u6709\u7684minikube\u7528\u6237\u5e26\u6765\u4e00\u4e2a\u597d\u6d88\u606f\u3002<br \/>\n\u6709\u4e00\u4e2a\u53ef\u4ee5\u5c06CLUSTER-IP\u8bbe\u7f6e\u4e3aLoadBalancer\u7684EXTERNAL-IP\u7684pod image\u5df2\u7ecf\u53d1\u5e03\u4e86\u3002<br \/>\n\u8ba9\u6211\u4eec\u5c1d\u8bd5\u90e8\u7f72\u4e00\u4e0b\u8fd9\u4e2a\u3002<br \/>\nelsonrodriguez\/minikube-lb-patch\u3002<\/p>\n<p>\u5728\u90e8\u7f72\u4e4b\u524d\uff0c\u8d1f\u8f7d\u5747\u8861\u5668\u7684\u72b6\u6001\/\u8d1f\u8f7d\u5747\u8861\u5668\/\u4e0b\u6ca1\u6709\u4efb\u4f55\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get svc gitlab-nginx-ingress-controller <span class=\"nt\">-n<\/span> gitlab <span class=\"nt\">-o<\/span> yaml\r\napiVersion: v1\r\nkind: Service\r\nmetadata:\r\n  creationTimestamp: 2019-01-14T13:03:34Z\r\n  labels:\r\n    app: nginx-ingress\r\n    chart: nginx-ingress-0.30.0-1\r\n    component: controller\r\n    heritage: Tiller\r\n    release: gitlab\r\n  name: gitlab-nginx-ingress-controller\r\n  namespace: gitlab\r\n  resourceVersion: <span class=\"s2\">\"756\"<\/span>\r\n  selfLink: \/api\/v1\/namespaces\/gitlab\/services\/gitlab-nginx-ingress-controller\r\n  uid: ccd6c290-17fc-11e9-8bab-080027a0645f\r\nspec:\r\n  clusterIP: 10.106.203.63\r\n  externalTrafficPolicy: Local\r\n  healthCheckNodePort: 30556\r\n  ports:\r\n  - name: http\r\n    nodePort: 32693\r\n    port: 80\r\n    protocol: TCP\r\n    targetPort: http\r\n  - name: https\r\n    nodePort: 31602\r\n    port: 443\r\n    protocol: TCP\r\n    targetPort: https\r\n  - name: gitlab-shell\r\n    nodePort: 32479\r\n    port: 22\r\n    protocol: TCP\r\n    targetPort: gitlab-shell\r\n  selector:\r\n    app: nginx-ingress\r\n    component: controller\r\n    release: gitlab\r\n  sessionAffinity: None\r\n  <span class=\"nb\">type<\/span>: LoadBalancer\r\nstatus:\r\n  loadBalancer: <span class=\"o\">{}<\/span>\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>\u90e8\u7f72<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl run minikube-lb-patch <span class=\"nt\">--replicas<\/span><span class=\"o\">=<\/span>1 <span class=\"nt\">--image<\/span><span class=\"o\">=<\/span>elsonrodriguez\/minikube-lb-patch:0.1 <span class=\"nt\">--namespace<\/span><span class=\"o\">=<\/span>kube-system\r\ndeployment <span class=\"s2\">\"minikube-lb-patch\"<\/span> created\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>\u90e8\u7f72\u5b8c\u6210\u540e\uff0c<br \/>\n\u5728LoadBalancer\u7684status\/loadBalancer\/\u4e0b\uff0cingress\u7684ip\u88ab\u8bbe\u7f6e\u4e3aclusterIP\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get svc gitlab-nginx-ingress-controller <span class=\"nt\">-n<\/span> gitlab <span class=\"nt\">-o<\/span> yaml\r\napiVersion: v1\r\nkind: Service\r\nmetadata:\r\n  creationTimestamp: 2019-01-14T13:03:34Z\r\n  labels:\r\n    app: nginx-ingress\r\n    chart: nginx-ingress-0.30.0-1\r\n    component: controller\r\n    heritage: Tiller\r\n    release: gitlab\r\n  name: gitlab-nginx-ingress-controller\r\n  namespace: gitlab\r\n  resourceVersion: <span class=\"s2\">\"3591\"<\/span>\r\n  selfLink: \/api\/v1\/namespaces\/gitlab\/services\/gitlab-nginx-ingress-controller\r\n  uid: ccd6c290-17fc-11e9-8bab-080027a0645f\r\nspec:\r\n  clusterIP: 10.106.203.63\r\n  externalTrafficPolicy: Local\r\n  healthCheckNodePort: 30556\r\n  ports:\r\n  - name: http\r\n    nodePort: 32693\r\n    port: 80\r\n    protocol: TCP\r\n    targetPort: http\r\n  - name: https\r\n    nodePort: 31602\r\n    port: 443\r\n    protocol: TCP\r\n    targetPort: https\r\n  - name: gitlab-shell\r\n    nodePort: 32479\r\n    port: 22\r\n    protocol: TCP\r\n    targetPort: gitlab-shell\r\n  selector:\r\n    app: nginx-ingress\r\n    component: controller\r\n    release: gitlab\r\n  sessionAffinity: None\r\n  <span class=\"nb\">type<\/span>: LoadBalancer\r\nstatus:\r\n  loadBalancer:\r\n    ingress:\r\n    - ip: 10.106.203.63\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>\u6211\u5011\u53ef\u4ee5\u770b\u5230\uff0c\u5c0d\u65bcEXTERNAL-IP\uff0c\u5206\u914d\u4e86CLUSTER-IP\u7684\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get svc gitlab-nginx-ingress-controller <span class=\"nt\">-n<\/span> gitlab\r\nNAME                                      TYPE           CLUSTER-IP       EXTERNAL-IP     PORT<span class=\"o\">(<\/span>S<span class=\"o\">)<\/span>                                   AGE\r\ngitlab-nginx-ingress-controller           LoadBalancer   10.106.203.63    10.106.203.63   80:32693\/TCP,443:31602\/TCP,22:32479\/TCP   17m\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<p>Ingress\u4e5f\u6dfb\u52a0\u4e86\u5730\u5740\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl get ing -n gitlab\r\nNAME                        HOSTS               ADDRESS         PORTS     AGE\r\ncm-acme-http-solver-khlqr   gitlab.test.com     10.106.203.63   80        16m\r\ncm-acme-http-solver-mvq5r   minio.test.com      10.106.203.63   80        16m\r\ncm-acme-http-solver-vjft9   registry.test.com   10.106.203.63   80        16m\r\ngitlab-minio                minio.test.com      10.106.203.63   80, 443   17m\r\ngitlab-registry             registry.test.com   10.106.203.63   80, 443   17m\r\ngitlab-unicorn              gitlab.test.com     10.106.203.63   80, 443   17m\r\n$\r\n<\/code><\/pre>\n<h2>\u521b\u5efa\u5230EXTERNAL-IP\u7684\u8def\u5f84<\/h2>\n<p>\u5c3d\u7ba1\u5206\u914d\u4e86EXTERNAL-IP\uff0c\u4f46\u5176\u503c\u4ecd\u4e3aCLUSTER-IP\uff0c\u56e0\u6b64\u9700\u8981\u521b\u5efa\u4ece\u96c6\u7fa4\u5916\u5230\u96c6\u7fa4\u5185EXTERNAL-IP\u7684\u8def\u5f84\u3002\u53e6\u5916\uff0c\u8fd8\u9700\u786e\u4fdd\u53ef\u4ee5\u901a\u8fc7\u4e3b\u673a\u540dgitlab.test.com\u8fdb\u884c\u8bbf\u95ee\u3002<\/p>\n<h3>\u6dfb\u52a0\u5230hosts\u6587\u4ef6<\/h3>\n<p>\u8bf7\u7f16\u8f91\/etc\/hosts\u6587\u4ef6\uff0c\u5e76\u5c06EXTERNAL-IP\u8bbe\u7f6e\u4e3a\u4ee5\u4e0b\u4e3b\u673a\u7684IP\u5730\u5740\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">gitlab.test.com<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">minio.test.com<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">registry.test.com<\/ul>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">sudo <\/span>vim \/etc\/hosts\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cat<\/span> \/etc\/hosts\r\n<span class=\"o\">(<\/span> \u7565 <span class=\"o\">)<\/span>\r\n10.106.203.63   gitlab.test.com\r\n10.106.203.63   minio.test.com\r\n10.106.203.63   registry.test.com\r\n<span class=\"o\">(<\/span> \u7565 <span class=\"o\">)<\/span>\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<h3>\u5c06\u4fe1\u606f\u6dfb\u52a0\u5230\u8def\u7531\u8868\u4e2d<\/h3>\n<p>\u5c06\u8def\u7531\u8868\u4e2d\u6dfb\u52a0\u5230EXTERNAL-IP\u7684\u8def\u7531\u8def\u5f84\u3002<\/p>\n<p>\u8ffd\u524d<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"nb\">sudo <\/span>route\r\nKernel IP routing table\r\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\r\ndefault         gateway         0.0.0.0         UG    20100  0        0 enp0s31f6\r\nlink-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp0s31f6\r\n172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0\r\n172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-dd3ae712d9ae\r\n192.168.3.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s31f6\r\n192.168.99.0    0.0.0.0         255.255.255.0   U     0      0        0 vboxnet0\r\n<\/code><\/pre>\n<p>\u53c2\u8003\u81eaelsonrodriguez\/minikube-lb-patch\u7684\u8ffd\u52a0\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ ServiceCIDR<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">cat<\/span> ~\/.minikube\/profiles\/minikube\/config.json | jq <span class=\"nt\">-r<\/span> <span class=\"s2\">\".KubernetesConfig.ServiceCIDR\"<\/span><span class=\"si\">)<\/span>\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">echo<\/span> <span class=\"k\">${<\/span><span class=\"nv\">ServiceCIDR<\/span><span class=\"k\">}<\/span>\r\n10.96.0.0\/12\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">sudo <\/span>route <span class=\"nt\">-n<\/span> add <span class=\"nt\">-net<\/span> <span class=\"k\">${<\/span><span class=\"nv\">ServiceCIDR<\/span><span class=\"k\">}<\/span> gw <span class=\"si\">$(<\/span>minikube ip<span class=\"si\">)<\/span>\r\n<\/code><\/pre>\n<p>\u8ffd\u52a0\u4e4b\u540e<\/p>\n<p>\u6210\u529f\u5730\u6dfb\u52a0\u4e86\u4ee5minikube\u4e3a\u7f51\u5173\u7684\u8def\u5f84\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>route\r\nKernel IP routing table\r\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\r\ndefault         gateway         0.0.0.0         UG    20100  0        0 enp0s31f6\r\n10.96.0.0       minikube        255.240.0.0     UG    0      0        0 vboxnet0\r\nlink-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp0s31f6\r\n172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0\r\n172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-dd3ae712d9ae\r\n192.168.3.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s31f6\r\n192.168.99.0    0.0.0.0         255.255.255.0   U     0      0        0 vboxnet0\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<h2>\u5728\u6d4f\u89c8\u5668\u4e2d\u8bbf\u95ee\u8d1f\u8f7d\u5747\u8861\u5668<\/h2>\n<p>\u6211\u8981\u5728Ubuntu\u673a\u5668\u4e0a\u542f\u52a8Google Chrome\u3002<\/p>\n<pre class=\"post-pre\"><code>$ google-chrome\r\n<\/code><\/pre>\n<p>\u6211\u5c06\u5728\u4e0b\u9762\u9644\u4e0a\u4ece\u4ee5Ubuntu\u4e3a\u542f\u52a8\u7cfb\u7edf\u7684Google Chrome\u8bbf\u95eeminikube\u96c6\u7fa4\u7684\u5c4f\u5e55\u622a\u56fe\u3002\uff08\u7531\u4e8e\u4f7f\u7528X11\u8f6c\u53d1\uff0c\u5c06Google Chrome\u5c4f\u5e55\u4eceUbuntu\uff08minikube\u6b63\u5728\u8fd0\u884c\u7684\u673a\u5668\uff09\u8f6c\u53d1\u5230Windows\uff08\u4ec5\u7528\u4e8e\u5de5\u4f5c\u7684\u673a\u5668\uff09\uff0c\u6240\u4ee5\u5c4f\u5e55\u622a\u56fe\u7684\u5916\u89c2\u770b\u8d77\u6765\u50cf\u662f\u5728Windows\u4e0a\u7684\u5e94\u7528\uff0c\u8bf7\u8c05\u89e3\u3002\uff09<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/83-0.png\" alt=\"01.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/84-0.png\" alt=\"02.png\" \/><\/div>\n<p>\u8fd9\u662f\u767b\u5f55\u754c\u9762\u3002\u7528\u6237\u540d\u8bbe\u4e3aroot\u3002\u5bc6\u7801\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u83b7\u53d6\u3002<br \/>\n\uff08\u5982\u679c\u60a8\u6307\u5b9a\u7684Helm\u547d\u4ee4\u7684\u90e8\u7f72\u540d\u79f0\u4e0d\u662fgitlab\uff0c\u5219\u79d8\u94a5\u540d\u79f0\u4e5f\u4e0d\u540c\uff0c\u8bf7\u6ce8\u610f\u3002\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>kubectl get secret gitlab-gitlab-initial-root-password <span class=\"nt\">-ojsonpath<\/span><span class=\"o\">={<\/span>.data.password<span class=\"o\">}<\/span> <span class=\"nt\">-n<\/span> gitlab | <span class=\"nb\">base64<\/span> <span class=\"nt\">--decode<\/span> <span class=\"p\">;<\/span> <span class=\"nb\">echo\r\n<\/span>xxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/87-0.png\" alt=\"03.png\" \/><\/div>\n<h2>\u786e\u8ba4\u884c\u52a8<\/h2>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/89-0.png\" alt=\"04.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/90-0.png\" alt=\"06.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/91-0.png\" alt=\"07.png\" \/><\/div>\n<p>\u8bf7\u786e\u8ba4\u80fd\u591f\u514b\u9686\u4ed3\u5e93\u3001\u6dfb\u52a0\u6587\u4ef6(README.md)\u3001\u63d0\u4ea4\u5e76\u63a8\u9001(commit &amp; push)\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span><span class=\"c\"># \u6012\u3089\u308c\u308b<\/span>\r\n<span class=\"nv\">$ <\/span>git clone https:\/\/gitlab.test.com\/root\/test.git\r\nCloning into <span class=\"s1\">'test'<\/span>...\r\nfatal: unable to access <span class=\"s1\">'https:\/\/gitlab.test.com\/root\/test.git\/'<\/span>: server certificate verification failed. CAfile: \/etc\/ssl\/certs\/ca-certificates.crt CRLfile: none\r\n<span class=\"nv\">$ <\/span><span class=\"c\"># \u975e\u63a8\u5968<\/span>\r\n<span class=\"nv\">$ <\/span>git config <span class=\"nt\">--global<\/span> http.sslverify <span class=\"nb\">false<\/span>\r\n<span class=\"nv\">$ <\/span><span class=\"c\"># clone \u3067\u304d\u308b<\/span>\r\n<span class=\"nv\">$ <\/span>git clone https:\/\/gitlab.test.com\/root\/test.git\r\nCloning into <span class=\"s1\">'test'<\/span>...\r\nUsername <span class=\"k\">for<\/span> <span class=\"s1\">'https:\/\/gitlab.test.com'<\/span>: root\r\nPassword <span class=\"k\">for<\/span> <span class=\"s1\">'https:\/\/root@gitlab.test.com'<\/span>:\r\nwarning: You appear to have cloned an empty repository.\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cd<\/span> .\/test\/\r\n<span class=\"nv\">$ <\/span>vim README.md\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">cat <\/span>README.md\r\n<span class=\"c\"># test<\/span>\r\n\r\nGitLab <span class=\"nb\">test<\/span>\r\n<span class=\"nv\">$ <\/span>git add README.md\r\n<span class=\"nv\">$ <\/span>git commit <span class=\"nt\">-m<\/span> <span class=\"s2\">\"add\"<\/span>\r\n<span class=\"o\">[<\/span>master <span class=\"o\">(<\/span>root-commit<span class=\"o\">)<\/span> ca0f2bd] add\r\n 1 file changed, 3 insertions<span class=\"o\">(<\/span>+<span class=\"o\">)<\/span>\r\n create mode 100644 README.md\r\n<span class=\"nv\">$ <\/span>git push\r\nUsername <span class=\"k\">for<\/span> <span class=\"s1\">'https:\/\/gitlab.test.com'<\/span>: root\r\nPassword <span class=\"k\">for<\/span> <span class=\"s1\">'https:\/\/root@gitlab.test.com'<\/span>:\r\nCounting objects: 3, <span class=\"k\">done<\/span><span class=\"nb\">.<\/span>\r\nWriting objects: 100% <span class=\"o\">(<\/span>3\/3<span class=\"o\">)<\/span>, 217 bytes | 217.00 KiB\/s, <span class=\"k\">done<\/span><span class=\"nb\">.<\/span>\r\nTotal 3 <span class=\"o\">(<\/span>delta 0<span class=\"o\">)<\/span>, reused 0 <span class=\"o\">(<\/span>delta 0<span class=\"o\">)<\/span>\r\nTo https:\/\/gitlab.test.com\/root\/test.git\r\n <span class=\"k\">*<\/span> <span class=\"o\">[<\/span>new branch]      master -&gt; master\r\n<span class=\"err\">$<\/span>\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/94-0.png\" alt=\"08.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/95-0.png\" alt=\"09.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/96-0.png\" alt=\"10.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/97-0.png\" alt=\"11.png\" \/><\/div>\n<h2>\u603b\u7ed3<\/h2>\n<p>\u5e0c\u671b\u80fd\u591f\u901a\u8fc7\u4f53\u9a8c\u4e91\u539f\u751f\u6f6e\u6d41\u7684\u65b9\u5f0f\uff0c\u5c1d\u8bd5\u90e8\u7f72GitLab\u3002<br \/>\n\u5982\u679c\u8fd9\u4efd\u6700\u65b0\u7684GitLab\u90e8\u7f72\u65b9\u6cd5\u5bf9\u60a8\u6709\u5e2e\u52a9\uff0c\u6211\u5c06\u611f\u5230\u975e\u5e38\u6b23\u6170\u3002<\/p>\n<p>\u867d\u7136Minikube\u4e0d\u5bb9\u6613\u5206\u914d\u5916\u90e8IP\uff0c\u4f46\u65e0\u9700\u62c5\u5fc3\u8d39\u7528\uff0c\u8fd9\u662f\u4e00\u4e2a\u5f88\u597d\u7684\u5730\u65b9\u3002<br \/>\n\u7531\u4e8e\u53ef\u4ee5\u81ea\u7531\u66f4\u6539\u914d\u7f6e\uff0c\u6211\u8ba4\u4e3a\u5b83\u7279\u522b\u9002\u5408\u5b66\u4e60\u548c\u5b9e\u9a8c\u76ee\u7684\u3002<br \/>\n\u6211\u4e5f\u5e0c\u671b\u80fd\u7ee7\u7eed\u5c1d\u8bd5Serverless\u7684\u529f\u80fd\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4f60\u5728\u505a\u4ec0\u4e48\uff1f \u5927\u5bb6\u90fd\u662f\u4e91\u539f\u751f\u5417\uff1f GitLab 11.6\u53d1\u5e03\u4e86\u53ef\u4ee5\u5c06Serverless\u5e94\u7528\u90e8\u7f72\u5230Kubern [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-43709","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f - Blog - Silicon Cloud<\/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:\/\/www.silicloud.com\/zh\/blog\/\u5f00\u59cb\u8ba4\u771f\u5730\u5c06gitlab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f\" \/>\n<meta property=\"og:description\" content=\"\u4f60\u5728\u505a\u4ec0\u4e48\uff1f \u5927\u5bb6\u90fd\u662f\u4e91\u539f\u751f\u5417\uff1f GitLab 11.6\u53d1\u5e03\u4e86\u53ef\u4ee5\u5c06Serverless\u5e94\u7528\u90e8\u7f72\u5230Kubern [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5f00\u59cb\u8ba4\u771f\u5730\u5c06gitlab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-14T13:31:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T07:39:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/83-0.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u96c5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u96c5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/\",\"name\":\"\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-03-14T13:31:27+00:00\",\"dateModified\":\"2024-04-29T07:39:35+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\",\"name\":\"\u79d1, \u96c5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u96c5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f - Blog - Silicon Cloud","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:\/\/www.silicloud.com\/zh\/blog\/\u5f00\u59cb\u8ba4\u771f\u5730\u5c06gitlab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f","og_description":"\u4f60\u5728\u505a\u4ec0\u4e48\uff1f \u5927\u5bb6\u90fd\u662f\u4e91\u539f\u751f\u5417\uff1f GitLab 11.6\u53d1\u5e03\u4e86\u53ef\u4ee5\u5c06Serverless\u5e94\u7528\u90e8\u7f72\u5230Kubern [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5f00\u59cb\u8ba4\u771f\u5730\u5c06gitlab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-03-14T13:31:27+00:00","article_modified_time":"2024-04-29T07:39:35+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d547337434c4406cd2f47\/83-0.png"}],"author":"\u79d1, \u96c5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u96c5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"11 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/","name":"\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-03-14T13:31:27+00:00","dateModified":"2024-04-29T07:39:35+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5f00\u59cb\u8ba4\u771f\u5730\u5c06GitLab\u4e91\u539f\u751f\u5316\u4e0d\u662f\u65f6\u5019\u4e86\u5417\uff1f"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a","name":"\u79d1, \u96c5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","caption":"\u79d1, \u96c5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%bc%80%e5%a7%8b%e8%ae%a4%e7%9c%9f%e5%9c%b0%e5%b0%86gitlab%e4%ba%91%e5%8e%9f%e7%94%9f%e5%8c%96%e4%b8%8d%e6%98%af%e6%97%b6%e5%80%99%e4%ba%86%e5%90%97%ef%bc%9f\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=43709"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43709\/revisions"}],"predecessor-version":[{"id":86150,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43709\/revisions\/86150"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=43709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=43709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=43709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}