<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6014366374670463842</id><updated>2024-12-18T19:32:44.098-08:00</updated><category term="Node.js"/><category term="Android"/><category term="Linux"/><category term="Cloud"/><category term="MacOS"/><category term="Shell Script"/><category term="Java"/><category term="Java Script"/><category term="MySQL"/><category term="jQuery"/><category term="Nginx"/><category term="Oracle"/><category term="Xoom"/><category term="Life"/><category term="Network"/><category term="NoSQL"/><category term="Windows"/><category term="HTML"/><category term="Hibernate"/><category term="Weblogic"/><category term="Other"/><category term="Python"/><category term="docker"/><category term="Google"/><category term="Java Struts"/><category term="Jython"/><category term="Link"/><category term="MSSQL"/><category term="Spring"/><category term="iOS"/><title type='text'>知識過客</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://peihsinsu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>254</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-2276464020610150040</id><published>2018-02-19T23:43:00.003-08:00</published><updated>2018-02-19T23:51:53.586-08:00</updated><title type='text'>新一代LB - Traefik</title><content type='html'>&lt;h1 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-left: 0px; margin-right: 0px; margin-top: 0px !important;&quot;&gt;
新一代LB&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;-&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;Traefik&lt;/h1&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
Traefik突破以往我們對load&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;balancer的觀點，他是一套直接與docker整合的load&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;balancer套件...&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;透過Traefik，我們可以使用label的方式將後面啟動的docker&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;instance掛載到loadbalancer中，且無需重新啟動Traefik，可直接生效...&lt;/div&gt;
&lt;h2 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Traefik基本介紹&lt;/h2&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
Traefik是以動態重載新加入的docker&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;instance的方式來替有附加相同domain&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;label的dockerinstance建立網路附載平衡的關聯...&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;因此，設定上，與一般我們建立reverse&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;proxy的過程剛好相反(一般我們會先建立服務，再建立reverse&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;proxy將服務串連起來)...&lt;/div&gt;
&lt;h3 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Step1&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;-&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;建立Traefik服務&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
下面我們用官方的compose&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;file來說明...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
File:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;docker-compose.yaml&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;version: &#39;2&#39;

services:
  proxy:
    image: traefik
    command: --api --docker --docker.domain=docker.localhost --logLevel=DEBUG
    networks:
      - webgateway
    ports:
      - &quot;80:80&quot;
      - &quot;8080:8080&quot;
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /dev/null:/traefik.toml

networks:
  webgateway:
    driver: bridge&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
其中traefik啟動時候，我們需要指定docker.domain來告訴taefik要聆聽的domain是哪一個，然後要事先開啟對應的port，讓外部服務可以連到traefik...，另外，我們將dockersocket掛載進來，這是必要的設定，讓traefik可以透過docker&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;socket來操控一些東西...，最後，traefik.toml檔案，我們保留空的，讓treafik自己建立...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
啟動：&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker-compose -f docker-compose.yaml up -d&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Step2&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;-&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;建立你的服務並加入Traefik&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接下來，我們可以啟動我們的服務(ex:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;網站)，讓traefik掛載...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
File:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;whoami.yaml&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;version: &#39;2&#39;

services:
  whoami:
    image: emilevauge/whoami
    networks:
      - web
    labels:
      - &quot;traefik.backend=whoami&quot;
      - &quot;traefik.frontend.rule=Host:whoami.docker.localhost&quot;

networks:
  web:
    external:
      name: traefik_webgateway&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
官方的說明是以whoami為例，他會顯示你連入的http協定與主機資訊...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
上述的設定中，指定traefik的backend為whoami這個service，並且指定fontend&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;rule為whoami.docker.local...&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;這個呼應traefik啟動時候所指定的domain，讓traefik可以知道該container&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;instance要加入這個domain的路由群組...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
啟動：&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker-compose -f whoami.yaml up -d&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接下來你就可以用下面的方式測試&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;curl -H Host:whoami.docker.localhost http://127.0.0.1&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
這邊比較特別的是，traefik是透過domain的方式掛載你的服務，因此我們必須透過指定domain的方式來存取，如果使用curl，最快的就是加上Host header... 如果需要使用網路，那Mac的用戶建議修改/etc/hosts來對應whoami.docker.localhost到127.0.0.1... Windiws用戶可以參考&lt;a href=&quot;http://blog.xuite.net/vexed/tech/22067064-%E5%9C%A8+Windows+XP+%E7%89%B9%E5%AE%9A+Domain+%E8%B7%B3%E9%81%8E+DNS+%E7%9B%B4%E6%8E%A5%E9%80%A3%E5%BE%80%E6%8C%87%E5%AE%9A%E7%9A%84+IP&quot; style=&quot;background: 0px 0px; box-sizing: border-box; color: #4183c4; font-size: inherit; text-decoration-line: none;&quot;&gt;相關設定&lt;/a&gt;。&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
官方文件中，另外還針對service做scale&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;out，讓traefik可以round&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;rabin的跑在scale出來的instance上，對於使用docker作為操控的開發者來說，真的相當方便唷！&lt;/div&gt;
&lt;h2 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Traefik透過LetsEncrypt啟用SSL&lt;/h2&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
下面介紹以啟用SSL憑證到Traefik服務為主...&lt;/div&gt;
&lt;h3 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
準備動作&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
建立自己的network，讓其他後續啟動的instance可以共用這個network...&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker network create web&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
建立docker-compose.yaml,&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;traefik.toml,&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;acme.json三個檔案...&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;該三個檔案需要在traefik啟動時候用到，下面會說明compose&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;file跟toml檔案的內容...&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;acme.json只要保持空的即可...&lt;/div&gt;
&lt;h3 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
啟動Traefik&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
首先介紹Traefik的compose&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;file，Traefik是透過掛載docker&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;volume的方式來操控docker的實體，聆聽新加入的docker服務的相關資訊，再加上相關的load&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;balancer設定來轉導相關的流量到指定的instance...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
File:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;docker-compose.yaml&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;version: &#39;2&#39;
services:
  traefik:
    image: traefik
    restart: always
    ports:
      - 80:80
      - 443:443
    networks:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/traefik/traefik.toml:/traefik.toml
      - /opt/traefik/acme.json:/acme.json
    container_name: traefik
networks:
  web:
    external: true&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
traefik.yaml是traefik的設定檔案，下面描述要開啟http,&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;https的協定，並且聆聽label中domain為arecord.us的instance，將它掛載到traefik中...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
File:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;traefik.toml&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;debug = true 
logLevel = &quot;INFO&quot;
defaultEntryPoints = [&quot;https&quot;,&quot;http&quot;]
[entryPoints]
  [entryPoints.http]
  address = &quot;:80&quot;
    [entryPoints.http.redirect]
    entryPoint = &quot;https&quot;
  [entryPoints.https]
  address = &quot;:443&quot;
  [entryPoints.https.tls]
[retry]
[docker]
endpoint = &quot;unix:///var/run/docker.sock&quot;
domain = &quot;arecord.us&quot; #掛載你的domain
watch = true
exposedbydefault = false
[acme]
email = &quot;simonsu@arecord.us&quot; #你的信箱
storage = &quot;acme.json&quot;
entryPoint = &quot;https&quot;
OnHostRule = true
[acme.httpChallenge]
entryPoint = &quot;http&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
啟動：&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker-compose -f docker-compose.yaml up -d&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
啟動後，除非有打開traefik的管理介面，不然目前瀏覽應該都是404的錯誤ㄛ...，我們再往下，啟動backend的服務後，才可以瀏覽...&lt;/div&gt;
&lt;h3 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
啟動你的docker&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;instance&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接著，我們可以啟動我們自己的服務...&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;下面以nginx為例，希望將網站掛載到gcpdemo.arecord.us這個網域名稱上...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
File:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;web.yaml&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;version: &#39;2&#39;
services:
  gcpdemo:
    image: nginx
    restart: always
    networks:
      - web
      - default
    labels:
      - &quot;traefik.backend=gcpdemo&quot;
      - &quot;traefik.docker.network=web&quot;
      - &quot;traefik.frontend.rule=Host:gcpdemo.arecord.us&quot;
      - &quot;traefik.enable=true&quot;
      - &quot;traefik.default.protocol=http&quot;
networks:
  web:
    external: true&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
上述的設定檔中，指定traefik要掛載名為gcpdemo的instance，並且使用web這個network...最重要的是frontend&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;rule這段，是指定真實打到該主機外部IP的domain(因此我們還是需要到DNS&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;server上指定一筆紀錄，讓gcpdemo.arecord.us這個domain可以對應到這台機器的實體ip)...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
啟動：&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker-compose -f web.yaml up -d&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
啟動後，需要稍微等待traefik跟LetsEncrypt取回SSL憑證，接下來就可以直接使用&lt;a href=&quot;https://gcpdemo.arecord.us/&quot; style=&quot;background: 0px 0px; box-sizing: border-box; color: #4183c4; font-size: inherit; text-decoration-line: none;&quot;&gt;https://gcpdemo.arecord.us&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;來瀏覽您的網站了！&lt;/div&gt;
&lt;h2 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
參考&lt;/h2&gt;
&lt;ul style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px 0px 0px 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; font-size: inherit;&quot;&gt;官方文件 -&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://docs.traefik.io/&quot; style=&quot;background: 0px 0px; box-sizing: border-box; color: #4183c4; font-size: inherit; text-decoration-line: none;&quot;&gt;https://docs.traefik.io/&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; font-size: inherit;&quot;&gt;官方文件 - 設定Traefik SSL:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://docs.traefik.io/user-guide/docker-and-lets-encrypt/&quot; style=&quot;background: 0px 0px; box-sizing: border-box; color: #4183c4; font-size: inherit; text-decoration-line: none;&quot;&gt;https://docs.traefik.io/user-guide/docker-and-lets-encrypt/&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; font-size: inherit;&quot;&gt;本文同步刊登於Gitbook：&lt;a href=&quot;https://peihsinsu.gitbooks.io/docker-note-book/content/xin-yi-dai-lb-traefik.html&quot;&gt;https://peihsinsu.gitbooks.io/docker-note-book/content/xin-yi-dai-lb-traefik.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2276464020610150040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2276464020610150040'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2018/02/lb-traefik.html' title='新一代LB - Traefik'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-3546192452058282319</id><published>2018-02-19T23:41:00.000-08:00</published><updated>2018-02-19T23:41:11.441-08:00</updated><title type='text'>Auto SSL - Using OpenResty</title><content type='html'>&lt;h1 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-left: 0px; margin-right: 0px; margin-top: 0px !important;&quot;&gt;
Auto&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;SSL&lt;/h1&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
Auto SSL中，目前筆者有接觸過的是&lt;a href=&quot;https://letsencrypt.org/&quot; style=&quot;background: 0px 0px; box-sizing: border-box; color: #4183c4; font-size: inherit; text-decoration-line: none;&quot;&gt;LetsEncrypt&lt;/a&gt;的服務，設定上可以搭配&lt;a href=&quot;https://certbot.eff.org/&quot; style=&quot;background: 0px 0px; box-sizing: border-box; color: #4183c4; font-size: inherit; text-decoration-line: none;&quot;&gt;CertBot&lt;/a&gt;來做設定... 當然有更簡單的方式...&lt;/div&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
下面是Github上的公開專案，是基於OpenResty與Lua開發的工具，可以讓我們透過LetsEncrypt自動附加、更新SSL憑證，一切的一切，只需要把server啟動即可...&lt;/div&gt;
&lt;h2 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Step1&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;-&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;下載專案&lt;/h2&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
由於該專案並未有太多其他附加的設定，我們可以直接下載該專案然後做修改，或是fork到自己的repo做其他開發...&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;$ git clone https://github.com/rmoriz/docker_openresty_autossl&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Step2&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;-&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;建立自己的docker&lt;/h2&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
待需要修改的部分完成，我們可以在本機將他build成docker&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;image供後續使用...&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;$ cd docker_openresty_autossl
$ docker build -t autossl .&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Step3&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;-&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;啟動docker&lt;/h2&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
最後，我們只需要將該docker&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;image啟動，即可同時有HTTPS與HTTP協定的入口...&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;$ docker run -d -p 80:80 -p 443:443 rmoriz/openresty_autossl&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
其中，由於openresty的設定檔與nginx的設定相同，我們可以參考nginx.conf然後修改掛載我們需要載入的virtual&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;host相關設定，讓openresty可以Load&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;Balance我們所要提供的服務。&lt;/div&gt;
&lt;h2 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
注意事項&lt;/h2&gt;
&lt;ul style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px 0px 0px 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; font-size: inherit;&quot;&gt;由於此模組會需要在公網上認證該Domain的設定，因此，我們必須要讓DNS可以指定到一個可以聯繫到該主機的地方... 換句話說... 如果想要用127.0.0.1測試就會有問題... 因為DNS反解後外部仍無法聯繫到該IP...&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/3546192452058282319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/3546192452058282319'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2018/02/auto-ssl-using-openresty.html' title='Auto SSL - Using OpenResty'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-38901888091374481</id><published>2017-10-24T05:38:00.002-07:00</published><updated>2017-10-24T05:38:36.079-07:00</updated><title type='text'>使用 minikube 輕鬆上手 kubernetes</title><content type='html'>&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;安裝minikube&lt;/span&gt;&lt;/h2&gt;
&lt;b id=&quot;docs-internal-guid-76ac40f0-4e63-6bff-2caa-cd23f5369621&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;macOS只需要透過brew即可快速安裝... &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;brew&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; cask install minikube&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Linux環境可以直接下載執行檔，放到環境變數可以吃到的路徑即可...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;curl -Lo minikube &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 &amp;amp;&amp;amp; \&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;chmod +x minikube &amp;amp;&amp;amp; \&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;sudo mv minikube /usr/local/bin/&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Windows的下載網址如下：&lt;/span&gt;&lt;/div&gt;
&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;a href=&quot;https://storage.googleapis.com/minikube/releases/latest/minikube-windows-amd64.exe&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://storage.googleapis.com/minikube/releases/latest/minikube-windows-amd64.exe&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;如果您的kubectl尚未安裝，可以直接使用google cloud sdk來安裝：&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; https://sdk.cloud.google.com | bash&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcloud components install kubectl&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;安裝完成後，原則上minikube會在本地端加入minikube的k8s context，我們可以透過下面指令來使用該context…&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;kubectl config &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; minikube&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;然後，可檢查一下您的minikube node是否正常運作....&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ kubectl get node -o wide&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS &amp;nbsp;&amp;nbsp;&amp;nbsp;AGE &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VERSION &amp;nbsp;&amp;nbsp;EXTERNAL-&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #397300; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;IP&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;OS-IMAGE &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KERNEL-VERSION&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube &amp;nbsp;&amp;nbsp;Ready &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2d&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;v1&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.7.5&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;none&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Buildroot &lt;/none&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2017.02&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4.9&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.13&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;基本使用&lt;/span&gt;&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;由於這邊主要介紹minikube，先暫時不介紹kubernetes的概念與操作... 有需要可以先切換到kubernetes的基本篇來看看＾＾ &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;在minikube中，有提供一些不錯的工具，可以供您操作minikube的環境... 我們可以用minikube help來檢視可以使用的指令...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ minikube help&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Minikube is a CLI tool that provisions and manages single-node Kubernetes clusters optimized &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; development workflows.&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Usage:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;minikube [command]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Available Commands:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;addons &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Modify minikube&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;s&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; kubernetes addons&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;completion &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Outputs minikube shell completion &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; the given shell (bash)&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;config &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Modify minikube config&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;dashboard &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Opens/displays the kubernetes dashboard URL &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; your local cluster&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;delete &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Deletes a local kubernetes cluster&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;docker-env &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sets up docker env variables; similar to &#39;$(docker-machine env)&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;get-k8s-versions Gets the list of available kubernetes versions available &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; minikube&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;ip &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Retrieves the IP address of the running cluster&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;logs &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Gets the logs of the running localkube instance, used &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; debugging minikube, not user code&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;mount &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Mounts the specified directory into minikube&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;profile &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Profile sets the current minikube profile&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;service &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Gets the kubernetes URL(s) &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; the specified service &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; your local cluster&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;ssh &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log into or run a command on a machine with SSH; similar to &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;docker&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;-machine ssh&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;ssh-key &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Retrieve the ssh identity key path of the specified cluster&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;start &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Starts a local kubernetes cluster&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;status &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Gets the status of a local kubernetes cluster&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;stop &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Stops a running local kubernetes cluster&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;update-context &amp;nbsp;&amp;nbsp;Verify the IP address of the running cluster &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; kubeconfig.&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;version &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Print the version of minikube&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Flags:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--alsologtostderr &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log to standard error &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; well &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; files&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;-b, --bootstrapper string &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The name of the cluster bootstrapper that will set up the kubernetes cluster. (&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;localkube&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--log_backtrace_at traceLocation &amp;nbsp;&amp;nbsp;when logging hits line file:N, emit a stack trace (&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--log_dir string &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If non-empty, write log files &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; this directory&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--loglevel int &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log level (&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; = DEBUG, &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; = FATAL) (&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--logtostderr &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log to standard error instead of files&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;-p, --profile string &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The name of the minikube VM being used.&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;This can &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;be&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; modified to allow &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; multiple minikube instances to &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;be&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; run independently (&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;minikube&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--stderrthreshold severity &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logs at or above this threshold go to stderr (&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;-v, --v Level &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log level &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; V logs&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--vmodule moduleSpec &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;comma-separated list of pattern=N settings &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; file-filtered logging&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Use &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;minikube [command] --help&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; more information about a command.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #434343; font-family: Arial; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;啟動與關閉minikube&lt;/span&gt;&lt;/h3&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;畢竟minikube會實際使用主機的資源，如果在不需要操作時候，可以透過stop將minikube關閉，當然，也可以start他...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ minikube &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;stop&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Stopping local Kubernetes cluster...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Machine stopped.&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ minikube &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;start&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Starting local Kubernetes v1.7.5 cluster...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Starting VM...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Getting VM IP address...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Moving files into cluster...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Setting up certs...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Connecting to cluster...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Setting up kubeconfig...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Starting cluster components...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Kubectl is now configured to use the cluster.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #434343; font-family: Arial; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;確認minikube狀態&lt;/span&gt;&lt;/h3&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube啟動後，我們可以透過status來確認目前minikube的執行狀態，他也會同時顯示minikube所在的ip位置...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Running&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;cluster: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Running&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;kubectl: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Correctly&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Configured: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pointing&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube-vm&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;at&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;192.168.99.100&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #434343; font-family: Arial; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;檢視minikube實際ip位置&lt;/span&gt;&lt;/h3&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube另外提供一個更簡單的指令來顯示ip位置，未來可以透過這個指令來結合一些自動化程式...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ minikube &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #397300; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ip&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;192.168&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.99.100&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #434343; font-family: Arial; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;切入minikube所在的linux環境&lt;/span&gt;&lt;/h3&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;由於minikube也是啟動在linux的環境上，所以minikube也提供了讓您連入minikube底層linux的指令...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ minikube ssh&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ( ) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;( )&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;__&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; __&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;) &amp;nbsp;__&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;)| |/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;) &amp;nbsp;_ &amp;nbsp;&amp;nbsp;_ | |_ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;` _ `&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;\| |/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39; _ `\| || , &amp;lt; &amp;nbsp;( ) ( )| &#39;_`\ &amp;nbsp;/&#39;__`&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;\&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;| ( ) ( ) || || ( ) || || |\&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;`\ | (_) || |_) )( &amp;nbsp;___/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(_) (_) (_)(_)(_) (_)(_)(_) (_)`&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;\__&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;(_,__/&#39;`\____)&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #434343; font-family: Arial; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;連線minikube部署的服務&lt;/span&gt;&lt;/h3&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;下面是我們透過簡單的k8s操作來建立起的服務，然後可以展示如何連線到minikube上的應用...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: blue; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ kubectl run nginx --image=nginx --port=80&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;deployment &quot;nginx&quot; created&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ kubectl get all&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;READY &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RESTARTS &amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;po/nginx-1423793266-svb16 &amp;nbsp;&amp;nbsp;0/1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ContainerCreating &amp;nbsp;&amp;nbsp;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1m&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLUSTER-IP &amp;nbsp;&amp;nbsp;EXTERNAL-IP &amp;nbsp;&amp;nbsp;PORT(S) &amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;svc/kubernetes &amp;nbsp;&amp;nbsp;10.0.0.1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;none&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;443/TCP &amp;nbsp;&amp;nbsp;2d&lt;/none&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DESIRED &amp;nbsp;&amp;nbsp;CURRENT &amp;nbsp;&amp;nbsp;UP-TO-DATE &amp;nbsp;&amp;nbsp;AVAILABLE &amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;deploy/nginx &amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1m&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DESIRED &amp;nbsp;&amp;nbsp;CURRENT &amp;nbsp;&amp;nbsp;READY &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;rs/nginx-1423793266 &amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1m&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: blue; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ kubectl expose deploy/nginx --type=NodePort&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;service &quot;nginx&quot; exposed&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ kubectl get all&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;READY &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS &amp;nbsp;&amp;nbsp;&amp;nbsp;RESTARTS &amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;po/nginx-1423793266-svb16 &amp;nbsp;&amp;nbsp;1/1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running &amp;nbsp;&amp;nbsp;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2m&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLUSTER-IP &amp;nbsp;&amp;nbsp;EXTERNAL-IP &amp;nbsp;&amp;nbsp;PORT(S) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;svc/kubernetes &amp;nbsp;&amp;nbsp;10.0.0.1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;none&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;443/TCP &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2d&lt;/none&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;svc/nginx &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.0.0.227 &amp;nbsp;&amp;nbsp;&lt;nodes&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;80:31659/TCP &amp;nbsp;&amp;nbsp;1m&lt;/nodes&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DESIRED &amp;nbsp;&amp;nbsp;CURRENT &amp;nbsp;&amp;nbsp;UP-TO-DATE &amp;nbsp;&amp;nbsp;AVAILABLE &amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;deploy/nginx &amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2m&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DESIRED &amp;nbsp;&amp;nbsp;CURRENT &amp;nbsp;&amp;nbsp;READY &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;rs/nginx-1423793266 &amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2m&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: blue; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ minikube service nginx --url&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://192.168.99.100:31659&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;上面的步驟中，主要是先建立nginx的deployment，然後透過export service來將nginx deployment的端口呈現在minikube的node上... 最後，我們可以透過minikube來show出該service最後binding在哪個位置...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;如果您嚐試建立mysql的服務... 您會發現最後minikube service還是會用http來顯示連線資訊... 這部分是因為service連接layer 4的網路，在協定上有太多可能性.. minikube無法逐一判斷，因此用一個大家最熟悉也最可能的方式呈現，最主要的資訊其實是port，minikube已經很人性化了＾＾... 另外，如果沒有加上”--url”的參數，則minikube會直接使用browser開啟網頁，就可以直接瀏覽了ㄛ＾＾&lt;/span&gt;&lt;/div&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;開啟minikube的擴充套件&lt;/span&gt;&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube提供addons來擴充minikube，我們可以使用minikube addons list來查看哪些addons可以使用... 然後把他enable或是disable...&lt;/span&gt;&lt;/div&gt;
&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #434343; font-family: Arial; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;開啟ingress服務&lt;/span&gt;&lt;/h3&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;上面所介紹的簡單操作，最後minikube service nginx是以k8s service的部分顯示nginx可以連線的位置，由於minikube為單機服務，因此也沒有很需要使用真正的service(真正的service將會有特定的主機擔任traffic forwarding的任務，在開通的過程中，會需要通知該主機把port對應上所要導向的pod… 而在雲服務，service則會與layer 4 load balancer結合...)。而ingress因為為layer 7層的網路服務，其中包含load balancer的特殊功能，因此minikube特地把ingress放在addons list中，讓使用者可以快速的啟用他... 下面是檢視目前addons與啟用ingress的方式...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;# minikube addons list&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- addon-manager: enabled&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- kube-dns: enabled&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- heapster: enabled&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- registry-creds: disabled&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- dashboard: enabled&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- default-storageclass: enabled&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- ingress: enabled&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- registry: disabled&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;# minikube addon &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #397300; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;enable&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ingress&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;啟用後，我們可以再次檢視是否已經完成啟用... 等待一切就緒，我們就可以建立一個ingress來試試...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;首先，我們需要建立ingress的yaml檔案，以上面的nginx服務為例，我們以nginx service來建立80 port的服務對應... 把下面的檔案存成ingress.yaml&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apiVersion: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;extensions/v1beta1&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;kind: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Ingress&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;metadata:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;name: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;nginx&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;spec:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;backend:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;serviceName: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;nginx&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;servicePort: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;80&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;儲存完成後，我們可以透過下面指令將ingress建立起來...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ kubectl &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #397300; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; -f ingress.yaml&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ingress &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;nginx&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; created&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;接下來，我們需要等待一點時間，讓ingress取到可以用的ip位置... &lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; kubectl get ingress&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HOSTS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ADDRESS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PORTS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AGE&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;nginx &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;192.168.99.100 &amp;nbsp;&amp;nbsp;80 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4m&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;然後我們就可以直接連線 http://192.168.99.100 來測試了，沒問題的話，應該可以直接顯示nginx的歡迎畫面...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;由於ingress有不少東西可以玩，這邊不贅述ingress的功能，留給大家試試ingress強大的功能＾＾&lt;/span&gt;&lt;/div&gt;
&lt;h3 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #434343; font-family: Arial; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;開啟heapster服務&lt;/span&gt;&lt;/h3&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;heapster是kubernetes中負責蒐集k8s內container運作的相關資訊的服務，他通常會結合Grafana來做BI的查詢... 同ingress的啟用方式，我們也可以快速的將heapster addon啟動...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ minikube addon &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #397300; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;enable&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; heapster&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;接下來可以開啟heapster的UI… 這邊會直接開啟Grafana作為客製化報表查詢的地方...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; minikube addon open heapster&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;如果想要知道heapster的連線資訊，也可以直接用minikube service來show出url位置，但因為heapster是屬於kube-system這個namespace，所以這邊就需要多指定namespace為kube-system…&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ minikube service monitoring-grafana -n kube-system --url&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//192.168.99.100:31644&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;參考&lt;/span&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube github：&lt;/span&gt;&lt;a href=&quot;https://github.com/kubernetes/minikube&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://github.com/kubernetes/minikube&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;minikube進階篇：&lt;/span&gt;&lt;a href=&quot;https://github.com/kubernetes/minikube/blob/master/docs/README.md&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://github.com/kubernetes/minikube/blob/master/docs/README.md&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;關於addons：&lt;/span&gt;&lt;a href=&quot;https://github.com/kubernetes/minikube/blob/master/docs/addons.md&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://github.com/kubernetes/minikube/blob/master/docs/addons.md&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;如果還是想要service load balancer：&lt;/span&gt;&lt;a href=&quot;https://github.com/kubernetes/contrib/tree/master/service-loadbalancer&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://github.com/kubernetes/contrib/tree/master/service-loadbalancer&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/38901888091374481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/38901888091374481'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2017/10/minikube-kubernetes.html' title='使用 minikube 輕鬆上手 kubernetes'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-3334397494452204011</id><published>2017-10-16T04:33:00.000-07:00</published><updated>2017-10-16T04:33:24.546-07:00</updated><title type='text'>使用Docker執行Percona XDB</title><content type='html'>&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
本篇介紹Percona&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;XDB的Cluster架構，其中由於需要提供Cluster&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;Member溝通，因此需要建立一層可以溝通的網路。在Docker中，我們可以用overlay&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;network的方式提供集群溝通的管道。&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker network create cluster1_net&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接下來有兩種方式可以建立所屬的cluster...&lt;br style=&quot;box-sizing: border-box; font-size: inherit;&quot; /&gt;1. 透過join cluster name的方式&lt;br style=&quot;box-sizing: border-box; font-size: inherit;&quot; /&gt;2. 透過etcd的discovery方式&lt;/div&gt;
&lt;h3 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Join&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;Cluster&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;Name&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
首先建立Master&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;Node，並指定Cluster&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;Name為cluster1...&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;在此我們指定master&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;node的instance名稱為master，這樣有助於其他member在加入的時候可以使用該機器名稱識別cluster的位置...&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker run -d --name master -p 3306 \
 --net=cluster1_net \
 -e MYSQL_ROOT_PASSWORD=1234qwer \
 -e CLUSTER_NAME=cluster1 \
 -e XTRABACKUP_PASSWORD=1234qwer \
 percona/percona-xtradb-cluster&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接下來可以啟動多台cluster&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;member，只需要指定啟動參數中的CLUSTER_JOIN欄位為master(代表透過master的私有ip做認證)即可。&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker run -d -p 3306 --net=cluster1_net \
  -e MYSQL_ROOT_PASSWORD=1234qwer \
  -e CLUSTER_NAME=cluster1 \
  -e CLUSTER_JOIN=master \
  -e XTRABACKUP_PASSWORD=1234qwer \
  percona/percona-xtradb-cluster&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接著可以分別登入master與後續啟動的member，分別建立資料，即可了解叢集是否正常運作...&lt;/div&gt;
&lt;h3 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
使用etcd作為叢集discovery頻道&lt;/h3&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
使用ETCD的方法，首先需要啟動ETCD，為了讓ETCD可以發佈到外部可以連線，我們將ETCD的IP指定為該docker環境的外部主機IP(即為你電腦的IP)...&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;export HostIP=172.26.8.38&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
然後可以設定第一台master啟動，啟動的參數中，我們指定HostIP作為docker啟動參數，讓啟動時所指定的參數可以由外部指定...&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker run -d -v /tmp:/etc/ssl/certs -p 4001:4001 -p 2380:2380 -p 2379:2379 \
 -e HostIP=172.26.8.38 \
 --name etcd quay.io/coreos/etcd:v2.3.8 \
 -name etcd0 \
 -advertise-client-urls http://$HostIP:2379,http://$HostIP:4001 \
 -listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
 -initial-advertise-peer-urls http://$HostIP:2380 \
 -listen-peer-urls http://0.0.0.0:2380 \
 -initial-cluster-token etcd-cluster-1 \
 -initial-cluster etcd0=http://$HostIP:2380 \
 -initial-cluster-state new&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接下來可以啟動其他的member，這邊同樣需要指定discovery&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;server(etcd)的ip，也就是啟動etcd時掛載到本機的HostIP...&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.3px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker run -d -p 3306 --net=cluster1_net \
  -e HostIP=$HostIP \
  -e MYSQL_ROOT_PASSWORD=1234qwer \
  -e CLUSTER_NAME=cluster1 \
  -e DISCOVERY_SERVICE=$HostIP:2379 \
  -e XTRABACKUP_PASSWORD=1234qwer \
  percona/percona-xtradb-cluster&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
如果啟動無誤，則可以用docker&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;ps檢視一下這些啟動的DB的外部IP，然後連入測試一下＾＾&lt;/div&gt;
&lt;h2 style=&quot;background-color: #fafafa; box-sizing: border-box; break-after: avoid; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.3px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Reference&lt;/h2&gt;
&lt;ul style=&quot;background-color: #fafafa; box-sizing: border-box; color: #333333; font-family: Roboto, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.3px; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding: 0px 0px 0px 2em;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; font-size: inherit;&quot;&gt;Percona in Docker:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.percona.com/blog/2016/06/10/percona-xtradb-cluster-in-a-multi-host-docker-network/&quot; style=&quot;background: 0px 0px; box-sizing: border-box; color: #4183c4; font-size: inherit; text-decoration-line: none;&quot;&gt;https://www.percona.com/blog/2016/06/10/percona-xtradb-cluster-in-a-multi-host-docker-network/&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; font-size: inherit;&quot;&gt;Etcd in Docker:&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://coreos.com/etcd/docs/latest/v2/docker_guide.html&quot; style=&quot;background: 0px 0px; box-sizing: border-box; color: #4183c4; font-size: inherit; text-decoration-line: none;&quot;&gt;https://coreos.com/etcd/docs/latest/v2/docker_guide.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/3334397494452204011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/3334397494452204011'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2017/10/dockerpercona-xdb.html' title='使用Docker執行Percona XDB'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-5870004120821273975</id><published>2017-10-15T07:00:00.004-07:00</published><updated>2017-10-15T07:00:47.625-07:00</updated><title type='text'>初探Puppet</title><content type='html'>Puppet是常見的DevOps管理工具，他具備強大且成熟的管理功能，並且支援客製化module的載入，是DevOps不可或缺的好工具..&lt;br /&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;使用Puppet in Docker建置環境&lt;/span&gt;&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;首先建立puppet連線使用的network&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;docker network &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #397300; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; puppet&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;將puppt執行在standalone mode&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;docker &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; --net puppet --name puppet --hostname puppet puppet/puppetserver-standalone&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;執行puppet agent...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #397300; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;--net&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;puppet&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;puppet/puppet-agent-ubuntu&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Creating&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;SSL&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;f406170f87f3&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Caching&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;certificate&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ca&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;csr_attributes&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;loading&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/etc/puppetlabs/puppet/csr_attributes.yaml&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Creating&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;SSL&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;certificate&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;request&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;f406170f87f3&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Certificate&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Request&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;fingerprint&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(SHA256):&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;E:11:85:D0:0E:7C:71:3F:2D:FB:C4:4C:39:DE:5F:CB:D4:14:BF:1A:47:0D:C8:4C:F0:87:7C:9B:44:FA:11:FB&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Caching&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;certificate&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;f406170f87f3&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Caching&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;certificate_revocation_list&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ca&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Caching&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;certificate&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ca&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Using&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;configured&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;environment&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;production&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Retrieving&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;pluginfacts&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Retrieving&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;plugin&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Caching&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;catalog&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;f406170f87f3&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Applying&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;configuration&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;1508051547&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Creating&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;state&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/opt/puppetlabs/puppet/cache/state/state.yaml&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Notice: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Applied&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;catalog&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0.01&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;seconds&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Changes:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Events:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Resources:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Total: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Time:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Schedule: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0.00&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Config&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; retrieval: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0.76&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Total: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0.76&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Last&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; run: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1508051547&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Filebucket: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0.00&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Version:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Config: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1508051547&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Puppet: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;5.2.0&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;上面的puppet的部分，會直接在機器上執行列出summary的指令，指令如下：&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;puppet agent \&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;--verbose \&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;--onetime \&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;--no-daemonize \&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;--summarize&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;為了進行一些互動，我們可以使用interactive mode執行agent&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;docker &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; -it --net puppet \&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;--entrypoint bash puppet/puppet-agent-ubuntu&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;接下來可以客製化agent連線的設定檔：&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;# sudo vim /etc/puppetlabs/puppet/puppet.conf&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; certname = ${client hostname}&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; server = puppet &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;//server name&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; environment = production&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; runinterval = &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;h&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;然後連線到agent端，透過&quot;puppet agent&quot;指令，即可啟動agent...，我們也可以強制把agent留在前景端，讓debug比較容易...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;puppet&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; agent --verbose --&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #78a960; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;no&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;-daemonize&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.32; margin-bottom: 11pt; margin-top: 17pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;範例一：為client增加一個檔案&lt;/span&gt;&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;接下來進入puppet server到/etc/puppetlabs/code/environments/production下，建立manifests/site.pp檔案，內容如下：&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;node &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;file&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;/tmp/puppet_server.message&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content =&amp;gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;Hello, Puppet Client!&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;然後，進入agent端，執行&quot;puppet agent --test&quot;，即可同步server端的設定&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;root@0fa0658f528b&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:/etc/puppetlabs/puppet&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;# puppet agent --test&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Using configured environment &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;production&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Retrieving pluginfacts&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Retrieving plugin&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Caching catalog &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; 0fa0658f528b&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Applying configuration version &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;1508052730&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Notice:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; /Stage[main]/Main/Node[default]/File[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/tmp/puppet&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;_server.message]/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ensure:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;defined&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; content as &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;{md5}38febf090437aaf325733508da57a1cf&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Notice:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Applied catalog &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;02&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; seconds&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;同步完成後，可以檢查一下/tmp下，應該會出現&quot;puppet_server.message&quot;檔案，顯示Hello,Puppet Client!的內容...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;root@0fa0658f528b&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:/etc/puppetlabs/puppet&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;# ls -l /tmp/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;total &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;-rw-r--r-- &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; root root &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;21&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Oct &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;07&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; puppet_server.message&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.32; margin-bottom: 11pt; margin-top: 17pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;範例二：自建module來安裝Apache HTTPD&lt;/span&gt;&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;root@puppet&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:/etc/puppetlabs/code&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;# tree&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;|-- environments&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;| &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;`-- production&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;| &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|-- data&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;| &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|-- environment.conf&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;| &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|-- hiera.yaml&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;| &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|-- manifests&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;| &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;-- modules&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;`-- modules&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;我們先建立apache module的目錄(/etc/puppetlabs/code/modules/apache)，然後在該目錄下建立manifest與files資料夾... 然後到 /etc/puppetlabs/code/modules/apache/manifest下依序建立下面的設定檔...&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;── &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;manifests&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;├── &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;init&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.pp&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;├── &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;install&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.pp&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;├── &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;config&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.pp&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;├── &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;service&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.pp&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;manitests/init.pp 是預設被讀取的檔案，通常用來定義變數、引用 class&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;String $package_name &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;apache2&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;String $package_ensure &amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;installed&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;String $service_name &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;apache2&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;String $service_ensure &amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;running&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;String $default_site_conf = &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;/etc/apache2/sites-enabled/default.conf&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;String $run_user &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;www-data&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;contain apache::install&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;contain apache::config&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;contain apache::service&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;Class[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;::apache::install&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;-&amp;gt; Class[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;::apache::config&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;~&amp;gt; Class[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;::apache::service&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;manitests/install.pp 用來定義如何安裝 package&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apache::install&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;inherits&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;package { $apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;::package_name&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ensure&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; =&amp;gt; $apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;::package_ensure&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;}&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;manitests/service.pp 用來處理服務&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apache::service&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;inherits&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;service { &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;$apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;::service_name&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ensure&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; =&amp;gt; $apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;::service_ensure&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;# subscribe =&amp;gt; Package[&#39;apache&#39;],&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;require&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; =&amp;gt; Class[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;apache::install&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;}&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b id=&quot;docs-internal-guid-8461ce70-2054-6480-e1de-64f810766894&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.38; margin-bottom: 9pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;manitests/config.pp 用來處理設定檔&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apache::config&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;inherits&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;file { $apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;::default_site_conf&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ensure&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; =&amp;gt; file,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;owner &amp;nbsp;=&amp;gt; $apache&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;::run_user&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;source =&amp;gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;puppet:///modules/${module_name}/default.conf&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;}&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;files/default.conf 來描述apache的執行設定...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Timeout 60&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;KeepAlive &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #78a960; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;On&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;MaxKeepAliveRequests 100&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;KeepAliveTimeout 5&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;UseCanonicalName &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #78a960; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Off&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;AccessFileName .htaccess&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ServerTokens Full&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ServerSignature &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #78a960; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Off&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;HostnameLookups &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #78a960; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Off&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;ifmodule reqtimeout_module=&quot;&quot;&gt;&lt;/ifmodule&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.32; margin-bottom: 11pt; margin-top: 17pt;&quot;&gt;
&lt;br /&gt;&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;設定完成後，我們可以到agent的所在機器執行同步... 如果一切無誤，則client端會透過agent開始安裝與設定apache...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ puppet agent &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;--test&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: Using configured environment &#39;production&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: Retrieving pluginfacts&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: Retrieving plugin&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: Caching catalog for 0fa0658f528b&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: Applying configuration version &#39;1508075447&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Notice: /Stage[main]/Apache::&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Install&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Package&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[apache2]/ensure: created&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Notice&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: /Stage[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]/Apache::Config/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;File&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[/etc/apache2/sites-enabled/default.conf]/ensure: defined &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;{md5}0c72defe6a4e5486dffb8b38026bb3bf&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Class&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[Apache::Config]: Scheduling &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;refresh&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Class&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[Apache::Service]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Class&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[Apache::Service]: Scheduling &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;refresh&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;of&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Service[apache2]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Notice&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: /Stage[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]/Apache::Service/Service[apache2]/ensure: ensure &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;changed&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;stopped&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39;running&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Info: /Stage[&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]/Apache::Service/Service[apache2]: Unscheduling &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;refresh&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Service[apache2]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Notice&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;: Applied &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;catalog&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;261.30&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; seconds&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;background-color: #fafafa; line-height: 1.32; margin-bottom: 11pt; margin-top: 17pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;參考網址&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Puppet in Docker: &lt;/span&gt;&lt;a href=&quot;https://github.com/puppetlabs/puppet-in-docker&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #4183c4; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://github.com/puppetlabs/puppet-in-docker&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Puppet manage guide: &lt;/span&gt;&lt;a href=&quot;https://shazi7804.gitbooks.io/puppet-manage-guide/&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; text-decoration-line: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://shazi7804.gitbooks.io/puppet-manage-guide/&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5870004120821273975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5870004120821273975'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2017/10/puppet.html' title='初探Puppet'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-5401933535932596480</id><published>2017-09-28T08:17:00.000-07:00</published><updated>2017-09-28T08:17:27.583-07:00</updated><title type='text'>使用GCP Cloud Builder建置CI/CD Flow</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;服務的建置通常是持續性的作業，而部署則一般是專案初期建置一次，未來可以沿用該部署設定... 這樣的流程走向自動化，在Container的環境又更是重要... 本篇介紹一下，在Google雲端，我們可以搭配Source Repository與Build Trigger等服務來完成服務的自動建置與部屬，讓封裝Container與部署到Container Engine的動作可以一氣呵成...&lt;/span&gt;&lt;/div&gt;
&lt;b id=&quot;docs-internal-guid-79fd5bd4-c90f-d544-547f-a817c4ca605d&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;首先幾單瞭解一下一個Container Engine服務的建置與部屬過程...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;使先，建立Container Engine Cluster，透過GCP Winzard可以很快速地開立您的GKE Cluster…&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;279&quot; src=&quot;https://lh5.googleusercontent.com/lnKZglXCx-dkL5-a_gu5YPVZlyzGdBM6wvjxE439vShCL5vwuiU5mwoRHtUfWAs_BuaysF2Pu9-EfYyYFD70YQz8Led8eFmtyswH3XJVVhGLk4MIcjwAYriXLJxsI5qH7HZrZgYB&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;假設您的cluster是叫做demo-cluster，則可以透過下面的指令來跟GKE建立連線&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ gcloud container clusters get-credentials demo-cluster &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #888888; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;--zone asia-east1-a &lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;這串指令不用記ㄛ～可以在Cluster的頁面找到他...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;184&quot; src=&quot;https://lh3.googleusercontent.com/1KKB1HhPQUnhNXRDv-ygxy1MG69ZfvriWrax1iwRCOYIEpj9kFyeS0ct_iC8bEpcUXNKaX2hn64gloMV7nCz-mEkQDw_zzushnU-1H3hHZeY-wSgKKKgej9YS2v7bXJF_MEZ7PgC&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;點選複製，即可貼到您的Terminal執行...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;336&quot; src=&quot;https://lh5.googleusercontent.com/Rjw0IE8Itjyffwu8CoEPzFwaJCj28tzc8-weI3pvLyc_gMLfSBtLw2b6sosubt4LJTkontA_oXaQBL68vJnQ9-waZ_sPHyr7cfFdkhM3V4cEQO3T6rZzFwMwDEcUj9_H5SOfVgBN&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;跟GKE建立鏈結後，接下來可以部署您的城市，這邊我們以我的一個範例程式Demoweb (&lt;/span&gt;&lt;a href=&quot;https://github.com/peihsinsu/demoweb&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://github.com/peihsinsu/demoweb&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;) 為例，&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;183&quot; src=&quot;https://lh5.googleusercontent.com/VlyFfrinKRFdUylSLQ-8RJd0JATmVqqm079GT5GvaUC197SsJmVGyJSjHqdlCqGmN7YveVHfqDL8p_hn7Ecc5bEsEIIeh8LK8w-ewc8MBtXwMkHDbL4m2bYlJ5EGhn8gMk3UtCQJ&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;這個專案中，包含幾個重要結構：&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;app/ : 放置您的程式，在Dockerfile中會將該資料匣複製到Docker Image中&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;k8s/ : 放置k8s的deployment與service描述檔&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Dockerfile : 封裝docker的描述檔，會以node.js的image為基礎來建置執行環境&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;cloudbuild.yaml : Google Cloud Build Trigger的步驟描述檔&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;建置的流程大致描述如下：&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;當程式碼push至github後，會觸發hook(由source repository建立的)到GCP source repository&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Source repository更版後，會觸發Cloud Build Trigger來執行cloudbuild.yaml裡面的設定步驟&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;cloudbuild.yaml步驟一：建置image，並上傳到gcr.io registry&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;cloudbuild.yaml步驟二：觸發GKE上的版本更新&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;下面針對整個建置步驟描述...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step1: 建立GCP對應的Source Repository&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;300&quot; src=&quot;https://lh3.googleusercontent.com/StN8iB65CUyh2-UZkA8A_wtBLFz22gE1w_ZVLUYJqzT-IhZYfQHi71S4KyfYshNk9LP9uMFrQXygRij77KMRgoHqum-1FgrpZnEl6Wh8SMZRJcAkIdEDWI_xgzrZKlpQL3QsdL9g&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;由於我們想要直接連動Github上的Repo，這邊選擇Github的Source Code Repo位置...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;303&quot; src=&quot;https://lh3.googleusercontent.com/jHfOgV9PphZqDtY83Nrjubx8lIXbKYz4JrySBZMgTiHOo-xrGUtlOFf6Le-s4vAgeH4KopHJAKiA2f2Z_zmaBPsdPg38egva5tPGG0d1yF5r86VOlAoJCH_GaFPWH5VOEL3CfgWZ&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step2: 建立Build Trigger，在這邊選擇複製自Github的Cloud Source Repository&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;297&quot; src=&quot;https://lh4.googleusercontent.com/HxlFAn0ZhZpXaGMyBJoNaUBXI1fM8kyhuNqULu9xAP1pN94KasthKTIMxO1i_EAqUeDeQHoLrbWicQXg7HUUcDgPpZstsbusQRy7K3GD9spZq7-cLRKBYRS_GqUetvaPvHaZHUuX&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;然後選擇要建置的Cloud Repository (有filter還滿貼心的^^)&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;367&quot; src=&quot;https://lh3.googleusercontent.com/jyxLaP3jVwPRnWtMqlHKl01zKkeWXf2-PIRpXPC4F2s2rH_33dFCzAggFR-xMdUMeQOSTF__zys6seF87l2dMbmfvvGos3alNn1dxmytwp7DTqrPlzqKXLBpEc-jk22aCXjcCHvn&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;設定Build參數，指定使用自建的cloudbuild.yaml檔案來建置... 另外，Trigger Type部分，選擇Tag Build，並設定Tag Pattern為”v.*”，來聆聽符合該Tag形式的Build動作。&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;508&quot; src=&quot;https://lh4.googleusercontent.com/Z3W_ZIvhfryc1sNDKnxdUQLXzc_nAUUGnXH4YVde56VfkXSGt3gP56UcX_LTEcWeyK_P_fSfQJIyBwEhHUoyrTake4xlF7v1W90_gRh5vcGIFrUc2pFLzcBY1vGkpsKAMOP_MPYO&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;設定的部分就這樣，頗簡單吧... &amp;nbsp;接下來可以驗證一下設定是否正確...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;剛設定的部分是只針對您的專案建立”v”開頭的tag，即可觸發建置及部署的動作，我們可以實際tag一個v開頭的tag版本，然後可以在Build History中看到建置的過程紀錄與狀態...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;git tag v20170928&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.001&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;git &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;push&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; origin v20170928&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.001&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;檢視一下Build History...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;img height=&quot;463&quot; src=&quot;https://lh4.googleusercontent.com/Km4u4LVoQZLwHWoqT_oTWd81Udu_8ohjT8A7O8GWIoSv1cNWRS6McYMONgflRNkszkdT5ZN_tJwMOOmg_j8HrZ-CyTslJpQ2CpT7hPRfPdf907FDXELG_o6P_jFe1T50G-Tuedaz&quot; style=&quot;-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);&quot; width=&quot;642&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;如果一切無誤，可以在Status欄位看到Successful… 如果失敗，也沒關係，看一下每個步驟的log，確認一下失敗原因，排除後可以rebuild看看 :D&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;參考：&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul style=&quot;margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Cloud Builder的工具Image: &lt;/span&gt;&lt;a href=&quot;https://github.com/GoogleCloudPlatform/cloud-builders&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://github.com/GoogleCloudPlatform/cloud-builders&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li dir=&quot;ltr&quot; style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Cloud Builder進階建置文件：&lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/container-builder/docs/concepts/custom-build-steps&quot; style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://cloud.google.com/container-builder/docs/concepts/custom-build-steps&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5401933535932596480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5401933535932596480'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2017/09/gcp-cloud-buildercicd-flow.html' title='使用GCP Cloud Builder建置CI/CD Flow'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/lnKZglXCx-dkL5-a_gu5YPVZlyzGdBM6wvjxE439vShCL5vwuiU5mwoRHtUfWAs_BuaysF2Pu9-EfYyYFD70YQz8Led8eFmtyswH3XJVVhGLk4MIcjwAYriXLJxsI5qH7HZrZgYB=s72-c" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-2384149596873821830</id><published>2017-09-03T06:56:00.002-07:00</published><updated>2017-09-03T06:56:53.499-07:00</updated><title type='text'>使用Cloud Registry - gcr.io來儲存您的docker image</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Google提供每一個Cloud專案一個專屬的gcr.io registry作為docker image的存放地，透過gcr.io可以無限存放您的image，並且有提供簡單的查詢介面供使用者檢視所儲存的image與相關tag… 近一步使用將可透過與其他服務的串連，達到更多樣化的應用～&lt;/span&gt;&lt;/div&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;從使用流程了解gcr.io&lt;/span&gt;&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;在使用前，我們先來檢視gcr.io的使用流程&lt;/span&gt;&lt;/div&gt;
&lt;b id=&quot;docs-internal-guid-18fdf1f4-4807-201c-d98d-5279a546068e&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step 1 - 幫你的image製作tag&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; tag&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; [your-image] gcr.io/[your-project-id]/[your-image-name]&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step 2 - Push image到gcr.io&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcloud docker - &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;push&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; gcr.io&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/[your-project-id]/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[your-image-name]&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;下面實際使用一個Dockerfile來作為範例，存放到gcr.io上...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;首先，透過node.js的express套件來建立專案... [參考: https://expressjs.com/en/starter/installing.html]&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ mkdir myproject &amp;amp;&amp;amp; cd myproject &amp;amp;&amp;amp; express -e web&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;warning: option `--ejs&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&#39; has been renamed to `--view=ejs&#39;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;package&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;.json&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/app.js&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/javascripts&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;│ │ ├── &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;destroy@&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;1.0.4&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/images&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/stylesheets&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/stylesheets/style.css&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/routes&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/routes/index.js&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/routes/users.js&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/views&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/views/index.ejs&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/views/error.ejs&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/bin&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;create : web/bin/www&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;install dependencies:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$ cd web &amp;amp;&amp;amp; npm install&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;run the app:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$ DEBUG=web:* npm start&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;接下來我們在myproject下面建立Dockerfile檔案&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;From&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; node&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ADD&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; web /app&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;WORKDIR&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; /app&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;RUN&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; npm install&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;CMD&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;npm&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;start&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;然後開始build這個Dockerfile，過程中docker會將Dockerfile中每一行建置成image中的一個layer，如果一切沒問題，則會在系統中新增一個”myweb”的image...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; docker build -t myweb .&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Sending build context to Docker daemon &amp;nbsp;16.9 kB&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step 1 : FROM node&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;latest: Pulling from library/node&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ad74af05f5a2: Pull complete&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2b032b8bbe8b: Pull complete&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;a9a5b35f6ead: Pull complete&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;49fb60496f63: Pull complete&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;3894583bc464: Pull complete&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;321f9e1d7334: Pull complete&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;cdf9ffbab3ff: Pull complete&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;a76a49ec92c8: Pull complete&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Digest: sha256:0adc410aa5e45b817bc8f29d5845c4941ad03b63e9584bc7f8654562e60424cf&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Status: Downloaded newer image for node:latest&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ---&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; 60bea5b86079&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step 2 : ADD web /app&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ---&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; c2db2b5f5fd9&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Removing intermediate container 287af85ca8f5&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step 3 : WORKDIR /app&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ---&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Running &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; 415faf475d84&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ---&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; 0ff5af512bc8&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Removing intermediate container 415faf475d84&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step 4 : RUN npm install&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ---&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Running &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; af9958080502&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;npm info it worked if it ends with ok&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;npm info using npm@5.3.0&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;npm info lifecycle undefined~postshrinkwrap: undefined&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;added 63 packages in 14.524s&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;npm info ok &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ---&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; b002146466c3&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Removing intermediate container af9958080502&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Step 5 : CMD npm start&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ---&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Running &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ebb282a74539&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ---&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; 19057465c4c6&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Removing intermediate container ebb282a74539&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Successfully built 19057465c4c6&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;我們可以透過”docker images”來查詢新的image是否建置完成...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;假設一切無誤，接著，我們可以透過上面所說的兩個步驟來將image存放至gcr.io…&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ docker tag myweb gcr.io/mitac-simonsu-&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2017&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/myweb&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$ gcloud docker -- push gcr.io/mitac-simonsu-&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2017&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/myweb&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;The push refers to a repository [gcr.io/mitac-simonsu-&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2017&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/myweb]&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;5953068074&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;de:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Pushing [==================================================&amp;gt;] &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4.235&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; MB&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;a296490096d:&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; Pushed&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br class=&quot;kix-line-break&quot; /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;…(skip)&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;2c40c66f7667: Pushed&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;latest: digest: sha256:394c8ef825ad3a1aa...39b27ae61e8cd38d500cf size: 2425&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;當push完成，我們可以檢視一下目前image的狀況...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;首先確認一下是否image已經上傳...&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;image list 指令&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcloud container images &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #397300; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;list&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;執行範例&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; gcloud container images list&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;NAME&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcr.io/mitac-simonsu-2017/demo&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcr.io/mitac-simonsu-2017/demoweb&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcr.io/mitac-simonsu-2017/jenkins-slave&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcr.io/mitac-simonsu-2017/mytest&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcr.io/mitac-simonsu-2017/myweb&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcr.io/mitac-simonsu-2017/peihsinsu&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gcr.io/mitac-simonsu-2017/web2&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Only listing images in gcr.io/mitac-simonsu-2017. Use --repository to list images in other repositories.&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;如果上傳無誤，則可以透過list-tags來檢視該image下是否有其他tag存在&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;list-tags指令&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;gloud container images list-tags gcr.io&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/[project-id]/&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[image-name]&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;執行範例&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #1f7199; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; gcloud container images list-tags gcr.io/mitac-simonsu-2017/myweb&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;DIGEST &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TAGS &amp;nbsp;&amp;nbsp;&amp;nbsp;TIMESTAMP&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;394c8ef825ad &amp;nbsp;latest &amp;nbsp;2017-09-03T19:43:57&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;要使用該image的話，如果是GKE環境，則可以直接使用，如果是透過docker或外部環境，則可以透過gcloud來認證docker，讓docker具備gcr.io的存取權限。&lt;/span&gt;&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;margin-left: 0pt;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; border: none;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;height: 0pt;&quot;&gt;&lt;td style=&quot;background-color: #f0f0f0; padding: 5pt 5pt 5pt 5pt; vertical-align: top;&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;docker login -u oauth2accesstoken \&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;-p &lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #bc6060; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$(gcloud auth application-default print-access-token)&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #880000; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; \&lt;/span&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;&quot;&gt;
&lt;span style=&quot;background-color: #f0f0f0; color: #444444; font-family: Consolas; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;https://gcr.io&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;h2 dir=&quot;ltr&quot; style=&quot;line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;&quot;&gt;
&lt;span style=&quot;background-color: transparent; color: black; font-family: Arial; font-size: 16pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;參考&lt;/span&gt;&lt;/h2&gt;
&lt;span style=&quot;font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;使用gcloud認證docker指令: &lt;/span&gt;&lt;a href=&quot;https://cloud.google.com/container-registry/docs/advanced-authentication&quot; style=&quot;text-decoration-line: none;&quot;&gt;&lt;span style=&quot;color: #1155cc; font-family: Arial; font-size: 11pt; text-decoration-line: underline; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://cloud.google.com/container-registry/docs/advanced-authentication&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2384149596873821830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2384149596873821830'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2017/09/cloud-registry-gcriodocker-image.html' title='使用Cloud Registry - gcr.io來儲存您的docker image'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-575882858966139766</id><published>2017-09-03T04:13:00.000-07:00</published><updated>2017-09-03T04:20:09.948-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><title type='text'>Using docker slave with Jenkins</title><content type='html'>Jenkins是一套常用的CICD管理工具，在Container的世界中，要透過Container來操作Jenkins將讓Jenkins變得更方便... 下面是以docker模式啟動常駐型的jenkins slave的方式... &lt;br /&gt;&lt;br /&gt;首先，我們先透過Jenkins的管理介面來建立新永久節點，這邊要選擇”Permanent Agent”部分&lt;br /&gt;&lt;br /&gt;&lt;img height=&quot;224&quot; src=&quot;https://lh3.googleusercontent.com/UkbsxrashqK1F7t017pAuHHCfoz9YlRNvcaWgB4PxAG2K1xz8LeUYVfXML-DDh4M0v0T3Q0MWDlalwyz29VxYO4hUJKHwf7pN-yhw52aE7OJXdetEZDecfpz1pOZqe7y7qQcFrQ0&quot; width=&quot;640&quot; /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;接著設定該常駐節點的細部設定，包含執行程式數量與目錄等... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img height=&quot;255&quot; src=&quot;https://lh5.googleusercontent.com/WJAwZtaZPqq4q7hFK0h48KgrlhKKfOh9ipE3dwu6SkP9K6up1AnzFu7hutBF6sv7M48ZOxBfzyHSbKKDTJXQpNVoUcIEDA3Pv_G8VeGUCvzx07yga7cLryVQgQYYGHIe4yKMfigC&quot; width=&quot;640&quot; /&gt; &lt;br /&gt;設定完後(test-slave)，該節點暫時會在無法服務的狀態，我們直接在該slave的名稱上點選進入節點的設定畫面... &lt;br /&gt;&lt;br /&gt;&lt;img height=&quot;210&quot; src=&quot;https://lh5.googleusercontent.com/GAXhlpDepuXV-VfwV-2bkOWdAudtdTVrzEYEsOFXPFsFslbsmLL5dXBdm-lYjPx6O81mJ5qbL-4P8T-6MzvuTp8gIsV6xfn_NrJTD15gLr2JKp3D5RFeaXz45hvUBPjVkZaWa5Aa&quot; width=&quot;640&quot; /&gt; &lt;br /&gt;&lt;br /&gt;再詳細設定畫面中，我們可以看到該slave的secret資訊與agent的名稱，這部分可以用來當作之後我們啟動slave的參數... &lt;br /&gt;&lt;br /&gt;&lt;img height=&quot;190&quot; src=&quot;https://lh3.googleusercontent.com/nCN4s28AhvaVB4eXS9eRShAmiNwz3gCzClWxIA2IKomMBGNsiH4AwHVEaPw15Sryz6kOpQ9VEXgApAnljnpDti2NnNj_1MiWobV2rkO1qhEa5_bYOackjafXP_ZQ6kBhXb6PvXwK&quot; width=&quot;640&quot; /&gt; &lt;br /&gt;&lt;br /&gt;有了agent的名稱與參數，我們可以透過下面指令啟動slave，然後提供jenkins使用... &lt;br /&gt;&lt;br /&gt;docker run jenkinsci/jnlp-slave -url http://jenkins-server:port &lt;br /&gt;&lt;br /&gt;ex: &lt;br /&gt;docker run -d jenkinsci/jnlp-slave \&lt;br /&gt;-url http://104.199.165.255:8080 \&lt;br /&gt;1fe32ff0841d49cf324748d50e08257e79f9cbdf3c3f673ffa780e4f6ddf2a32 \&lt;br /&gt;test-slave &lt;br /&gt;&lt;br /&gt;參考：&lt;a href=&quot;https://github.com/jenkinsci/docker-jnlp-slave&quot;&gt;https://github.com/jenkinsci/docker-jnlp-slave&lt;/a&gt; </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/575882858966139766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/575882858966139766'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2017/09/using-docker-slave-with-jenkins_3.html' title='Using docker slave with Jenkins'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/UkbsxrashqK1F7t017pAuHHCfoz9YlRNvcaWgB4PxAG2K1xz8LeUYVfXML-DDh4M0v0T3Q0MWDlalwyz29VxYO4hUJKHwf7pN-yhw52aE7OJXdetEZDecfpz1pOZqe7y7qQcFrQ0=s72-c" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-5198217368795505855</id><published>2016-08-30T19:47:00.002-07:00</published><updated>2017-09-03T04:20:09.944-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><title type='text'>查詢使用某個image的instances</title><content type='html'>&lt;h1 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-left: 0px; margin-right: 0px; margin-top: 0px !important;&quot;&gt;
&lt;span style=&quot;font-size: 14px; font-weight: normal; letter-spacing: 0.2px; line-height: 23.8px; orphans: 3; widows: 3;&quot;&gt;在Docker中，要查詢所有process很簡單，docker ps就會返回所有執行中的列表，也可以加上-a參數來show所有不管關閉或開啟的機器列表... 而如果希望找到由某個image開起來的instances，可以透過filter + ancestor來做到...&lt;/span&gt;&lt;/h1&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker ps -f ancestor=[image_name]
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
範例：&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker ps -f ancestor=registry:2
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
54689a3084a4        registry:2          &quot;/bin/registry /etc/d&quot;   6 weeks ago         Up 13 hours         0.0.0.0:80-&amp;gt;5000/tcp     registry
0bcb6beac991        registry:2          &quot;/bin/registry /etc/d&quot;   7 weeks ago         Up 13 hours         0.0.0.0:5000-&amp;gt;5000/tcp   mwciotdemo_registry_1
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
搭配filter也可以透過label的方式來查詢...&lt;/div&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
幫啟動的instance加上label...&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;# docker run -d -l mynginx nginx
Unable to find image &#39;nginx:latest&#39; locally
latest: Pulling from library/nginx
357ea8c3d80b: Pull complete
0fc04568277e: Pull complete
0bed9719ddcb: Pull complete
Digest: sha256:d33834dd25d330da75dccd8add3ae2c9d7b12302b421b02cecb6cb7b34a1b6
Status: Downloaded newer image for nginx:latest
09386387d9f0681935e01ff058023956cd8c61234344f60e8f4c4aedaaad853
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
透過filter以label的方式來找尋執行中的個體...&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;# docker ps -f label=mynginx
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
09386387d9f0        nginx               &quot;nginx -g &#39;daemon off&quot;   17 seconds ago      Up 17 seconds       80/tcp, 443/tcp     determined_swirles
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; orphans: 3; widows: 3;&quot;&gt;
以上，搭配filter來做查詢可以減少很多處理上的麻煩，推薦大家善用filter唷～&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5198217368795505855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5198217368795505855'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2016/08/imageinstances.html' title='查詢使用某個image的instances'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-2424333152830389293</id><published>2016-08-29T18:24:00.002-07:00</published><updated>2016-08-29T18:24:25.459-07:00</updated><title type='text'>網路監測工具</title><content type='html'>之前用過vnstat... 不過，看起來好多可以用的唷～ 有興趣可以參考：&lt;br /&gt;
&lt;br /&gt;
http://www.binarytides.com/linux-commands-monitor-network/</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2424333152830389293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2424333152830389293'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2016/08/blog-post.html' title='網路監測工具'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-2278136967716889222</id><published>2016-06-30T02:01:00.003-07:00</published><updated>2016-06-30T02:01:23.677-07:00</updated><title type='text'>使用CloudFlare來加上SSL</title><content type='html'>&lt;h1 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-left: 0px; margin-right: 0px; margin-top: 0px !important;&quot;&gt;
&lt;span style=&quot;font-size: 14px; font-weight: normal; letter-spacing: 0.2px; line-height: 23.8px; orphans: 3; widows: 3;&quot;&gt;如果您在建置docker registry的過程中，常因為沒有HTTPS而要去設定client端的docker啟動方式，那這招一定要學一下！&lt;/span&gt;&lt;/h1&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
下面使用apache htpasswd的認證方式，然後透過80 port不加上ssl key，由CloudFlare來提供SSL憑證，這樣Client端就不會在操作的時候報錯，&lt;/div&gt;
&lt;h2 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Setting CloudFlare&lt;/h2&gt;
&lt;h3 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Enable Flexible SSL&lt;/h3&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
在Crypto &amp;gt; SSL頁面，我們可以設定SSL成為Flexible，這樣的設定可以直接針對80 port的非SSL頁面加上SSL的功能，操作畫面如下：&lt;/div&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
&lt;img alt=&quot;Flexible SSL&quot; id=&quot;img11990&quot; src=&quot;blob:file%3A///5b0cce76-b876-4cfb-a445-c33e88be6128&quot; style=&quot;-webkit-user-select: text; border: 0px; box-sizing: border-box; cursor: text; font-size: inherit; max-width: 100%; page-break-inside: avoid;&quot; /&gt;&lt;/div&gt;
&lt;h3 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.5em; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Enable CDN&lt;/h3&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接下來需要設定Record並啟動CDN的功能，也就是把Status的雲點一下，他會呈現流量過雲的圖示，這樣就可以直接Enable CDN，接下來ping這個domain name的話，IP就會先繞到CloudFlare。&lt;/div&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
&lt;img alt=&quot;Enable CDN&quot; id=&quot;img11991&quot; src=&quot;blob:file%3A///ea0c40a2-dd19-4f4c-9efd-66f7e6357ef8&quot; style=&quot;-webkit-user-select: text; border: 0px; box-sizing: border-box; cursor: text; font-size: inherit; max-width: 100%; page-break-inside: avoid;&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Create the htpasswd file&lt;/h2&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接下來的動作跟前面介紹差不多，首先先準備您的密碼檔... 指令如下：&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker run --entrypoint htpasswd registry:2 -Bbn [username] [password] &amp;gt;&amp;gt; /data/registry-auth/htpasswd
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Run registry&lt;/h2&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
接下來可以透過docker啟動你的registry... 下面的compose file的volumes部分將會直接載入上面所產生的htpasswd檔案，作為認證資料庫... 另外，registry-data是未來存放image的實際位置，透過這個設定可以讓下次重新啟動的image不會遺失資料...&lt;/div&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
docker-compose.yml:&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;registry:
  restart: always
  image: registry:2
  ports:
    - 80:5000
  environment:
    - &quot;REGISTRY_AUTH=htpasswd&quot;
    - &quot;REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm&quot;
    - &quot;REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd&quot;
  volumes:
    - /data/registry-data:/var/lib/registry
    - /data/registry-auth:/auth
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
啟動（移到跟上面檔案同個目錄下，在執行下面指令）：&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker-compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.75em; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-top: 1.275em; orphans: 3; widows: 3;&quot;&gt;
Login your registry&lt;/h2&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
在client端註冊您的client可以登入該registry...&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker login [your.domain.name]
docker tag [your-image-name] [your.domain.name]/[your-image-name]
docker push [your.domain.name]/[your-image-name]&lt;/code&gt;&lt;/pre&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2278136967716889222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2278136967716889222'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2016/06/cloudflaressl.html' title='使用CloudFlare來加上SSL'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-5145186906533167857</id><published>2016-02-26T02:26:00.003-08:00</published><updated>2016-02-26T02:26:32.433-08:00</updated><title type='text'>Docker Image空間上的巧思</title><content type='html'>&lt;h1 style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; break-after: avoid; color: #333333; cursor: text; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; letter-spacing: 0.2px; line-height: 1.1; margin-bottom: 0.85em; margin-left: 0px; margin-right: 0px; margin-top: 0px !important;&quot;&gt;
Docker Image空間上的巧思&lt;/h1&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
Docker image在儲存時候也是以layer的方式儲存，因此在每個RUN都可以完整的保存中間的紀錄，但是往往也造成其他問題... 例如image空間非常巨大... From一個大的Image通常只會更大，小不下來...&lt;/div&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
例如：&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;From centos

RUN wget http://xxxx.xxxx/xxx.data #假設這裡有5G

RUN rm xxx.data #本來以為會把5G刪掉
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
在上面的build file中，通常image build起來還會是5G...&lt;/div&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
下面是網路上找到可以Flatten Image的方式，透過簡單的export/import就可以讓之間的空間巧妙的縮減下來唷：&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;docker export &lt;container id=&quot;&quot;&gt; | docker import - some-image-name:latest
&lt;/container&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; margin-bottom: 0.85em; orphans: 3; widows: 3;&quot;&gt;
如果要完整地把Image在建置時候就最小化，可以修改dockerfile：&lt;/div&gt;
&lt;pre style=&quot;-webkit-user-select: text; background: rgb(247, 247, 247); border-radius: 4px; border: none; box-sizing: border-box; break-inside: avoid; color: #333333; cursor: text; direction: ltr; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14px; letter-spacing: 0.2px; line-height: 1.42857; margin-bottom: 1.275em; overflow: auto; padding: 0.85em 1em; word-break: break-all; word-wrap: normal;&quot;&gt;&lt;code style=&quot;-webkit-user-select: text; background: 0px 0px; border-radius: 0px; border: none; box-sizing: border-box; break-inside: avoid; color: inherit; cursor: text; direction: ltr; display: inline; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 0.85em; line-height: inherit; margin: 0px; max-width: initial; overflow: initial; padding: 0px;&quot;&gt;From centos

RUN wget http://xxxx.xxxx/xxx.data &amp;amp;&amp;amp;\
    rm xxx.data
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;-webkit-user-select: text; background-color: white; box-sizing: border-box; color: #333333; cursor: text; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 14px; letter-spacing: 0.2px; line-height: 23.8px; orphans: 3; widows: 3;&quot;&gt;
在一個RUN下面只會有一次的commit，就會有效的縮小image的空間唷～&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5145186906533167857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5145186906533167857'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2016/02/docker-image.html' title='Docker Image空間上的巧思'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-4158011980060938449</id><published>2015-10-21T08:56:00.001-07:00</published><updated>2015-10-21T08:57:52.997-07:00</updated><title type='text'>lsync - 簡單操作的Linux同步服務</title><content type='html'>&lt;h1 id=&quot;lsync-簡單操作的linux同步服務&quot;&gt;lsync - 簡單操作的Linux同步服務&lt;/h1&gt;

&lt;p&gt;lsync是一個可以基於rsync傳輸的同步服務，他的好處是可以透過一個簡單的設定檔，即可完成自動化同步作業，讓管理上非常簡單。這邊簡單的以AWS與Google Cloud的兩台雲端主機進行同步作業：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remote: 54.172.25.83 (AWS US-East/N.Virginia)&lt;/li&gt;
&lt;li&gt;Local: 130.211.248.60 (GCE asia-east1-c)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;安裝lsync&quot;&gt;安裝lsync&lt;/h2&gt;

&lt;p&gt;Debian系列：&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot; hljs lasso&quot;&gt;apt&lt;span class=&quot;hljs-attribute&quot;&gt;-get&lt;/span&gt; update
apt&lt;span class=&quot;hljs-attribute&quot;&gt;-get&lt;/span&gt; install git &lt;span class=&quot;hljs-attribute&quot;&gt;-y&lt;/span&gt;
apt&lt;span class=&quot;hljs-attribute&quot;&gt;-get&lt;/span&gt; install cmake &lt;span class=&quot;hljs-attribute&quot;&gt;-y&lt;/span&gt;
apt&lt;span class=&quot;hljs-attribute&quot;&gt;-get&lt;/span&gt; install build&lt;span class=&quot;hljs-attribute&quot;&gt;-essential&lt;/span&gt; &lt;span class=&quot;hljs-attribute&quot;&gt;-y&lt;/span&gt; 
apt&lt;span class=&quot;hljs-attribute&quot;&gt;-get&lt;/span&gt; install lua5&lt;span class=&quot;hljs-number&quot;&gt;.2&lt;/span&gt;
apt&lt;span class=&quot;hljs-attribute&quot;&gt;-get&lt;/span&gt; install liblua5&lt;span class=&quot;hljs-number&quot;&gt;.2&lt;/span&gt;&lt;span class=&quot;hljs-attribute&quot;&gt;-dev&lt;/span&gt; &lt;span class=&quot;hljs-attribute&quot;&gt;-y&lt;/span&gt;
git clone https:&lt;span class=&quot;hljs-comment&quot;&gt;//github.com/axkibe/lsyncd.git&lt;/span&gt;
cd lsyncd
cmake &lt;span class=&quot;hljs-attribute&quot;&gt;-DCMAKE_INSTALL_PREFIX&lt;/span&gt;&lt;span class=&quot;hljs-subst&quot;&gt;=&lt;/span&gt;/usr/&lt;span class=&quot;hljs-built_in&quot;&gt;local&lt;/span&gt;/lsyncd&lt;span class=&quot;hljs-subst&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;hljs-number&quot;&gt;2.1&lt;/span&gt;&lt;span class=&quot;hljs-number&quot;&gt;.5&lt;/span&gt;
make &lt;span class=&quot;hljs-subst&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; make install&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;CentOS系列需要自行下載rpm安裝，可以參考附錄的文件：&lt;/p&gt;



&lt;h2 id=&quot;執行範例&quot;&gt;執行範例&lt;/h2&gt;

&lt;p&gt;範例設定檔，在這邊是使用rsync的方式作為傳輸方法～&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot; hljs bash&quot;&gt;settings {
    logfile =&lt;span class=&quot;hljs-string&quot;&gt;&quot;/usr/local/lsyncd-2.1.5/var/lsyncd.log&quot;&lt;/span&gt;,
    statusFile =&lt;span class=&quot;hljs-string&quot;&gt;&quot;/usr/local/lsyncd-2.1.5/var/lsyncd.status&quot;&lt;/span&gt;,
    inotifyMode = &lt;span class=&quot;hljs-string&quot;&gt;&quot;CloseWrite&quot;&lt;/span&gt;,
    maxProcesses = &lt;span class=&quot;hljs-number&quot;&gt;8&lt;/span&gt;,
    }

sync {
    default.rsync,
    &lt;span class=&quot;hljs-built_in&quot;&gt;source&lt;/span&gt;    = &lt;span class=&quot;hljs-string&quot;&gt;&quot;/var/www/html&quot;&lt;/span&gt;,
    target    = &lt;span class=&quot;hljs-string&quot;&gt;&quot;ec2-user@54.172.25.83:/home/ec2-user/backup&quot;&lt;/span&gt;,
    maxDelays = &lt;span class=&quot;hljs-number&quot;&gt;5&lt;/span&gt;,
    delay = &lt;span class=&quot;hljs-number&quot;&gt;30&lt;/span&gt;,
    rsync     = {
        binary = &lt;span class=&quot;hljs-string&quot;&gt;&quot;/usr/bin/rsync&quot;&lt;/span&gt;,
        archive = &lt;span class=&quot;hljs-literal&quot;&gt;true&lt;/span&gt;,
        compress = &lt;span class=&quot;hljs-literal&quot;&gt;true&lt;/span&gt;,
        bwlimit   = &lt;span class=&quot;hljs-number&quot;&gt;2000&lt;/span&gt;
        }
    }&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;其他需要設定的地方包含：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;建立SSH Key，並且同步到遠端主機&lt;/li&gt;
&lt;li&gt;使用此SSH Key登入一次&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;執行設定：&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot; hljs lua&quot;&gt;# /usr/&lt;span class=&quot;hljs-keyword&quot;&gt;local&lt;/span&gt;/lsyncd-&lt;span class=&quot;hljs-number&quot;&gt;2.1&lt;/span&gt;&lt;span class=&quot;hljs-number&quot;&gt;.5&lt;/span&gt;/bin/lsyncd -log all\
    /usr/&lt;span class=&quot;hljs-keyword&quot;&gt;local&lt;/span&gt;/lsyncd-&lt;span class=&quot;hljs-number&quot;&gt;2.1&lt;/span&gt;&lt;span class=&quot;hljs-number&quot;&gt;.5&lt;/span&gt;/etc/lsyncd.conf&lt;/code&gt;&lt;/pre&gt;



&lt;h2 id=&quot;參考&quot;&gt;參考&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Github: &lt;a href=&quot;https://github.com/axkibe/lsyncd&quot;&gt;https://github.com/axkibe/lsyncd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;中文文獻: &lt;a href=&quot;http://seanlook.com/2015/05/06/lsyncd-synchronize-realtime/&quot;&gt;http://seanlook.com/2015/05/06/lsyncd-synchronize-realtime/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My Git: &lt;a href=&quot;https://github.com/qeek-dockerfiles/lsyncd&quot;&gt;https://github.com/qeek-dockerfiles/lsyncd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/4158011980060938449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/4158011980060938449'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/10/lsync-linux.html' title='lsync - 簡單操作的Linux同步服務'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-7867318506517874930</id><published>2015-10-12T19:16:00.004-07:00</published><updated>2015-10-12T19:29:25.371-07:00</updated><title type='text'>Test upload常用的兩個方法</title><content type='html'>常常忘記，還是寫下來好了...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step1: Configure your upload&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Reference: https://github.com/expressjs/multer&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Step2: Make a route for receive upload&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
router.post(&#39;/uploadtest&#39;, function(req, res, next) {&lt;br /&gt;
&amp;nbsp; res.end(&#39;done...&#39;);&lt;br /&gt;
});&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step3: Testing&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Upload using curl:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
curl -F &quot;image=@/Users/peihsinsu/Pictures/pic2.png&quot; http://localhost:3000/uploadtest -X POST&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Upload using upload form:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;form method=&quot;post&quot; action=&quot;/uploadtest&quot; name=&quot;submit&quot; enctype=&quot;multipart/form-data&quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;input type=&quot;file&quot; name=&quot;fileField&quot;&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Submit&quot;&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;/blockquote&gt;
&lt;h2 style=&quot;border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; font-family: &#39;Helvetica Neue&#39;, Arial, sans-serif; font-size: 24px; letter-spacing: 1px; line-height: 38px; margin: 0px 0px 10px; padding: 0px; text-rendering: optimizeLegibility;&quot;&gt;
&lt;/h2&gt;
&lt;h1 style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, sans-serif; font-size: 28px; line-height: 44px; margin: 0px 0px 10px; padding: 0px; text-rendering: optimizeLegibility;&quot;&gt;
&lt;pre style=&quot;background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); font-family: Consolas, &#39;Liberation Mono&#39;, Courier, monospace; font-size: 13px; font-weight: normal; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;/pre&gt;
&lt;/h1&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/7867318506517874930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/7867318506517874930'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/10/test-upload.html' title='Test upload常用的兩個方法'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-288389335563829893</id><published>2015-09-03T19:35:00.001-07:00</published><updated>2015-09-03T19:35:48.605-07:00</updated><title type='text'>電子郵件夾錢～這是什麼概念啊！！</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;偶然中發現，Gmail可以夾錢給收件人唷！這概念還真不賴... 哪時候有人夾錢給我呢＠＠&lt;div&gt;&lt;br&gt;  &lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmtr8zC-im8Gn05e_v1iWOLSwT44TzMeVDCAPRI2jjRm8tGAhHXS9V6uIpavcyR1pEDNB6sTGP-OWLW9V_i-Sm6CS4l-RbRYfYzb4ljktMfu8AlvVlvvnofUVPLEA_ApTQhfN87d9hf1rl/s1600/image-748606.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmtr8zC-im8Gn05e_v1iWOLSwT44TzMeVDCAPRI2jjRm8tGAhHXS9V6uIpavcyR1pEDNB6sTGP-OWLW9V_i-Sm6CS4l-RbRYfYzb4ljktMfu8AlvVlvvnofUVPLEA_ApTQhfN87d9hf1rl/s320/image-748606.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6190483034096262610&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh86J3_7MwJn3SEgQZZSua-x69PbrMFkW5TGnv4ikMcDv9rJYfzW2gJdId8XVb90WjyiGYKXjnopiQe5eEkm-7619KopZJvC8RysiudeJ6lVofnZV-YQrzEDd0xEXsl-XpDdP1QTeGqXbvr/s1600/image-752189.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh86J3_7MwJn3SEgQZZSua-x69PbrMFkW5TGnv4ikMcDv9rJYfzW2gJdId8XVb90WjyiGYKXjnopiQe5eEkm-7619KopZJvC8RysiudeJ6lVofnZV-YQrzEDd0xEXsl-XpDdP1QTeGqXbvr/s320/image-752189.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6190483045598578370&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6RKGhv-cIEtkZOpEe3uoaBAQ7YYy_zTf8HBsYpxO6I77LYqHD5-pd1a8N4Xcs31z7zTRqzCd12lGSgiz2KH_1PDXBarad6hGDRJjINIrSc-sR-WEk1J5EiX6KtQk4Jdw1ccazZhFdKgsG/s1600/image-754710.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6RKGhv-cIEtkZOpEe3uoaBAQ7YYy_zTf8HBsYpxO6I77LYqHD5-pd1a8N4Xcs31z7zTRqzCd12lGSgiz2KH_1PDXBarad6hGDRJjINIrSc-sR-WEk1J5EiX6KtQk4Jdw1ccazZhFdKgsG/s320/image-754710.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6190483057157563730&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/288389335563829893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/288389335563829893'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/09/blog-post.html' title='電子郵件夾錢～這是什麼概念啊！！'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmtr8zC-im8Gn05e_v1iWOLSwT44TzMeVDCAPRI2jjRm8tGAhHXS9V6uIpavcyR1pEDNB6sTGP-OWLW9V_i-Sm6CS4l-RbRYfYzb4ljktMfu8AlvVlvvnofUVPLEA_ApTQhfN87d9hf1rl/s72-c/image-748606.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-5265401559166295707</id><published>2015-08-12T05:54:00.001-07:00</published><updated>2015-08-12T05:54:37.995-07:00</updated><title type='text'>You&#39;ve been added as a contact on Cotap</title><content type='html'>&lt;style type=&quot;text/css&quot;&gt;      /**********************************************  * Ink v1.0.5 - Copyright 2013 ZURB Inc        *  **********************************************/  /* Client-specific Styles &amp; Reset */  #outlook a {    padding: 0;  }    body {    width: 100% !important;    min-width: 100%;    -webkit-text-size-adjust: 100%;    -ms-text-size-adjust: 100%;    margin: 0;    padding: 0;  }    /* .ExternalClass applies to Outlook.com (the artist formerly known as Hotmail)  */  .ExternalClass {    width: 100%;  }  .ExternalClass,  .ExternalClass p,  .ExternalClass span,  .ExternalClass font,  .ExternalClass td,  .ExternalClass div {    line-height: 100%;  }    #backgroundTable {    margin: 0;    padding: 0;    width: 100% !important;    line-height: 100% !important;  }    img {    outline: none;    text-decoration: none;    -ms-interpolation-mode: bicubic;    width: auto;    max-width: 100%;    float: left;    clear: both;    display: block;  }    center {    width: 100%;    min-width: 500px;  }    a img {    border: none;  }    p {    margin: 0 0 0 10px;  }    table {    border-spacing: 0;    border-collapse: collapse;  }    td {    word-break: break-word;    -webkit-hyphens: auto;    -moz-hyphens: auto;    hyphens: auto;    border-collapse: collapse !important;  }    table, tr, td {    padding: 0;    vertical-align: top;    text-align: left;  }    hr {    color: #d9d9d9;    background-color: #d9d9d9;    height: 1px;    border: none;  }    /* Responsive Grid */  table.body {    height: 100%;    width: 100%;  }    table.container {    width: 500px;    margin: 0 auto;    text-align: inherit;  }    table.row {    padding: 0px;    width: 100%;    position: relative;  }    table.container table.row {    display: block;  }    td.wrapper {    padding: 5px 20px 0px 0px;    position: relative;  }    table.columns,  table.column {    margin: 0 auto;  }    table.columns td,  table.column td {    padding: 0px 0px 5px;  }    table.columns td.sub-columns,  table.column td.sub-columns,  table.columns td.sub-column,  table.column td.sub-column {    padding-right: 10px;  }    td.sub-column, td.sub-columns {    min-width: 0px;  }    table.row td.last,  table.container td.last {    padding-right: 0px;  }    table.one {    width: 23.33333px;  }    table.two {    width: 66.66667px;  }    table.three {    width: 110px;  }    table.four {    width: 153.33333px;  }    table.five {    width: 196.66667px;  }    table.six {    width: 240px;  }    table.seven {    width: 283.33333px;  }    table.eight {    width: 326.66667px;  }    table.nine {    width: 370px;  }    table.ten {    width: 413.33333px;  }    table.eleven {    width: 456.66667px;  }    table.twelve {    width: 500px;  }    table.one center {    min-width: 23.33333px;  }    table.two center {    min-width: 66.66667px;  }    table.three center {    min-width: 110px;  }    table.four center {    min-width: 153.33333px;  }    table.five center {    min-width: 196.66667px;  }    table.six center {    min-width: 240px;  }    table.seven center {    min-width: 283.33333px;  }    table.eight center {    min-width: 326.66667px;  }    table.nine center {    min-width: 370px;  }    table.ten center {    min-width: 413.33333px;  }    table.eleven center {    min-width: 456.66667px;  }    table.twelve center {    min-width: 500px;  }    table.one .panel center {    min-width: 3.33333px;  }    table.two .panel center {    min-width: 46.66667px;  }    table.three .panel center {    min-width: 90px;  }    table.four .panel center {    min-width: 133.33333px;  }    table.five .panel center {    min-width: 176.66667px;  }    table.six .panel center {    min-width: 220px;  }    table.seven .panel center {    min-width: 263.33333px;  }    table.eight .panel center {    min-width: 306.66667px;  }    table.nine .panel center {    min-width: 350px;  }    table.ten .panel center {    min-width: 393.33333px;  }    table.eleven .panel center {    min-width: 436.66667px;  }    table.twelve .panel center {    min-width: 480px;  }    .body .columns td.one,  .body .column td.one {    width: 8.33333%;  }    .body .columns td.two,  .body .column td.two {    width: 16.66667%;  }    .body .columns td.three,  .body .column td.three {    width: 25%;  }    .body .columns td.four,  .body .column td.four {    width: 33.33333%;  }    .body .columns td.five,  .body .column td.five {    width: 41.66667%;  }    .body .columns td.six,  .body .column td.six {    width: 50%;  }    .body .columns td.seven,  .body .column td.seven {    width: 58.33333%;  }    .body .columns td.eight,  .body .column td.eight {    width: 66.66667%;  }    .body .columns td.nine,  .body .column td.nine {    width: 75%;  }    .body .columns td.ten,  .body .column td.ten {    width: 83.33333%;  }    .body .columns td.eleven,  .body .column td.eleven {    width: 91.66667%;  }    .body .columns td.twelve,  .body .column td.twelve {    width: 100%;  }    td.offset-by-one {    padding-left: 43.33333px;  }    td.offset-by-two {    padding-left: 86.66667px;  }    td.offset-by-three {    padding-left: 130px;  }    td.offset-by-four {    padding-left: 173.33333px;  }    td.offset-by-five {    padding-left: 216.66667px;  }    td.offset-by-six {    padding-left: 260px;  }    td.offset-by-seven {    padding-left: 303.33333px;  }    td.offset-by-eight {    padding-left: 346.66667px;  }    td.offset-by-nine {    padding-left: 390px;  }    td.offset-by-ten {    padding-left: 433.33333px;  }    td.offset-by-eleven {    padding-left: 476.66667px;  }    td.expander {    visibility: hidden;    width: 0px;    padding: 0 !important;  }    table.columns .text-pad,  table.column .text-pad {    padding-left: 20px;    padding-right: 20px;  }    table.columns .left-text-pad,  table.columns .text-pad-left,  table.column .left-text-pad,  table.column .text-pad-left {    padding-left: 20px;  }    table.columns .right-text-pad,  table.columns .text-pad-right,  table.column .right-text-pad,  table.column .text-pad-right {    padding-right: 20px;  }    /* Block Grid */  .block-grid {    width: 100%;    max-width: 500px;  }    .block-grid td {    display: inline-block;    padding: 10px;  }    .two-up td {    width: 230px;  }    .three-up td {    width: 146px;  }    .four-up td {    width: 105px;  }    .five-up td {    width: 80px;  }    .six-up td {    width: 63px;  }    .seven-up td {    width: 51px;  }    .eight-up td {    width: 42px;  }    /* Alignment &amp; Visibility Classes */  table.center, td.center {    text-align: center;  }    h1.center,  h2.center,  h3.center,  h4.center,  h5.center,  h6.center,  p.center {    text-align: center;  }    span.center {    display: block;    width: 100%;    text-align: center;  }    img.center {    margin: 0 auto;    float: none;  }    .show-for-small,  .hide-for-desktop {    display: none;  }    /* Typography */  body, table.body, h1, h2, h3, h4, h5, h6, p, td {    color: #222222;    font-family: Avenir, Helvetica, Arial, Geneva, sans-serif;    font-weight: normal;    padding: 0;    margin: 0;    text-align: left;    line-height: 1.3;  }    h1, h2, h3, h4, h5, h6 {    word-break: normal;  }    h1 {    font-size: 40px;  }    h2 {    font-size: 36px;  }    h3 {    font-size: 32px;  }    h4 {    font-size: 28px;  }    h5 {    font-size: 24px;  }    h6 {    font-size: 20px;  }    body, table.body, p, td {    font-size: 14px;    line-height: 19px;  }    p.lead, p.lede, p.leed {    font-size: 18px;    line-height: 21px;  }    p {    margin-bottom: 10px;  }    small {    font-size: 10px;  }    a {    color: #2ba6cb;    text-decoration: none;  }    a:hover {    color: #2795b6 !important;  }    a:active {    color: #2795b6 !important;  }    a:visited {    color: #2ba6cb !important;  }    h1 a,  h2 a,  h3 a,  h4 a,  h5 a,  h6 a {    color: #2ba6cb;  }    h1 a:active,  h2 a:active,  h3 a:active,  h4 a:active,  h5 a:active,  h6 a:active {    color: #2ba6cb !important;  }    h1 a:visited,  h2 a:visited,  h3 a:visited,  h4 a:visited,  h5 a:visited,  h6 a:visited {    color: #2ba6cb !important;  }    /* Panels */  .panel {    background: #f2f2f2;    border: 1px solid #d9d9d9;    padding: 10px !important;  }    .sub-grid table {    width: 100%;  }    .sub-grid td.sub-columns {    padding-bottom: 0;  }    /* Buttons */  table.button,  table.tiny-button,  table.small-button,  table.medium-button,  table.large-button {    width: 100%;    overflow: hidden;  }    table.button td,  table.tiny-button td,  table.small-button td,  table.medium-button td,  table.large-button td {    display: block;    width: auto !important;    text-align: center;    background: #2ba6cb;    border: none none #2284a1;    color: #ffffff;    padding: 8px 0;  }    table.tiny-button td {    padding: 5px 0 4px;  }    table.small-button td {    padding: 8px 0 7px;  }    table.medium-button td {    padding: 12px 0 10px;  }    table.large-button td {    padding: 21px 0 18px;  }    table.button td a,  table.tiny-button td a,  table.small-button td a,  table.medium-button td a,  table.large-button td a {    text-decoration: none;    font-family: Avenir, Helvetica, Arial, Geneva, sans-serif;    color: #ffffff;    font-size: 16px;    display: block;    height: 100%;    width: 100%;  }    table.tiny-button td a {    font-size: 12px;    font-weight: normal;  }    table.small-button td a {    font-size: 16px;  }    table.medium-button td a {    font-size: 20px;  }    table.large-button td a {    font-size: 24px;  }    table.button:hover td,  table.button:visited td,  table.button:active td {    background: #2795b6 !important;  }    table.button:hover td a,  table.button:visited td a,  table.button:active td a {    color: #ffffff !important;  }    table.button:hover td,  table.tiny-button:hover td,  table.small-button:hover td,  table.medium-button:hover td,  table.large-button:hover td {    background: #2795b6 !important;  }    table.button:hover td a,  table.button:active td a,  table.button td a:visited,  table.tiny-button:hover td a,  table.tiny-button:active td a,  table.tiny-button td a:visited,  table.small-button:hover td a,  table.small-button:active td a,  table.small-button td a:visited,  table.medium-button:hover td a,  table.medium-button:active td a,  table.medium-button td a:visited,  table.large-button:hover td a,  table.large-button:active td a,  table.large-button td a:visited {    color: #ffffff !important;  }    table.secondary td {    background: #e9e9e9;    border-color: #d0d0d0;    color: #555555;  }    table.secondary td a {    color: #555555;  }    table.secondary:hover td {    background: #d0d0d0 !important;    color: #555555;  }    table.secondary:hover td a,  table.secondary td a:visited,  table.secondary:active td a {    color: #555555 !important;  }    table.success td {    background: #5da423;    border-color: #457a1a;  }    table.success:hover td {    background: #457a1a !important;  }    table.alert td {    background: #c60f13;    border-color: #970b0e;  }    table.alert:hover td {    background: #970b0e !important;  }    table.radius td {    -webkit-border-radius: 3px;    -moz-border-radius: 3px;    border-radius: 3px;  }    table.round td {    -webkit-border-radius: 500px;    -moz-border-radius: 500px;    border-radius: 500px;  }    /* Outlook First */  body.outlook p {    display: inline !important;  }    /*  Media Queries */  @media only screen and (max-width: 517.24138px) {    table[class=&quot;body&quot;] img {      width: auto !important;      height: auto !important;    }      table[class=&quot;body&quot;] center {      min-width: 0 !important;    }      table[class=&quot;body&quot;] .container {      width: 95% !important;    }      table[class=&quot;body&quot;] .row {      width: 100% !important;      display: block !important;    }      table[class=&quot;body&quot;] .wrapper {      display: block !important;      padding-right: 0 !important;    }      table[class=&quot;body&quot;] .columns,    table[class=&quot;body&quot;] .column {      table-layout: fixed !important;      float: none !important;      width: 100% !important;      padding-right: 0px !important;      padding-left: 0px !important;      display: block !important;    }      table[class=&quot;body&quot;] .wrapper.first .columns,    table[class=&quot;body&quot;] .wrapper.first .column {      display: table !important;    }      table[class=&quot;body&quot;] table.columns td,    table[class=&quot;body&quot;] table.column td {      width: 100% !important;    }      table[class=&quot;body&quot;] .columns td.one,    table[class=&quot;body&quot;] .column td.one {      width: 8.33333% !important;    }      table[class=&quot;body&quot;] .columns td.two,    table[class=&quot;body&quot;] .column td.two {      width: 16.66667% !important;    }      table[class=&quot;body&quot;] .columns td.three,    table[class=&quot;body&quot;] .column td.three {      width: 25% !important;    }      table[class=&quot;body&quot;] .columns td.four,    table[class=&quot;body&quot;] .column td.four {      width: 33.33333% !important;    }      table[class=&quot;body&quot;] .columns td.five,    table[class=&quot;body&quot;] .column td.five {      width: 41.66667% !important;    }      table[class=&quot;body&quot;] .columns td.six,    table[class=&quot;body&quot;] .column td.six {      width: 50% !important;    }      table[class=&quot;body&quot;] .columns td.seven,    table[class=&quot;body&quot;] .column td.seven {      width: 58.33333% !important;    }      table[class=&quot;body&quot;] .columns td.eight,    table[class=&quot;body&quot;] .column td.eight {      width: 66.66667% !important;    }      table[class=&quot;body&quot;] .columns td.nine,    table[class=&quot;body&quot;] .column td.nine {      width: 75% !important;    }      table[class=&quot;body&quot;] .columns td.ten,    table[class=&quot;body&quot;] .column td.ten {      width: 83.33333% !important;    }      table[class=&quot;body&quot;] .columns td.eleven,    table[class=&quot;body&quot;] .column td.eleven {      width: 91.66667% !important;    }      table[class=&quot;body&quot;] .columns td.twelve,    table[class=&quot;body&quot;] .column td.twelve {      width: 100% !important;    }      table[class=&quot;body&quot;] td.offset-by-one, table[class=&quot;body&quot;] td.offset-by-two, table[class=&quot;body&quot;] td.offset-by-three, table[class=&quot;body&quot;] td.offset-by-four, table[class=&quot;body&quot;] td.offset-by-five, table[class=&quot;body&quot;] td.offset-by-six, table[class=&quot;body&quot;] td.offset-by-seven, table[class=&quot;body&quot;] td.offset-by-eight, table[class=&quot;body&quot;] td.offset-by-nine, table[class=&quot;body&quot;] td.offset-by-ten, table[class=&quot;body&quot;] td.offset-by-eleven {      padding-left: 0 !important;    }      table[class=&quot;body&quot;] table.columns td.expander {      width: 1px !important;    }      table[class=&quot;body&quot;] .right-text-pad,    table[class=&quot;body&quot;] .text-pad-right {      padding-left: 20px !important;    }      table[class=&quot;body&quot;] .left-text-pad,    table[class=&quot;body&quot;] .text-pad-left {      padding-right: 20px !important;    }      table[class=&quot;body&quot;] .hide-for-small,    table[class=&quot;body&quot;] .show-for-desktop {      display: none !important;    }      table[class=&quot;body&quot;] .show-for-small,    table[class=&quot;body&quot;] .hide-for-desktop {      display: inherit !important;    }  }  /**********************************************  * Cotap Email v1.0.0 - Copyright 2013 Cotap   *  **********************************************/  body {    background: #f7f7f7;  }    .body {    background: #f7f7f7;  }    .pre-header {    height: 0px;    overflow: hidden;    max-width: 0;    display: none;    float: left;  }    .center.body-td {    padding: 15px;  }    header td.six.sub-columns {    padding-bottom: 0px;  }    body p, body a {    color: #333;  }    body h1, body h2, body h3, body h4, body h5, body h6, p, a {    color: #db4c3a;    font-family: &quot;Avenir&quot;, Helvetica, Arial, Geneva, sans-serif;    font-weight: 100;  }    h1 {    font-size: 34px;    line-height: 38px !important;  }    h2 {    font-size: 32px;    line-height: 36px !important;  }    h3 {    font-size: 28px;    line-height: 32px !important;  }    h4 {    font-size: 26px;    line-height: 30px !important;  }    h5 {    font-size: 24px;    line-height: 28px !important;  }    h6 {    font-size: 18px;    line-height: 22px !important;  }    body p {    font-weight: 100;    font-size: 14px;    line-height: 24px;  }    body h1, body h2, body h3, body h4, body h5, body h6, body p {    margin-bottom: 10px;    word-wrap: normal;    -webkit-hyphens: none;    -moz-hyphens: none;    hyphens: none;  }    body small {    font-size: 12px;  }    ul {    padding-left: 15px;    margin-bottom: 0px;  }    ol {    padding-left: 20px;    margin-bottom: 0px;  }  ol li {    color: #db4c3a;  }    li {    padding-bottom: 10px;    margin: 0;    color: #777;  }    ul.cotap-red-bullets li {    color: #db4c3a;  }    ul.no-bullets {    padding-left: 0;  }  ul.no-bullets li {    list-style: none !important;  }    table.medium-button a {    font-size: 16px !important;  }    table.button, table.large-button, table.medium-button, table.small-button, table.tiny-button {    margin: 0px 0px 15px 0px;  }    table.center-table {    width: 100%;  }  table.center-table tr, table.center-table td, table.center-table table, table.center-table tr, table.center-table td {    text-align: center;  }  table.center-table table, table.center-table table.button, table.center-table table.tiny-button, table.center-table table.medium-button, table.center-table table.large-button {    display: block;    margin-left: auto;    margin-right: auto;  }    p.lead {    line-height: 28px;  }    .cotap-center, .cotap-center p, .cotap-center h1, .cotap-center h2, .cotap-center h3, .cotap-center h4, .cotap-center h5, .cotap-center h6 {    text-align: center;  }    table.cotap-white {    background: #fff;    width: 100%;  }    table tr td.cotap-white {    background: #fff;  }    table.cotap-red {    background: #db4c3a;    width: 100%;  }    table tr td.cotap-red {    background: #db4c3a;  }  table tr td.cotap-red * {    color: #fff;  }    table.cotap-green {    background: #18ad7a;    width: 100%;  }    table tr td.cotap-green {    background: #18ad7a;  }  table tr td.cotap-green * {    color: #fff;  }    /* Cotap Padding */  table td.cotap-small {    padding: 10px;    padding-bottom: 10px;  }    table td.cotap-medium {    padding: 30px;    padding-bottom: 20px;  }    table td.cotap-large {    padding: 40px;    padding-bottom: 30px;  }    table td.cotap-xlarge {    padding: 70px;    padding-bottom: 60px;  }    table td.cotap-xxlarge {    padding: 100px;    padding-bottom: 90px;  }    /*Set padding top and bottom*/  table td.cotap-tall {    padding-top: 50px;    padding-bottom: 40px;  }    table td.cotap-short {    padding-top: 40px;    padding-bottom: 30px;  }    table td.cotap-xshort {    padding-top: 30px;    padding-bottom: 20px;  }    table td.cotap-xxshort {    padding-top: 20px;    padding-bottom: 10px;  }    table.footer tr td p {    font-size: 12px;    line-height: 20px;  }    table.footer tr td a {    font-size: 12px;  }    .thin-headline {    font-weight: 100;    color: #9d9d9d;  }    .cotap-round {    border-radius: 50%;  }    .cotap-marketing-header {    font-size: 30px;    line-height: 40px;    padding-bottom: 15px;    font-weight: 600;    color: #4A4A4A;    margin-left: auto;    margin-right: auto;    display: block;  }    /* Cotap Colors */  /* Text */  .cotap-red-text {    color: #db4c3a;  }    .cotap-green-text {    color: #18ad7a;  }    .cotap-light-green-text {    color: #32c794;  }    .cotap-blue-text {    color: #3aa0db;  }    .cotap-gray-text {    color: #777;  }    .cotap-light-gray-text {    color: #999;  }    .cotap-light-gray-alt-text {    color: #ACACAC;  }    .cotap-dark-gray-text {    color: #333;  }    .cotap-dark-gray-alt-text {    color: #323c41;  }    /* Backgound */  .cotap-red-background {    background-color: #db4c3a;  }    .cotap-green-background {    background-color: #18ad7a;  }    .cotap-light-green-background {    background-color: #32c794;  }    .cotap-blue-background {    background-color: #3aa0db;  }    .cotap-gray-background {    background-color: #777;  }    .cotap-light-gray-background {    background-color: #999;  }    .cotap-light-gray-alt-background {    color: #ACACAC;  }    .cotap-dark-gray-background {    background-color: #333;  }    .cotap-dark-gray-alt-background {    background-color: #323c41;  }    /*Cotap Buttons*/  /*Red Button*/  table.cotap-red-button td {    background: #db4c3a;    border-color: #db4c3a;    color: #fff;  }    table.cotap-red-button td a {    color: #fff;  }    table.cotap-red-button:hover td {    background: #d53a27 !important;    color: #fff;  }    table.cotap-red-button:hover td a,  table.cotap-red-button td a:visited,  table.cotap-red-button:active td a {    color: #fff !important;  }    /* Green Button */  table.cotap-green-button td {    background: #18ad7a;    border-color: #18ad7a;    color: #fff;  }    table.cotap-green-button td a {    color: #fff;  }    table.cotap-green-button:hover td {    background: #15976a !important;    color: #fff;  }    table.cotap-green-button:hover td a,  table.cotap-green-button td a:visited,  table.cotap-green-button:active td a {    color: #fff !important;  }    /* blue Button */  table.cotap-blue-button td {    background: #3aa0db;    border-color: #3aa0db;    color: #fff;  }    table.cotap-blue-button td a {    color: #fff;  }    table.cotap-blue-button:hover td {    background: #2795d5 !important;    color: #fff;  }    table.cotap-blue-button:hover td a,  table.cotap-blue-button td a:visited,  table.cotap-blue-button:active td a {    color: #fff !important;  }    /* dark-gray Button */  table.cotap-dark-gray-button td {    background: #333333;    border-color: #333333;    color: #fff;  }    table.cotap-dark-gray-button td a {    color: #fff;  }    table.cotap-dark-gray-button:hover td {    background: #262626 !important;    color: #fff;  }    table.cotap-dark-gray-button:hover td a,  table.cotap-dark-gray-button td a:visited,  table.cotap-dark-gray-button:active td a {    color: #fff !important;  }    /* Cotap Red Outline */  table.cotap-red-button-outline {    border-radius: 5px;    border: 1px solid #db4c3a !important;    border-collapse: initial;  }    table.cotap-red-button-outline td {    background: #fff;    color: #db4c3a;    border-radius: 3px;    border: 0px transparent !important;  }    table.cotap-red-button-outline td a {    color: #db4c3a !important;  }    table.cotap-red-button-outline:hover td {    background: #db4c3a !important;    color: #fff !important;  }    table.cotap-red-button-outline:hover td a,  table.cotap-red-button-outline td a:visited,  table.cotap-red-button-outline:active td a {    background: #db4c3a !important;  }    table.gray-table {    background-color: #f7f7f7;    border-radius: 10px;    width: 100%;    display: table !important;    margin-bottom: 0px;  }  table.gray-table tr td {    padding: 30px 30px;    color: #777;    text-align: center;  }    .cotap-red-line {    border-bottom: 3px solid #db4c3a;  }    .cotap-promotion span {    text-decoration: underline;  }    .cotap-promotion p {    font-size: 18px;  }    @media only screen and (max-width: 517.24138px) {    table[class=&quot;body&quot;] td.cotap-small {      padding: 25px 15px 5px 15px !important;    }      table[class=&quot;body&quot;] td.cotap-medium {      padding: 25px 15px 5px 15px !important;    }      table[class=&quot;body&quot;] td.cotap-large {      padding: 25px 15px 5px 15px !important;    }      table[class=&quot;body&quot;] td.cotap-xlarge {      padding: 25px 15px 5px 15px !important;    }      table[class=&quot;body&quot;] td.cotap-xxlarge {      padding: 25px 15px 5px 15px !important;    }      #promotion-text {      background: url(https://api.cotap.com/content/f4d2c190d135c18da78447b803460aac-original.png) 15px center no-repeat !important;      padding: 20px 15px 20px 90px !important;    }    #promotion-text p {      font-size: 12px !important;    }      /*Mobile reset H tags*/    h1, h2, h3 {      font-size: 24px !important;      line-height: 28px !important;    }      h4, h5, h6 {      font-size: 18px !important;      line-height: 22px !important;    }      .cotap-mobile-center {      text-align: center !important;    }    .cotap-mobile-center * {      text-align: center !important;    }    .cotap-mobile-center table {      display: inline-block;    }      .hide-on-gmail {      width: auto !important;      max-height: 1000px !important;      overflow: visible !important;      float: none !important;      display: block !important;    }      table[class=&quot;body&quot;] td.mobile-side-padding {      padding-right: 15px !important;      padding-left: 15px !important;    }  }  .mobile-padding {    width: 100%;  }    .hide-on-gmail img {    clear: both !important;    float: none !important;    height: auto !important;    max-height: 1000px !important;    margin: 0 auto 20px auto;  }    .align-bottom {    vertical-align: bottom;  }    /* One Off */  .login-number {    margin-bottom: 0px;  }    .login-number span {    font-size: 50px;    line-height: 40px;    font-family: &quot;Avenir&quot;, Helvetica, Arial, Geneva, sans-serif;    font-weight: 100;    padding-bottom: 30px;    display: inline-block;    border-bottom: 2px solid #ACACAC;  }    .login-header {    padding-top: 30px;  }    .verification-code {    font-size: 50px;    letter-spacing: 2.5px;    color: #3aa0db;    font-weight: 200 !important;  }    .see-conversation-subject {    font-size: 18px;    padding-bottom: 15px;  }    .see-conversation-header {    padding-top: 8px;  }    table.sub-line {    width: 175px;    max-width: 175px;  }    .sub-line td {    padding-top: 5px;    padding-bottom: 20px;    width: 175px;  }  .sub-line td p {    margin-bottom: 0;    line-height: 5px;    border-bottom: 1px solid #D9D9D9;    width: 175px;  }    img.avatar {    margin: 0 auto 8px auto !important;  }    h1.avatar, h2.avatar, h3.avatar, h4.avatar, h5.avatar, h6.avatar {    margin: 0 0 2px 0 !important;    margin-bottom: 0px;  }    p.avatar {    padding: 0 0 10px 0 !important;    margin-bottom: 10px !important;  }    .sub-line.red-line td p {    border-bottom: 1px solid #db4c3a;  }    @media only screen and (max-width: 517.24138px) {    table[class=&quot;body&quot;] td.login-number-cell {      padding-top: 60px !important;      padding-bottom: 60px !important;    }      table[class=&quot;body&quot;] table.columns table.reset td,    table[class=&quot;body&quot;] table.column table.reset td {      width: initial !important;    }  }    /*# sourceMappingURL=main.css.map */      &lt;/style&gt;      &lt;!-- Start Body --&gt;    &lt;table class=&quot;body&quot; style=&quot;background: #f7f7f7; border-collapse: collapse; border-spacing: 0; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; height: 100%; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; width: 100%;&quot;&gt;      &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;        &lt;td class=&quot;center body-td&quot; align=&quot;center&quot; valign=&quot;top&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 15px; text-align: center; vertical-align: top; word-break: break-word;&quot;&gt;          &lt;center style=&quot;min-width: 500px; width: 100%;&quot;&gt;          &lt;!-- Open Container --&gt;  &lt;table class=&quot;container&quot; style=&quot;border-collapse: collapse; border-spacing: 0; margin: 0 auto; padding: 0; text-align: inherit; vertical-align: top; width: 500px;&quot;&gt;    &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;      &lt;td style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;        &lt;!-- Open Row --&gt;        &lt;table class=&quot;row&quot; style=&quot;border-collapse: collapse; border-spacing: 0; display: block; padding: 0px; position: relative; text-align: left; vertical-align: top; width: 100%;&quot;&gt;          &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;            &lt;td class=&quot; last  wrapper&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 5px 20px 0px 0px; padding-right: 0px; position: relative; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;              &lt;!-- Open Wrapper - Default is twelve unless specified --&gt;              &lt;table class=&quot;twelve columns&quot; style=&quot;border-collapse: collapse; border-spacing: 0; margin: 0 auto; padding: 0; text-align: left; vertical-align: top; width: 500px;&quot;&gt;                &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;                  &lt;td class=&quot;&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0px 0px 5px; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;                    &lt;!-- Open Cotap Module - Default is cotap-white unless specified --&gt;                    &lt;table class=&quot; na &quot; style=&quot;border-collapse: collapse; border-spacing: 0; padding: 0; text-align: left; vertical-align: top;&quot;&gt;                      &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;                        &lt;td class=&quot;&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0px 0px 5px; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;        &lt;a href=&quot;https://www.cotap.com/?utm_source=email&amp;amp;utm_medium=logo&amp;amp;utm_campaign=email&quot; target=&quot;_blank&quot; style=&quot;color: #333; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-weight: 100; text-decoration: none;&quot;&gt;&lt;img src=&quot;https://api.cotap.com/content/09b29d5bb7017af06ab1282aa6a2ba61&quot; alt=&quot;Cotap&quot; style=&quot;-ms-interpolation-mode: bicubic; border: none; clear: both; display: block; float: left; max-width: 100%; outline: none; text-decoration: none; width: auto;&quot; /&gt;&lt;/a&gt;                          &lt;/td&gt;                      &lt;/tr&gt;                    &lt;/table&gt;                    &lt;!-- Close Cotap Module --&gt;                  &lt;/td&gt;                  &lt;td class=&quot;expander&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; visibility: hidden; width: 0px; word-break: break-word;&quot;&gt;&lt;/td&gt;                &lt;/tr&gt;              &lt;/table&gt;              &lt;!-- Close Wrapper --&gt;            &lt;/td&gt;          &lt;/tr&gt;        &lt;/table&gt;        &lt;!-- Close Row --&gt;      &lt;/td&gt;    &lt;/tr&gt;  &lt;/table&gt;  &lt;!-- Close Container --&gt;          &lt;!-- Open Container --&gt;  &lt;table class=&quot;container&quot; style=&quot;border-collapse: collapse; border-spacing: 0; margin: 0 auto; padding: 0; text-align: inherit; vertical-align: top; width: 500px;&quot;&gt;    &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;      &lt;td style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;        &lt;!-- Open Row --&gt;        &lt;table class=&quot;row&quot; style=&quot;border-collapse: collapse; border-spacing: 0; display: block; padding: 0px; position: relative; text-align: left; vertical-align: top; width: 100%;&quot;&gt;          &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;            &lt;td class=&quot; last  wrapper&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 5px 20px 0px 0px; padding-right: 0px; position: relative; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;              &lt;!-- Open Wrapper - Default is twelve unless specified --&gt;              &lt;table class=&quot;twelve columns&quot; style=&quot;border-collapse: collapse; border-spacing: 0; margin: 0 auto; padding: 0; text-align: left; vertical-align: top; width: 500px;&quot;&gt;                &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;                  &lt;td class=&quot;&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0px 0px 5px; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;                    &lt;!-- Open Cotap Module - Default is cotap-white unless specified --&gt;                    &lt;table class=&quot; cotap-white &quot; style=&quot;background: #fff; border-collapse: collapse; border-spacing: 0; padding: 0; text-align: left; vertical-align: top; width: 100%;&quot;&gt;                      &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;                        &lt;td class=&quot;cotap-xlarge cotap-center&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 70px; padding-bottom: 60px; text-align: center; vertical-align: top; word-break: break-word;&quot;&gt;                              &lt;h4 class=&quot;avatar&quot; style=&quot;-moz-hyphens: none; -webkit-hyphens: none; color: #db4c3a; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-size: 26px; font-weight: 100; hyphens: none; line-height: 30px; margin: 0 0 2px 0; margin-bottom: 0px; padding: 0; text-align: center; word-break: normal; word-wrap: normal;&quot;&gt;Cotap is a secure texting app for teams.&lt;/h4&gt;      &lt;h6 class=&quot;cotap-gray-text&quot; style=&quot;-moz-hyphens: none; -webkit-hyphens: none; color: #777; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-size: 18px; font-weight: 100; hyphens: none; line-height: 22px; margin: 0; margin-bottom: 10px; padding: 0; text-align: center; word-break: normal; word-wrap: normal;&quot;&gt;      View the Blogger directory.    &lt;/h6&gt;      &lt;br /&gt;      &lt;table class=&quot;center-table&quot; style=&quot;border-collapse: collapse; border-spacing: 0; padding: 0; text-align: left; vertical-align: top; width: 100%;&quot;&gt;      &lt;tr style=&quot;padding: 0; text-align: center; vertical-align: top;&quot;&gt;        &lt;td style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0px 0px 5px; text-align: center; vertical-align: top; word-break: break-word;&quot;&gt;          &lt;table class=&quot;medium-button round cotap-tall cotap-blue-button&quot; style=&quot;border-collapse: collapse; border-spacing: 0; display: inline-block; margin: 0 0 0 0; margin-left: auto; margin-right: auto; overflow: hidden; padding: 0; text-align: center; vertical-align: top; width: 140px;&quot;&gt;            &lt;tbody&gt;              &lt;tr style=&quot;padding: 0; text-align: center; vertical-align: top;&quot;&gt;                &lt;td style=&quot;-moz-border-radius: 500px; -moz-hyphens: auto; -webkit-border-radius: 500px; -webkit-hyphens: auto; background: #3aa0db; border: none none #2284a1; border-collapse: collapse; border-color: #3aa0db; border-radius: 500px; color: #fff; display: block; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 12px 0 10px; text-align: center; vertical-align: top; width: auto; word-break: break-word;&quot;&gt;                  &lt;a href=&quot;https://app.cotap.com/open?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIzMjg2NTQyNjJkZmEzZGMwYWE0M2FjMTcxZjZkODA5MzdhNWY1YjQ5MGRmY2YzNTA1YmYzNjE2MjlmM2IzZDQ3Iiwic3ViIjoic2ltb25zdS5tYWlsLjA5NTM2MDkyNzVAYmxvZ2dlci5jb20iLCJpc3MiOiJjb20uY290YXAuY291cmllciIsImF1ZCI6ImNvbS5jb3RhcC5hcGkudGFsa2VyIiwiZXhwIjoxNDM5OTg4ODA0LCJpYXQiOjE0MzkzODQwMDQsImNvbS5jb3RhcC5wYXlsb2FkIjp7InRhbGtlciI6eyJmaXJzdF9uYW1lIjoiU2ltb24iLCJsYXN0X25hbWUiOiJTdSJ9fX0.QPeU7FVL7_nTDSszzAFknMoHzw5KqI9Z4kgc1P0yu9c&quot; style=&quot;color: #fff; display: block; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 16px; font-weight: 100; height: 100%; text-decoration: none; width: 140px;&quot;&gt;Get Started&lt;/a&gt;                &lt;/td&gt;              &lt;/tr&gt;            &lt;/tbody&gt;          &lt;/table&gt;        &lt;/td&gt;      &lt;/tr&gt;    &lt;/table&gt;                          &lt;/td&gt;                      &lt;/tr&gt;                    &lt;/table&gt;                    &lt;!-- Close Cotap Module --&gt;                  &lt;/td&gt;                  &lt;td class=&quot;expander&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; visibility: hidden; width: 0px; word-break: break-word;&quot;&gt;&lt;/td&gt;                &lt;/tr&gt;              &lt;/table&gt;              &lt;!-- Close Wrapper --&gt;            &lt;/td&gt;          &lt;/tr&gt;        &lt;/table&gt;        &lt;!-- Close Row --&gt;      &lt;/td&gt;    &lt;/tr&gt;  &lt;/table&gt;  &lt;!-- Close Container --&gt;        &lt;!-- Open Container --&gt;  &lt;table class=&quot;container&quot; style=&quot;border-collapse: collapse; border-spacing: 0; margin: 0 auto; padding: 0; text-align: inherit; vertical-align: top; width: 500px;&quot;&gt;    &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;      &lt;td style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;        &lt;!-- Open Row --&gt;        &lt;table class=&quot;row&quot; style=&quot;border-collapse: collapse; border-spacing: 0; display: block; padding: 0px; position: relative; text-align: left; vertical-align: top; width: 100%;&quot;&gt;          &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;            &lt;td class=&quot; last  wrapper&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 5px 20px 0px 0px; padding-right: 0px; position: relative; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;              &lt;!-- Open Wrapper - Default is twelve unless specified --&gt;              &lt;table class=&quot;twelve columns&quot; style=&quot;border-collapse: collapse; border-spacing: 0; margin: 0 auto; padding: 0; text-align: left; vertical-align: top; width: 500px;&quot;&gt;                &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;                  &lt;td class=&quot;&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0px 0px 5px; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;                    &lt;!-- Open Cotap Module - Default is cotap-white unless specified --&gt;                    &lt;table class=&quot; cotap-white &quot; style=&quot;background: #fff; border-collapse: collapse; border-spacing: 0; padding: 0; text-align: left; vertical-align: top; width: 100%;&quot;&gt;                      &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;                        &lt;td class=&quot;cotap-medium cotap-center&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 30px; padding-bottom: 20px; text-align: center; vertical-align: top; word-break: break-word;&quot;&gt;        &lt;p class=&quot;cotap-gray-text&quot; style=&quot;-moz-hyphens: none; -webkit-hyphens: none; color: #777; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: 100; hyphens: none; line-height: 24px; margin: 0; margin-bottom: 10px; padding: 0; text-align: center; word-wrap: normal;&quot;&gt;      Are you using WhatsApp, GroupMe, or iMessage to text your coworkers? &lt;a href=&quot;https://www.cotap.com/blog/whatsapp-for-work-is-nsfw/&quot; class=&quot;cotap-red-text&quot; style=&quot;color: #db4c3a; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-weight: 100; text-decoration: none;&quot;&gt;        See why&lt;/a&gt; Cotap is better for work.    &lt;/p&gt;                          &lt;/td&gt;                      &lt;/tr&gt;                    &lt;/table&gt;                    &lt;!-- Close Cotap Module --&gt;                  &lt;/td&gt;                  &lt;td class=&quot;expander&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; visibility: hidden; width: 0px; word-break: break-word;&quot;&gt;&lt;/td&gt;                &lt;/tr&gt;              &lt;/table&gt;              &lt;!-- Close Wrapper --&gt;            &lt;/td&gt;          &lt;/tr&gt;        &lt;/table&gt;        &lt;!-- Close Row --&gt;      &lt;/td&gt;    &lt;/tr&gt;  &lt;/table&gt;  &lt;!-- Close Container --&gt;      &lt;!-- Start Footer --&gt;  &lt;table class=&quot;container footer&quot; style=&quot;border-collapse: collapse; border-spacing: 0; margin: 0 auto; padding: 0; text-align: inherit; vertical-align: top; width: 500px;&quot;&gt;    &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;      &lt;td style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;      &lt;!-- container start above --&gt;          &lt;table class=&quot;row&quot; style=&quot;border-collapse: collapse; border-spacing: 0; display: block; padding: 0px; position: relative; text-align: left; vertical-align: top; width: 100%;&quot;&gt;          &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;            &lt;td class=&quot;wrapper last&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 5px 20px 0px 0px; padding-right: 0px; position: relative; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;                &lt;table class=&quot;twelve columns&quot; style=&quot;border-collapse: collapse; border-spacing: 0; margin: 0 auto; padding: 0; text-align: left; vertical-align: top; width: 500px;&quot;&gt;                &lt;tr style=&quot;padding: 0; text-align: left; vertical-align: top;&quot;&gt;                  &lt;td align=&quot;center&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0px 0px 5px; text-align: left; vertical-align: top; word-break: break-word;&quot;&gt;                    &lt;center style=&quot;min-width: 500px; width: 100%;&quot;&gt;                      &lt;p class=&quot;cotap-light-gray-alt-text&quot; style=&quot;-moz-hyphens: none; -webkit-hyphens: none; color: #ACACAC; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-size: 12px; font-weight: 100; hyphens: none; line-height: 20px; margin: 5px 0 10px 0; margin-bottom: 10px; margin-top: 5px; padding: 0; text-align: center; word-wrap: normal;&quot;&gt;                        Sent by &lt;a href=&quot;https://www.cotap.com/?utm_source=email&amp;amp;utm_medium=footer&amp;amp;utm_campaign=email&quot; target=&quot;_blank&quot; class=&quot;cotap-red-text&quot; style=&quot;color: #db4c3a; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-size: 12px; font-weight: 100; text-decoration: none;&quot;&gt;Cotap&lt;/a&gt; | 55 New Montgomery Street #888 | San Francisco, CA 94105                      &lt;/p&gt;                          &lt;p style=&quot;-moz-hyphens: none; -webkit-hyphens: none; color: #ACACAC; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-size: 12px; font-weight: 100; hyphens: none; line-height: 20px; margin: 0; margin-bottom: 10px; padding: 0; text-align: center; word-wrap: normal;&quot; class=&quot;cotap-light-gray-alt-text&quot;&gt;                        &lt;a href=&quot;https://www.cotap.com/unsubscribed/?address=simonsu.mail.0953609275%40blogger.com&quot; target=&quot;_blank&quot; class=&quot;cotap-light-gray-alt-text&quot; style=&quot;color: #ACACAC; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-size: 12px; font-weight: 100; text-decoration: none;&quot;&gt;Unsubscribe&lt;/a&gt; | &lt;a href=&quot;https://www.cotap.com/legal/privacy/&quot; target=&quot;_blank&quot; class=&quot;cotap-light-gray-alt-text&quot; style=&quot;color: #ACACAC; font-family: &#39;Avenir&#39;, Helvetica, Arial, Geneva, sans-serif; font-size: 12px; font-weight: 100; text-decoration: none;&quot;&gt;Privacy Policy&lt;/a&gt;                      &lt;/p&gt;                            &lt;/center&gt;                  &lt;/td&gt;                  &lt;td class=&quot;expander&quot; style=&quot;-moz-hyphens: auto; -webkit-hyphens: auto; border-collapse: collapse; color: #222222; font-family: Avenir, Helvetica, Arial, Geneva, sans-serif; font-size: 14px; font-weight: normal; hyphens: auto; line-height: 19px; margin: 0; padding: 0; text-align: left; vertical-align: top; visibility: hidden; width: 0px; word-break: break-word;&quot;&gt;&lt;/td&gt;                &lt;/tr&gt;              &lt;/table&gt;              &lt;/td&gt;          &lt;/tr&gt;        &lt;/table&gt;        &lt;/td&gt;    &lt;/tr&gt;  &lt;/table&gt;  &lt;!-- End Footer --&gt;                &lt;/center&gt;        &lt;/td&gt;      &lt;/tr&gt;    &lt;/table&gt;    &lt;!-- End Body --&gt;    </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5265401559166295707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5265401559166295707'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/08/youve-been-added-as-contact-on-cotap.html' title='You&#39;ve been added as a contact on Cotap'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-2767210809047605616</id><published>2015-05-04T07:31:00.000-07:00</published><updated>2015-05-04T07:32:17.713-07:00</updated><title type='text'>CloudFlare改頭換面！</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;最近流行換新裝？！ Cloudflare改頭換面啦 :D&lt;div&gt;&lt;br clear=&quot;all&quot;&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs-SaLJeiLWA8mnNOaVsMmMbAxntG5FPbq1DAncaR3q1jBhFQqx3BdurPZyiECI4VoCRdoACJXHCTjfNVmZgu6GArj76KQAdCKRKUvyaRR1qwBqPwn7R22T8wsqQ895kRb2pqBzQca1A0p/s1600/image-737714.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs-SaLJeiLWA8mnNOaVsMmMbAxntG5FPbq1DAncaR3q1jBhFQqx3BdurPZyiECI4VoCRdoACJXHCTjfNVmZgu6GArj76KQAdCKRKUvyaRR1qwBqPwn7R22T8wsqQ895kRb2pqBzQca1A0p/s320/image-737714.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6145024196538314530&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2767210809047605616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/2767210809047605616'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/05/cloudflare.html' title='CloudFlare改頭換面！'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs-SaLJeiLWA8mnNOaVsMmMbAxntG5FPbq1DAncaR3q1jBhFQqx3BdurPZyiECI4VoCRdoACJXHCTjfNVmZgu6GArj76KQAdCKRKUvyaRR1qwBqPwn7R22T8wsqQ895kRb2pqBzQca1A0p/s72-c/image-737714.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-1396602841395310228</id><published>2015-04-10T21:19:00.000-07:00</published><updated>2015-04-10T21:20:11.175-07:00</updated><title type='text'>docker mysql image encoding change to utf8</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;最近在使用docker的mysql image掛載mysql db時候&lt;div&gt;發現server的語系都是在latin1的狀態&lt;/div&gt;&lt;div&gt;而mysql image又不允許直接把my.cnf換掉...&lt;/div&gt;&lt;div&gt;但是可以overwrite /etc/mysql/conf.d這個資料匣&lt;/div&gt;&lt;div&gt;來重寫mysqld的語系設定...&lt;br&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;這是原始資料庫啟動後透過&amp;quot;\s&amp;quot;來查看server狀態&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;# mysql -h123.123.123.123 -uroot -p&lt;br&gt;Enter password:&lt;br&gt;Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br&gt;Your MySQL connection id is 3&lt;br&gt;Server version: 5.5.42 MySQL Community Server (GPL)&lt;br&gt;Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.&lt;br&gt;Oracle is a registered trademark of Oracle Corporation and/or its&lt;br&gt;affiliates. Other names may be trademarks of their respective&lt;br&gt;owners.&lt;br&gt;Type &amp;#39;help;&amp;#39; or &amp;#39;\h&amp;#39; for help. Type &amp;#39;\c&amp;#39; to clear the current input statement.&lt;br&gt;mysql&amp;gt; \s&lt;br&gt;--------------&lt;br&gt;mysql  Ver 14.14 Distrib 5.5.41, for debian-linux-gnu (x86_64) using readline 6.2&lt;br&gt;Connection id:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;3&lt;br&gt;Current database:&lt;br&gt;Current user:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;a href=&quot;mailto:root@123.123.123.123&quot;&gt;root@123.123.123.123&lt;/a&gt;&lt;br&gt;SSL:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;Not in use&lt;br&gt;Current pager:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;stdout&lt;br&gt;Using outfile:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&amp;#39;&amp;#39;&lt;br&gt;Using delimiter:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;;&lt;br&gt;Server version:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;5.5.42 MySQL Community Server (GPL)&lt;br&gt;Protocol version:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;10&lt;br&gt;Connection:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;211.78.245.67 via TCP/IP&lt;br&gt;Server characterset:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	latin1&lt;br&gt;&lt;/span&gt;Db     characterset:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	latin1&lt;br&gt;&lt;/span&gt;Client characterset:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	latin1&lt;br&gt;&lt;/span&gt;Conn.  characterset:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;latin1&lt;br&gt;TCP port:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;3306&lt;br&gt;Uptime:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;49 sec&lt;br&gt;Threads: 3  Questions: 25  Slow queries: 0  Opens: 33  Flush tables: 1  Open tables: 26  Queries per second avg: 0.510&lt;br&gt;--------------&lt;br&gt;mysql&amp;gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;我們建立一個docker.cnf檔案如下&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;# cat docker.cnf&lt;br&gt;[mysqld]&lt;br&gt;user = mysql&lt;br&gt;datadir = /var/lib/mysql&lt;br&gt;collation-server = utf8_unicode_ci&lt;br&gt;init-connect=&amp;#39;SET NAMES utf8&amp;#39;&lt;br&gt;character-set-server = utf8&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;我的啟動command:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;docker run --name mydb -p 3306:3306 -v /root/mysql-data:/var/lib/mysql \ &lt;/blockquote&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;  -v /root/mysql-config:/etc/mysql/conf.d \ &lt;/blockquote&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;接著應該就可以在登入mysql後透過&amp;quot;\s&amp;quot;看到語系部分已經是utf8&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;Server characterset:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;utf8&lt;br&gt;Db     characterset:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;utf8&lt;br&gt;Client characterset:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;utf8&lt;br&gt;Conn.  characterset:&lt;span class=&quot;&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;utf8&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;PS: 關於client部分，需要在[client]部分使用，也就是連線的那端要改my.cnf來使用utf8連線...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/1396602841395310228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/1396602841395310228'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/04/docker-mysql-image-encoding-change-to.html' title='docker mysql image encoding change to utf8'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-5208169624962094135</id><published>2015-03-27T06:48:00.001-07:00</published><updated>2015-04-01T01:02:44.497-07:00</updated><title type='text'>簡單的SSHFS mount...</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;
&lt;div&gt;
前陣子看到nixCcraft所PO的&lt;a href=&quot;http://www.cyberciti.biz/faq/how-to-mount-remote-directory-filesystems-with-sshfs-on-linux/&quot;&gt;SSHFS文章&lt;/a&gt;，一直想找機會試試看&lt;/div&gt;
&lt;div&gt;
今天有機會來玩一下 :D&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Debian上還滿簡單，只要直接安裝即可：&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left-color: rgb(204,204,204); border-left-style: solid; border-left-width: 1px; margin: 0px 0px 0px 0.8ex; padding-left: 1ex;&quot;&gt;
sudo apt-get install sshfs -y&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
CentOS上，如果安裝時找不到套件，可以先安裝epel-release後再進行安裝&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left-color: rgb(204,204,204); border-left-style: solid; border-left-width: 1px; margin: 0px 0px 0px 0.8ex; padding-left: 1ex;&quot;&gt;
sudo yum install epel-release -y&lt;br /&gt;
sudo yum install fuse-sshfs -y&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
接著，就可以操作mount的動作&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIqnmKT_szFmKsanXfXo3SLwxHjkCRTwEQlxPaWvzrqvNbSwaiy3ovtA-Fk0cuLEAqeBoUE7PcYv3nDkO1cftzutlzLHxTKf-RHfvblmx9aFddui15WJ_Lgxu0xwUUi4Z1rkCA-bzfVyl/s1600/sshfs-1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIqnmKT_szFmKsanXfXo3SLwxHjkCRTwEQlxPaWvzrqvNbSwaiy3ovtA-Fk0cuLEAqeBoUE7PcYv3nDkO1cftzutlzLHxTKf-RHfvblmx9aFddui15WJ_Lgxu0xwUUi4Z1rkCA-bzfVyl/s1600/sshfs-1.png&quot; height=&quot;195&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
實際測試一下速度 - sshfs建立100M檔案：&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqemECgcVR8wdIobpV9EZ49P6o52SrZuSgYJVMhLDubrpC4A3itiJBnw-7hRL35xOLvmuRFAsLLX78bzU88R7mSLgsc-VVTPu3haVQBhWOrurVx8vgFS6JPP8waJu7Fmqbxr1pf7RfA3Ot/s1600/sshfs-2.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqemECgcVR8wdIobpV9EZ49P6o52SrZuSgYJVMhLDubrpC4A3itiJBnw-7hRL35xOLvmuRFAsLLX78bzU88R7mSLgsc-VVTPu3haVQBhWOrurVx8vgFS6JPP8waJu7Fmqbxr1pf7RfA3Ot/s1600/sshfs-2.png&quot; height=&quot;76&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
與自己本身建立100M檔案：&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Q09RdRVOcwW31teh9PDXEDUawDHvROI3WwFKd8f-3v0E_JkXzhshBk4wGv35kLy9UwNN4xONCtMuaYPDcUCSWpt6cTKRPLytC4E8q18oVZr8CPqEHPA7bNI9zpHoWqSN2ndWwO2jmCIa/s1600/sshfs-3.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Q09RdRVOcwW31teh9PDXEDUawDHvROI3WwFKd8f-3v0E_JkXzhshBk4wGv35kLy9UwNN4xONCtMuaYPDcUCSWpt6cTKRPLytC4E8q18oVZr8CPqEHPA7bNI9zpHoWqSN2ndWwO2jmCIa/s1600/sshfs-3.png&quot; height=&quot;108&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
與iscsi比較一下&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj20J_IFcNPGjvL7Dc_t0IslfClrFFsqQfPFVcYXE7pqta_TsVvoSjPgO4AjE6jsdXoODmrb1SFXLWuRFJWB3MBUtD1stOnyzQvuj6b0hkPyov6_UWY9ebIVYuzAYPDFRonTPCmtC2ScpH-/s1600/sshfs-4.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj20J_IFcNPGjvL7Dc_t0IslfClrFFsqQfPFVcYXE7pqta_TsVvoSjPgO4AjE6jsdXoODmrb1SFXLWuRFJWB3MBUtD1stOnyzQvuj6b0hkPyov6_UWY9ebIVYuzAYPDFRonTPCmtC2ScpH-/s1600/sshfs-4.png&quot; height=&quot;95&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上述測試是在Google Cloud上主機上進行&lt;/div&gt;
&lt;div&gt;
100M的檔案在2s左右完成傳輸，實際上效能還不錯&lt;/div&gt;
&lt;div&gt;
但跟local比契還來是慢了近20倍&lt;/div&gt;
&lt;div&gt;
以方便性而言sshfs的確方便&lt;/div&gt;
&lt;div&gt;
但是考慮效能的應用程式，還是需要好好考慮一下唷～&lt;br /&gt;
&lt;br /&gt;
補充一下大家最常用的NFS&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLUa8q2CB5FqOORVLdGtmOgl7VN9bW38JhfDDHaHBRAcl0-tMElt6cxEu2yU8qYjb1c1qR0pqhSOqAdj8Gb2U8Lc8YTOktOqMV6wpxHLD9i-ZT5f3LhUmM2kJSyu5cX9M8R-6BN6P-7Gt0/s1600/Screen+Shot+2015-04-01+at+3.59.24+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLUa8q2CB5FqOORVLdGtmOgl7VN9bW38JhfDDHaHBRAcl0-tMElt6cxEu2yU8qYjb1c1qR0pqhSOqAdj8Gb2U8Lc8YTOktOqMV6wpxHLD9i-ZT5f3LhUmM2kJSyu5cX9M8R-6BN6P-7Gt0/s1600/Screen+Shot+2015-04-01+at+3.59.24+PM.png&quot; height=&quot;118&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5208169624962094135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5208169624962094135'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/03/sshfs-mount.html' title='簡單的SSHFS mount...'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIqnmKT_szFmKsanXfXo3SLwxHjkCRTwEQlxPaWvzrqvNbSwaiy3ovtA-Fk0cuLEAqeBoUE7PcYv3nDkO1cftzutlzLHxTKf-RHfvblmx9aFddui15WJ_Lgxu0xwUUi4Z1rkCA-bzfVyl/s72-c/sshfs-1.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-6639315554501786366</id><published>2015-03-24T22:07:00.001-07:00</published><updated>2015-03-24T22:07:47.905-07:00</updated><title type='text'>Logstash mutate filter</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;最近在研究Logstash，透過Logstash的input, filter, output可以產生出許多不同的變化... 下面是我前陣子遇到的問題，後來找到解決方案....&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;例如我在抓CentO6.6的rsyslog時候，我把/var/log/message中的一些syslog重倒到logstash中&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;$ vi /etc/rsyslog.conf&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;*.info;mail.none;authpriv.none;cron.none                @@&lt;a href=&quot;http://10.240.58.95:514&quot;&gt;10.240.58.95:514&lt;/a&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;另外，logstash server部分，透過input syslog module開啟514 port接聽syslog input...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;input {&lt;br&gt;  syslog {&lt;br&gt;    port =&amp;gt; 514&lt;br&gt;    type =&amp;gt; syslog&lt;br&gt;  }&lt;br&gt;}&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;此時收到的syslog在rubydebug模式下，會類似：&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;&lt;font face=&quot;monospace, monospace&quot;&gt;{&lt;br&gt;           &amp;quot;message&amp;quot; =&amp;gt; &amp;quot;Installed: mysql-5.1.73-3.el6_5.x86_64&amp;quot;,&lt;br&gt;          &amp;quot;@version&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;,&lt;br&gt;        &amp;quot;@timestamp&amp;quot; =&amp;gt; &amp;quot;2015-03-25T03:50:01.000Z&amp;quot;,&lt;br&gt;              &amp;quot;type&amp;quot; =&amp;gt; &amp;quot;syslog&amp;quot;,&lt;br&gt;              &amp;quot;host&amp;quot; =&amp;gt; &amp;quot;10.240.219.254&amp;quot;,,&lt;br&gt;        &amp;quot;timestamp&amp;quot; =&amp;gt; &amp;quot;Mar 25 03:50:01&amp;quot;&lt;br&gt;          &amp;quot;priority&amp;quot; =&amp;gt; 14,&lt;br&gt;         &amp;quot;logsource&amp;quot; =&amp;gt; &amp;quot;simon-centos6&amp;quot;,&lt;br&gt;           &amp;quot;program&amp;quot; =&amp;gt; &amp;quot;yum&amp;quot;,&lt;br&gt;               &amp;quot;pid&amp;quot; =&amp;gt; &amp;quot;645&amp;quot;,&lt;br&gt;          &amp;quot;severity&amp;quot; =&amp;gt; 6,&lt;br&gt;          &amp;quot;facility&amp;quot; =&amp;gt; 1,&lt;br&gt;    &amp;quot;facility_label&amp;quot; =&amp;gt; &amp;quot;user-level&amp;quot;,&lt;br&gt;    &amp;quot;severity_label&amp;quot; =&amp;gt; &amp;quot;Informational&amp;quot;&lt;br&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;其中，會明顯地發現有兩個timestamp的欄位... 雖然有個前面加上&amp;quot;@&amp;quot;&lt;/div&gt;&lt;div&gt;而這個重複的timestamp欄位會造成其他的output module錯誤，導致一些其他問題...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;在找了很久，後來發現mutate這個filter module.... 透過mutate可以讓欄位改名稱、改內容、刪除欄位、增加欄位... 這樣在input與output之間的銜接，就少掉很多問題...&lt;/div&gt;&lt;div&gt;下面範例是透過mutate的rename function來置換我所遇到的重複key...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;input {&lt;br&gt;  syslog {&lt;br&gt;    port =&amp;gt; 514&lt;br&gt;    type =&amp;gt; syslog&lt;br&gt;  }&lt;br&gt;}&lt;br&gt;filter {&lt;br&gt;  mutate {&lt;br&gt;    rename =&amp;gt; [ &amp;quot;timestamp&amp;quot;, &amp;quot;timestamp1&amp;quot; ]&lt;br&gt;  }&lt;br&gt;}&lt;br&gt;output {&lt;br&gt;  stdout { codec =&amp;gt; rubydebug }&lt;br&gt;}&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;如果一切沒有問題，再重新執行logstash之後，可以看到新的output，其中可以看到timestamp1會被排到最後面&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex&quot;&gt;&lt;font face=&quot;monospace, monospace&quot;&gt;{&lt;br&gt;           &amp;quot;message&amp;quot; =&amp;gt; &amp;quot;Installed: mysql-5.1.73-3.el6_5.x86_64&amp;quot;,&lt;br&gt;          &amp;quot;@version&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;,&lt;br&gt;        &amp;quot;@timestamp&amp;quot; =&amp;gt; &amp;quot;2015-03-25T03:50:01.000Z&amp;quot;,&lt;br&gt;              &amp;quot;type&amp;quot; =&amp;gt; &amp;quot;syslog&amp;quot;,&lt;br&gt;              &amp;quot;host&amp;quot; =&amp;gt; &amp;quot;10.240.219.254&amp;quot;,&lt;br&gt;          &amp;quot;priority&amp;quot; =&amp;gt; 14,&lt;br&gt;         &amp;quot;logsource&amp;quot; =&amp;gt; &amp;quot;simon-centos6&amp;quot;,&lt;br&gt;           &amp;quot;program&amp;quot; =&amp;gt; &amp;quot;yum&amp;quot;,&lt;br&gt;               &amp;quot;pid&amp;quot; =&amp;gt; &amp;quot;645&amp;quot;,&lt;br&gt;          &amp;quot;severity&amp;quot; =&amp;gt; 6,&lt;br&gt;          &amp;quot;facility&amp;quot; =&amp;gt; 1,&lt;br&gt;    &amp;quot;facility_label&amp;quot; =&amp;gt; &amp;quot;user-level&amp;quot;,&lt;br&gt;    &amp;quot;severity_label&amp;quot; =&amp;gt; &amp;quot;Informational&amp;quot;,&lt;br&gt;        &amp;quot;timestamp1&amp;quot; =&amp;gt; &amp;quot;Mar 25 03:50:01&amp;quot;&lt;br&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;這樣傳給output的值就沒有問題了ㄛ :D&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/6639315554501786366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/6639315554501786366'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/03/logstash-mutate-filter.html' title='Logstash mutate filter'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-7417275785851878639</id><published>2015-03-12T09:17:00.000-07:00</published><updated>2015-03-12T09:18:13.499-07:00</updated><title type='text'>Docker in Mac will more easy!!!</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;&lt;div&gt;Kitermatic是Docker新出的一個本地端套件管理工具，讓您可以用視覺化的方式來管理Container服務，未來要在Mac上使用Docker就更方便了！！&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOefpX27E-N6pDjuQYznNQLnOxgVpPqQdvc9-yugPali0GHh1I1kk38w_aqxub1S1PCe1LFg0lbdLIxb53EzUENrNlbESQOo86aj4wAN-A9_l6tva52v8cXrzRp_D5WjDMqKeOh2rxTvie/s1600/image-793500.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOefpX27E-N6pDjuQYznNQLnOxgVpPqQdvc9-yugPali0GHh1I1kk38w_aqxub1S1PCe1LFg0lbdLIxb53EzUENrNlbESQOo86aj4wAN-A9_l6tva52v8cXrzRp_D5WjDMqKeOh2rxTvie/s320/image-793500.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6125383977174307586&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;  &lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/7417275785851878639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/7417275785851878639'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/03/docker-in-mac-will-more-easy.html' title='Docker in Mac will more easy!!!'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOefpX27E-N6pDjuQYznNQLnOxgVpPqQdvc9-yugPali0GHh1I1kk38w_aqxub1S1PCe1LFg0lbdLIxb53EzUENrNlbESQOo86aj4wAN-A9_l6tva52v8cXrzRp_D5WjDMqKeOh2rxTvie/s72-c/image-793500.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-5372522221036116963</id><published>2015-01-31T22:59:00.000-08:00</published><updated>2015-01-31T23:00:19.398-08:00</updated><title type='text'>發想自 node-schedule 的 node-schedule-server</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;&lt;h1 style=&quot;font-size:2.25em;margin-right:0px;margin-bottom:16px;margin-left:0px;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.2;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51);margin-top:0px!important&quot;&gt;node-schedule&lt;/h1&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;node-schedule是一個time base的排程器，透過給定簡單的時間物件或是給與cron job的時間格式字串，就可以指定時間觸發所給定的task。 這在Java的世界，與一套叫Quartz的服務相像...&lt;/p&gt;&lt;h2 style=&quot;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.225;margin-top:1em;margin-bottom:16px;font-size:1.75em;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51)&quot;&gt;Github repository&lt;/h2&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;&lt;a href=&quot;https://github.com/mattpat/node-schedule&quot; target=&quot;_blank&quot; style=&quot;color:rgb(65,131,196);text-decoration:none;background:transparent&quot;&gt;https://github.com/mattpat/node-schedule&lt;/a&gt;&lt;/p&gt;&lt;h2 style=&quot;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.225;margin-top:1em;margin-bottom:16px;font-size:1.75em;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51)&quot;&gt;Installation&lt;/h2&gt;&lt;pre style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;font-size:12.75px;white-space:pre-wrap;padding:16px;margin-top:0px;margin-bottom:16px;line-height:1.45;word-break:break-all;word-wrap:normal;color:rgb(51,51,51);border:none;border-radius:3px;overflow:auto;background-color:rgb(247,247,247)&quot;&gt;&lt;code style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;padding:0px;color:inherit;white-space:pre;border-radius:3px;border:0px;margin:0px;display:inline;max-width:initial;overflow:initial;line-height:inherit;word-wrap:normal;background:transparent&quot;&gt;npm install node-schedule  &lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.225;margin-top:1em;margin-bottom:16px;font-size:1.75em;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51)&quot;&gt;Sample Usage&lt;/h2&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;下面範例展示一個簡單的排程作業，其中date指定為現在時間過30秒，而date2指定為一個未來的時間... 程式起動時候，會先列印現在時間，並開始設定兩個(j, j2) Job分別在指定的date, date2時間啟動...&lt;/p&gt;&lt;pre style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;font-size:12.75px;white-space:pre-wrap;padding:16px;margin-top:0px;margin-bottom:16px;line-height:1.45;word-break:break-all;word-wrap:normal;color:rgb(51,51,51);border:none;border-radius:3px;overflow:auto;background-color:rgb(247,247,247)&quot;&gt;&lt;code style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;padding:0px;color:inherit;white-space:pre;border-radius:3px;border:0px;margin:0px;display:inline;max-width:initial;overflow:initial;line-height:inherit;word-wrap:normal;background:transparent&quot;&gt;var schedule = require(&amp;#39;node-schedule&amp;#39;);  var date = new Date(new Date().getTime() + 1*1000*30);  var date2 = new Date(&amp;#39;2015/1/31 21:28:00&amp;#39;);  console.log(new Date());    console.log(&amp;#39;j will start at:&amp;#39;, date);  var j = schedule.scheduleJob(date, function(){          console.log(&amp;#39;The job j is going to end...&amp;#39;);  });    console.log(&amp;#39;j2 will start at:&amp;#39;,date2);  var j2 = schedule.scheduleJob(date2, function(){          console.log(&amp;#39;The job j2 is going to end...&amp;#39;);  });  &lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;上面程式起動後，會執行列印現在時間，並且開始將Job置入排程時間，等候執行...&lt;/p&gt;&lt;pre style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;font-size:12.75px;white-space:pre-wrap;padding:16px;margin-top:0px;margin-bottom:16px;line-height:1.45;word-break:break-all;word-wrap:normal;color:rgb(51,51,51);border:none;border-radius:3px;overflow:auto;background-color:rgb(247,247,247)&quot;&gt;&lt;code style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;padding:0px;color:inherit;white-space:pre;border-radius:3px;border:0px;margin:0px;display:inline;max-width:initial;overflow:initial;line-height:inherit;word-wrap:normal;background:transparent&quot;&gt;$ node examples/node-schedule/sample01.js  Sun Feb 01 2015 14:40:34 GMT+0800 (CST)  j will start at: Sun Feb 01 2015 14:41:03 GMT+0800 (CST)  j2 will start at: Sat Feb 2 2015 21:28:00 GMT+0800 (CST)  The job j2 is going to end...  (waitting...)  &lt;/code&gt;&lt;/pre&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;等到執行的時間到了，系統就會執行定義於j, j2中callback function中的內容... 等到所有Job執行完成，程式就會關閉...&lt;/p&gt;&lt;h2 style=&quot;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.225;margin-top:1em;margin-bottom:16px;font-size:1.75em;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51)&quot;&gt;Sample Project&lt;/h2&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;因為Schedule服務非常實用，筆者花了一些時間把這些動作建置成一個RESTful操控的服務器，透過簡單的動作，就可以提供RESTful的Endpoint來操控排程...&lt;/p&gt;&lt;h3 style=&quot;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.43;margin-top:1em;margin-bottom:16px;font-size:1.5em;color:rgb(51,51,51)&quot;&gt;安裝服務&lt;/h3&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;目前服務release在github上，有興趣使用的朋友可以直接git clone下來或是fork回去改...&lt;/p&gt;&lt;pre style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;font-size:12.75px;white-space:pre-wrap;padding:16px;margin-top:0px;margin-bottom:16px;line-height:1.45;word-break:break-all;word-wrap:normal;color:rgb(51,51,51);border:none;border-radius:3px;overflow:auto;background-color:rgb(247,247,247)&quot;&gt;&lt;code style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;padding:0px;color:inherit;white-space:pre;border-radius:3px;border:0px;margin:0px;display:inline;max-width:initial;overflow:initial;line-height:inherit;word-wrap:normal;background:transparent&quot;&gt;$ git clone git@github.com:peihsinsu/node-schedule-server.git $project_home  $ cd $project_home &amp;amp;&amp;amp; npm install  &lt;/code&gt;&lt;/pre&gt;&lt;h3 style=&quot;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.43;margin-top:1em;margin-bottom:16px;font-size:1.5em;color:rgb(51,51,51)&quot;&gt;啟動服務&lt;/h3&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;因為使用express 4來實作，因此可以透過npm start來啟動... 真正的啟動程式定義在package.json，位置為bin/www。&lt;/p&gt;&lt;pre style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;font-size:12.75px;white-space:pre-wrap;padding:16px;margin-top:0px;margin-bottom:16px;line-height:1.45;word-break:break-all;word-wrap:normal;color:rgb(51,51,51);border:none;border-radius:3px;overflow:auto;background-color:rgb(247,247,247)&quot;&gt;&lt;code style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;padding:0px;color:inherit;white-space:pre;border-radius:3px;border:0px;margin:0px;display:inline;max-width:initial;overflow:initial;line-height:inherit;word-wrap:normal;background:transparent&quot;&gt;$ cd $project_home  $ npm start  &lt;/code&gt;&lt;/pre&gt;&lt;h3 style=&quot;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.43;margin-top:1em;margin-bottom:16px;font-size:1.5em;color:rgb(51,51,51)&quot;&gt;撰寫服務執行者(Worker)&lt;/h3&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;預設我只提供了一個RESTful Client來在排程時間到之後透過Url的方式來執行服務，這個RESTful Client(workers/restclient.js)的目的在使用前端傳入的opts參數內容來使用request模組來達到呼叫的目的。&lt;/p&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;每個Worker的必要條件如下：&lt;/p&gt;&lt;ul style=&quot;margin-top:0px;margin-bottom:16px;padding:0px 0px 0px 2em;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;&lt;li&gt;必須放置在$project_home/workers下面&lt;/li&gt;&lt;li&gt;名稱必須與呼叫時候給定的&amp;quot;catg&amp;quot;參數值相同&lt;/li&gt;&lt;li&gt;可參考restclient.js實作Worker:&lt;ul style=&quot;margin-top:0px;margin-bottom:16px;padding:0px 0px 0px 2em&quot;&gt;&lt;li&gt;必須具備exec這個function&lt;/li&gt;&lt;li&gt;這個 exec function 必須有一個opts的json字串輸入，這個值是由呼叫時候給訂opts參數傳入。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;font-size:12.75px;white-space:pre-wrap;padding:16px;margin-top:0px;margin-bottom:16px;line-height:1.45;word-break:break-all;word-wrap:normal;color:rgb(51,51,51);border:none;border-radius:3px;overflow:auto;background-color:rgb(247,247,247)&quot;&gt;&lt;code style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;padding:0px;color:inherit;white-space:pre;border-radius:3px;border:0px;margin:0px;display:inline;max-width:initial;overflow:initial;line-height:inherit;word-wrap:normal;background:transparent&quot;&gt;var request = require(&amp;#39;request&amp;#39;);  var log = require(&amp;#39;nodeutil&amp;#39;).simplelog;    exports.exec = function(opts) {      if(typeof(opts) == &amp;#39;string&amp;#39;)          opts = JSON.parse(opts);    //Here you can do the job...      request(opts, function(e, r, d) {          if(e) log.error(&amp;#39;Job[%s] execute error:&amp;#39;, e);          &lt;a href=&quot;http://log.info&quot;&gt;log.info&lt;/a&gt;(&amp;#39;Job[%s] execute result:&amp;#39;, d);      });  }  &lt;/code&gt;&lt;/pre&gt;&lt;h3 style=&quot;font-family:&amp;#39;Helvetica Neue&amp;#39;,Helvetica,Arial,sans-serif;line-height:1.43;margin-top:1em;margin-bottom:16px;font-size:1.5em;color:rgb(51,51,51)&quot;&gt;新增加一筆服務&lt;/h3&gt;&lt;p style=&quot;margin:0px 0px 16px;color:rgb(51,51,51);font-family:&amp;#39;Open Sans&amp;#39;,sans-serif;font-size:15px;line-height:21px&quot;&gt;一切準備就緒後，在服務啟動完成，就可以透過下面方式呼叫新增一筆排程工作...&lt;/p&gt;&lt;pre style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;font-size:12.75px;white-space:pre-wrap;padding:16px;margin-top:0px;line-height:1.45;word-break:break-all;word-wrap:normal;color:rgb(51,51,51);border:none;border-radius:3px;overflow:auto;margin-bottom:0px!important;background-color:rgb(247,247,247)&quot;&gt;&lt;code style=&quot;font-family:Consolas,&amp;#39;Liberation Mono&amp;#39;,Menlo,Courier,monospace;padding:0px;color:inherit;white-space:pre;border-radius:3px;border:0px;margin:0px;display:inline;max-width:initial;overflow:initial;line-height:inherit;word-wrap:normal;background:transparent&quot;&gt;curl -X POST -sS &lt;a href=&quot;http://127.0.0.1:3000/schedule/testjob&quot;&gt;http://127.0.0.1:3000/schedule/testjob&lt;/a&gt; \    -d &amp;quot;jobtime=2015/2/1 1:59:00&amp;quot; \    -d catg=restclient \    -d &amp;#39;opts={&amp;quot;url&amp;quot;:&amp;quot;&lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt;&amp;quot;,&amp;quot;method&amp;quot;:&amp;quot;GET&amp;quot;}&amp;#39;&lt;/code&gt;&lt;/pre&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;以上內容，收錄於&lt;a href=&quot;http://peihsinsu.gitbooks.io/node-js-500-samples/&quot;&gt;Node.js in Example&lt;/a&gt;!&lt;/div&gt;&lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5372522221036116963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5372522221036116963'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2015/01/node-schedule-node-schedule-server.html' title='發想自 node-schedule 的 node-schedule-server'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-5718656834254647743</id><published>2014-12-14T23:22:00.001-08:00</published><updated>2014-12-14T23:22:59.919-08:00</updated><title type='text'>Commit docker into private repository</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;&lt;div class=&quot;gmail_quote&quot;&gt;Docker無限好，只是怎麼擁有自己的repository呢？！如果你跟我想要的一樣，可以參考自建docker registry...&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;懶人版，直接用docker跑registry server然後儲存空間接google cloud storage作為永久保存...&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;參考：&lt;a href=&quot;https://registry.hub.docker.com/u/google/docker-registry/&quot;&gt;https://registry.hub.docker.com/u/google/docker-registry/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;強人版，完全自建，加上用Nginx作為registry的https通道...&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;參考：&lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-14-04&quot;&gt;https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-14-04&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;厲害高手太多，這邊只分享一個遇到的狀況... Mac版本升級到最新的boot2docker後，居然不支援非ssl協定的registry...&lt;/div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;錯誤如下：&lt;br&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOYKSP4vNMZeKwDRPFNZfwV_91EVVQgoNRCJPgYa3RYIj4RqUaHW0ugfxbdJWJeQHEAudLVlpxSza4T_deyFQt_3lic_wgldSGER4oGZ_fDbBuD9ZcODns8ewJoSeI8Ui-NjxvfK4xvQvr/s1600/image-779921.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOYKSP4vNMZeKwDRPFNZfwV_91EVVQgoNRCJPgYa3RYIj4RqUaHW0ugfxbdJWJeQHEAudLVlpxSza4T_deyFQt_3lic_wgldSGER4oGZ_fDbBuD9ZcODns8ewJoSeI8Ui-NjxvfK4xvQvr/s320/image-779921.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6092961640859237826&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;找了一下Google... 原來1.3.1之後的docker預設不支援非https的registry，應該是安全性上的問題...&lt;/div&gt;&lt;div&gt;相關的說明如下：&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/boot2docker/boot2docker&quot; target=&quot;_blank&quot;&gt;https://github.com/boot2docker/boot2docker&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVFvYE4Tm8u-141hLnnS3VdAu04PHEKdNbzrB8RjjFkTVxqzHI1Z_kslTuaJC0WsyEjEm3dHZx1M4gKUS_5F3hOMfAe2go3PjflnQd04SZuRyWQXI4_DqsSxo2B7xgPkKlgTQtadqufTdH/s1600/image-782611.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVFvYE4Tm8u-141hLnnS3VdAu04PHEKdNbzrB8RjjFkTVxqzHI1Z_kslTuaJC0WsyEjEm3dHZx1M4gKUS_5F3hOMfAe2go3PjflnQd04SZuRyWQXI4_DqsSxo2B7xgPkKlgTQtadqufTdH/s320/image-782611.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6092961650747664050&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;試試看... &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7gCO219rQtQxIXRBGE9pOYdjNzrTs31QawDUxkaqIS1PVIbwSqkO12fXmTVbDugqnTiLcOKAFVc8UQZFbUpa1hvZQACN67IUfyyHGwlAYoSaOEoD9VOlcGZa5A9Kte_3evvKDs_S-95o9/s1600/image-784617.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7gCO219rQtQxIXRBGE9pOYdjNzrTs31QawDUxkaqIS1PVIbwSqkO12fXmTVbDugqnTiLcOKAFVc8UQZFbUpa1hvZQACN67IUfyyHGwlAYoSaOEoD9VOlcGZa5A9Kte_3evvKDs_S-95o9/s320/image-784617.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6092961656317129218&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;再透過boot2docker ssh可以切入到container的平台...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJok1IOT1nWRT2wQvdWoG6wMeTAc-IYU8RewWN9yBWQHG0t1FLwoF7VU68acKQqF8oIB10DbKCWLq9mR4P70AAuKT95CaSov_gXc8Z7QtXtzXbOXnt3AuTvIhwJnkscO5YwTCNUCrExjzX/s1600/image-786825.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJok1IOT1nWRT2wQvdWoG6wMeTAc-IYU8RewWN9yBWQHG0t1FLwoF7VU68acKQqF8oIB10DbKCWLq9mR4P70AAuKT95CaSov_gXc8Z7QtXtzXbOXnt3AuTvIhwJnkscO5YwTCNUCrExjzX/s320/image-786825.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6092961671851127730&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;    &lt;br&gt;  &lt;div&gt;然後執行文件中提示的環境設定後，重啟docker....&lt;/div&gt;&lt;div&gt;之後push到private registry就都沒問題拉 :D&lt;/div&gt;&lt;/div&gt;  &lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5718656834254647743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/5718656834254647743'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2014/12/commit-docker-into-private-repository.html' title='Commit docker into private repository'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOYKSP4vNMZeKwDRPFNZfwV_91EVVQgoNRCJPgYa3RYIj4RqUaHW0ugfxbdJWJeQHEAudLVlpxSza4T_deyFQt_3lic_wgldSGER4oGZ_fDbBuD9ZcODns8ewJoSeI8Ui-NjxvfK4xvQvr/s72-c/image-779921.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-7440039316530891533</id><published>2014-10-23T22:50:00.001-07:00</published><updated>2014-10-23T22:50:53.113-07:00</updated><title type='text'>Mac OS 10.10 ruby bad interpreter issue</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;&lt;div&gt;應該不少人更新了Mac OS 10.10&lt;/div&gt;&lt;div&gt;在使用上可能跟我一樣會發生ruby的執行錯誤問題，這個問題一般是在console mode開啟當下發生：&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWJ39Lz0xZLc9jmGE4xy8_t3coELeeLKEhBBYP0aCW5oxgo8ABcNi6_eoVXufY_EMkn23UGLCTBASJdTYvkLMPq3nCU6k86XUFpd8XlLedz0iFiVbulrVuQ537O_sqUPu6qxemA6dcz4VK/s1600/image-753114.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWJ39Lz0xZLc9jmGE4xy8_t3coELeeLKEhBBYP0aCW5oxgo8ABcNi6_eoVXufY_EMkn23UGLCTBASJdTYvkLMPq3nCU6k86XUFpd8XlLedz0iFiVbulrVuQ537O_sqUPu6qxemA6dcz4VK/s320/image-753114.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6073641472764848322&quot; /&gt;&lt;/a&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;修正方式很簡單，該錯誤是因為ruby interpreter找不到...&lt;/div&gt;&lt;div&gt;在/usr/local/Library/brew.rb這個檔案修改一開始的執行程式位置定義即可&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;$ vi /usr/local/Library/brew.rb&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVrbqlNLMf_m4Qew3yINQ28eX9erfQ7hLJgpEagKs_Zw_Vp5_utxSdZVVPoIpJ4p_kQSGx_YiRv-ps5j8R4di1fnl7Gn7enf1z-EhfFLwKkhwBlPQggZvlkAfRhGAbD_yEusCV2tv_D15L/s1600/image-756100.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVrbqlNLMf_m4Qew3yINQ28eX9erfQ7hLJgpEagKs_Zw_Vp5_utxSdZVVPoIpJ4p_kQSGx_YiRv-ps5j8R4di1fnl7Gn7enf1z-EhfFLwKkhwBlPQggZvlkAfRhGAbD_yEusCV2tv_D15L/s320/image-756100.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6073641487352851586&quot; /&gt;&lt;/a&gt;&lt;br&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;如上所示，只要把原本的&amp;quot;/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0&amp;quot;移除，然後改成&amp;quot;/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0&amp;quot;，存擋後就可以正常了！&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Reference: &lt;a href=&quot;http://jcvangent.com/fixing-homebrew-os-x-10-10-yosemite/&quot;&gt;http://jcvangent.com/fixing-homebrew-os-x-10-10-yosemite/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/7440039316530891533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/7440039316530891533'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2014/10/mac-os-1010-ruby-bad-interpreter-issue.html' title='Mac OS 10.10 ruby bad interpreter issue'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWJ39Lz0xZLc9jmGE4xy8_t3coELeeLKEhBBYP0aCW5oxgo8ABcNi6_eoVXufY_EMkn23UGLCTBASJdTYvkLMPq3nCU6k86XUFpd8XlLedz0iFiVbulrVuQ537O_sqUPu6qxemA6dcz4VK/s72-c/image-753114.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6014366374670463842.post-8895213460312455468</id><published>2014-06-25T08:58:00.000-07:00</published><updated>2014-06-25T08:59:04.434-07:00</updated><title type='text'>Node.js implements Google API in Command Line</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;&lt;div&gt;很高興在Google IO Taipei講了一場關於Node.js跟BigQuery結合的分享&lt;/div&gt;&lt;div&gt;跟杭JS同樣的講題，但補充了sql2bq與gcli兩個套件&lt;/div&gt;&lt;div&gt;其中gcli是idea自google api explore裡面的api結構&lt;/div&gt;&lt;div&gt;關於gcli可以參考Github: &lt;a href=&quot;https://github.com/peihsinsu/gapis&quot;&gt;https://github.com/peihsinsu/gapis&lt;/a&gt;&lt;/div&gt;    &lt;div&gt;下面簡介一下CLI操作上跟API Explore的對應：&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. &amp;quot;-a [api name]&amp;quot;: 帶入的api name是關於目前使用的api是哪一個，其中名稱的簡寫通常是右邊的function名稱的第一個，在這邊即是compute這個字。另外&amp;quot;-v [version]&amp;quot;則是帶入欲操作的api version&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmDhPtFCqxXBVk6Z20aOrRn-i6XQHfrfah4eF7wd9WDTRmF8isAGgUL4WI8_iywuNhkGXanUnW3sKmEpUumOWp5MhALosU6ma26D8PrJ1TOQxGbjSS8lrOtGNs2Nc_2vsRkYy0gN59cvfn/s1600/gcli-1-744435.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmDhPtFCqxXBVk6Z20aOrRn-i6XQHfrfah4eF7wd9WDTRmF8isAGgUL4WI8_iywuNhkGXanUnW3sKmEpUumOWp5MhALosU6ma26D8PrJ1TOQxGbjSS8lrOtGNs2Nc_2vsRkYy0gN59cvfn/s320/gcli-1-744435.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6028896897727813058&quot; /&gt;&lt;/a&gt;&lt;br&gt;    &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2. &amp;quot;-s [scope]&amp;quot;讓操作當下帶入認證所需要的scope資訊，可以讓工具所取到的access token可以binding所給予的授權，增加安全性... &lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6toxYlXyoc1xcDm6E_a1zcsazAqL-778rGBJs3Fio0IJiaQKq9uqqxjSKDfO9p5aH2snm31nQDsWwCY3zc5JWBKu6QAJ97_UbLU6gkBlYQ-f0sQFmYDzqhvTWNncEXgpKCzM5BXgEzP3j/s1600/gcli-2-747542.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6toxYlXyoc1xcDm6E_a1zcsazAqL-778rGBJs3Fio0IJiaQKq9uqqxjSKDfO9p5aH2snm31nQDsWwCY3zc5JWBKu6QAJ97_UbLU6gkBlYQ-f0sQFmYDzqhvTWNncEXgpKCzM5BXgEzP3j/s320/gcli-2-747542.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6028896909781700786&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;    &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;3. &amp;quot;-f [function name]&amp;quot;，這邊指的就是&amp;quot;compute.images.list&amp;quot;這串字，讓使用者可以直接敲入api的function結構去使用每一個google的api&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2ChOlpQVxGPEYHB3KG5pM41Fcc7LWCQDRnKwPehVz4UqDo731sUbX4JFOCvCfaRfgsMjOjhsFXFMb9MjXL9DxaLBbYJgW11Zd-d9qCm_g-x103KyzdilWUWkgrg_STc8gHnr-QKOFdr9P/s1600/gcli-3-755947.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2ChOlpQVxGPEYHB3KG5pM41Fcc7LWCQDRnKwPehVz4UqDo731sUbX4JFOCvCfaRfgsMjOjhsFXFMb9MjXL9DxaLBbYJgW11Zd-d9qCm_g-x103KyzdilWUWkgrg_STc8gHnr-QKOFdr9P/s320/gcli-3-755947.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6028896947517956066&quot; /&gt;&lt;/a&gt;&lt;br&gt;    &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;4. &amp;quot;-d [conditions]&amp;quot;是讓您放入網址列的變動參數部分，例如某個操作用到這樣的網址：&lt;span style=&quot;color:rgb(0,0,0);font-size:13px;white-space:pre-wrap&quot;&gt;&lt;a href=&quot;https://www.googleapis.com/bigquery/v2/projects/&quot;&gt;https://www.googleapis.com/bigquery/v2/projects/&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-size:13px;white-space:pre-wrap&quot;&gt;&lt;font color=&quot;#ff0000&quot;&gt;mitac-cp300&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;color:rgb(0,0,0);font-size:13px;white-space:pre-wrap&quot;&gt;/queries，其中紅色部分是提供在網址列嵌入的，這是REST API的一個特性，我們把它用&amp;quot;-d&amp;quot;的方式來帶入指令...&lt;/span&gt;，與scope一樣，可以透過多個-b來輸入多個參數&lt;/div&gt;    &lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7NGJOKhasPLGuzDS-1Hn-Uz-9k9cEDcoYp6YYxnSzon2nlCWesz5dsxI6DC3km-j7_76f4UcQghd1PuWQKggDNsYQ6jFzD5XAZmhW1iHXH0cn7sg-wg_tVbX7KRMSPVTuq9EKCb9494vm/s1600/gcli-4-758661.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7NGJOKhasPLGuzDS-1Hn-Uz-9k9cEDcoYp6YYxnSzon2nlCWesz5dsxI6DC3km-j7_76f4UcQghd1PuWQKggDNsYQ6jFzD5XAZmhW1iHXH0cn7sg-wg_tVbX7KRMSPVTuq9EKCb9494vm/s320/gcli-4-758661.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6028896958985218290&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;5. &amp;quot;-b [body]&amp;quot;是用來帶入API call中的一些payload參數，讓屬於post form的一些參數可以直接被帶入做查詢...，與scope一樣，可以透過多個-b來輸入多個參數&lt;/div&gt;  &lt;div&gt;  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc9wVyTrj86nMaj9aaKzS0eipA6d_hneAKZNkOgQQDWeCM7ZXX5Ny7rKDQ-40jggJzyJBTCdZwzzXj5ACAmZpkbazmq4g-StOcYaG7tENG0kRD7Yo5sEZrS5gk6979DUsnjq6wqnrNdhjZ/s1600/gcli-5-760752.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc9wVyTrj86nMaj9aaKzS0eipA6d_hneAKZNkOgQQDWeCM7ZXX5Ny7rKDQ-40jggJzyJBTCdZwzzXj5ACAmZpkbazmq4g-StOcYaG7tENG0kRD7Yo5sEZrS5gk6979DUsnjq6wqnrNdhjZ/s320/gcli-5-760752.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6028896961500639714&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;​&lt;br&gt;  &lt;div&gt;於是，整個操作就會類似下面這樣：&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8pc3PJZByjrfk_ABd4zp9ywerw87fJd-itJkBwaS-pyG1AYHQ0KTTtv-tnVTj7yP6cKPTjWlfFrYp1udzbbr5ZiKt8x-rd_jpMzYmvB0buTDyvGzurCH9dD2PLmOmNgJx96csJaaxVaVC/s1600/image-763338.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8pc3PJZByjrfk_ABd4zp9ywerw87fJd-itJkBwaS-pyG1AYHQ0KTTtv-tnVTj7yP6cKPTjWlfFrYp1udzbbr5ZiKt8x-rd_jpMzYmvB0buTDyvGzurCH9dD2PLmOmNgJx96csJaaxVaVC/s320/image-763338.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_6028896975216365714&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;  </content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/8895213460312455468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6014366374670463842/posts/default/8895213460312455468'/><link rel='alternate' type='text/html' href='http://peihsinsu.blogspot.com/2014/06/nodejs-implements-google-api-in-command.html' title='Node.js implements Google API in Command Line'/><author><name>k8s-study</name><uri>http://www.blogger.com/profile/15291073043196262423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmDhPtFCqxXBVk6Z20aOrRn-i6XQHfrfah4eF7wd9WDTRmF8isAGgUL4WI8_iywuNhkGXanUnW3sKmEpUumOWp5MhALosU6ma26D8PrJ1TOQxGbjSS8lrOtGNs2Nc_2vsRkYy0gN59cvfn/s72-c/gcli-1-744435.png" height="72" width="72"/></entry></feed>