国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Rancher-Gen動態(tài)更新配置文件

lykops / 872人閱讀

摘要:在這些部署工作完成之后,的配置需要更改為指向新的后端容器。這允許用戶為現(xiàn)有的并基于這些變化的服務(wù)生成配置文件。下面的教程會介紹如何自動生成運(yùn)行博客平臺后端服務(wù)的配置文件。第步部署服務(wù)為簡單起見,我們打算使用中的官方鏡像。

Docker和Rancher讓大家能更輕易地部署和管理基于微服務(wù)的應(yīng)用程序。然而,如果有些服務(wù)是依賴于其他動態(tài)服務(wù)的,那該如何管理它們的配置?你是否時常覺得,要是有方法能自動檢測后端服務(wù)的變化,并實(shí)現(xiàn)配置文件的動態(tài)更新就好了?本文給你答案。

前言

Docker和Rancher讓大家能更輕易地部署和管理基于微服務(wù)的應(yīng)用程序。然而,有一個關(guān)鍵的挑戰(zhàn)是,如果有些服務(wù)是依賴于其他動態(tài)服務(wù)的,那該如何管理它們的配置?

試想以下情形:您有多個運(yùn)行Web應(yīng)用程序的后端容器,和一些將所有的請求都代理到這些后端容器的nginx容器。現(xiàn)在,你必須要部署一個新版本的Web應(yīng)用程序,這意味著你需要構(gòu)建和部署新版本的后端容器。在這些部署工作完成之后,nginx的配置需要更改為指向新的后端容器。那么,你該怎樣處理nginx呢?改變其配置,構(gòu)建一個新的容器并部署它?此刻的你是不是會覺得,要是有方法能自動檢測后端服務(wù)的變化,并實(shí)現(xiàn)nginx的動態(tài)更新就好了?

這就是Rancher-Gen要閃亮登場的時刻!

Rancher-Gen是一個Python的工具,它能監(jiān)聽的Rancher服務(wù)的變化,并呈現(xiàn)一個用戶指定的Jinja2模板。這允許用戶為現(xiàn)有的、并基于這些變化的服務(wù)生成配置文件。另外,Rancher-Gen提供了一種機(jī)制,在模板呈現(xiàn)之后會運(yùn)行通知命令。下面的教程會介紹如何自動生成運(yùn)行g(shù)host博客平臺后端服務(wù)的nginx配置文件 。

教程

下面介紹的所有配置文件都可以在Rancher-Gen庫中的演示目錄下找到。

第1步 – 部署Ghost服務(wù)

為簡單起見,我們打算使用Docker hub中的官方ghost鏡像。因此,創(chuàng)建一個docker-compose.yml 文件,并添加以下的ghost服務(wù):

ghost:
  image: ghost
  expose:
    - "2368"

現(xiàn)在,用Rancher Compose部署ghost服務(wù):

$ rancher-compose -p demo up -d ghost

第2步 – 用Rancher-Gen創(chuàng)建nginx鏡像

下面是用以搭建nginx鏡像的Dockerfile:

FROM phusion/baseimage:0.9.17
MAINTAINER pitrho

# Step 1 - Install nginx and python
ENV DEBIAN_FRONTEND noninteractive
RUN 
 apt-add-repository -y ppa:nginx/stable && 
 apt-get update && 
 apt-get install -y python-software-properties 
   wget 
   nginx 
   python-dev 
   python-pip 
   libev4 
   libev-dev 
   expect-dev && 
 rm -rf /var/lib/apt/lists/* && 
 chown -R www-data:www-data /var/lib/nginx && 
apt-get clean

# Step 2 - Install rancher-gen
ENV RANCHER_GEN_VERSION 0.1.2
RUN pip install rancher-gen==$RANCHER_GEN_VERSION

# Step 3 - Define services
RUN mkdir /etc/service/nginx /etc/service/rancher_gen /nginxconf
COPY nginx_run /etc/service/nginx/run
COPY rancher-gen_run /etc/service/rancher_gen/run
COPY default.j2 /nginxconf

# Step 4 - Use baseimage-docker"s init system.
CMD ["/sbin/my_init"]

# Step 5 - Expose ports.
EXPOSE 80
EXPOSE 443

讓我們來一步一步拆解Dockerfile。步驟1和2不言自明:只需安裝nginx、Python和Rancher-Gen。

第3步要設(shè)置鏡像啟動時運(yùn)行的服務(wù)。第一個服務(wù)是nginx,它用/etc/servce/nginx文件運(yùn)行。該文件的內(nèi)容是:

#!/bin/bash
 rancher-gen --host $RANCHER_GEN_HOST 
 --port $RANCHER_GEN_PORT 
 --access-key $RANCHER_GEN_ACCESS_KEY 
 --secret-key $RANCHER_GEN_SECRET_KEY 
 --project-id $RANCHER_GEN_PROJECT_ID 
 $RANCHER_GEN_OPTIONS 
 --notify "service nginx reload" /nginxconf/default.j2 /etc/nginx/sites-available/default

注意一下在通知步驟之后,我們是怎樣通過名為 /nginxconf/default.j2 和/etc/nginx/sites-available/default 的這兩個路徑的。前者是Jinjia2模板,后者是渲染模板的輸出位置。以下是在default.j2文件的內(nèi)容:

upstream ghost.backend {
{% for container in containers %}
  {% if container["state"] == "running" %}
    server {{container["primaryIpAddress"]}}:2368;
  {% endif %}
  {% endfor %}
}

server {
  listen 80;
  server_name ghost_demo;
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header HOST $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://ghost.backend;
    proxy_redirect off;
  }
}

Dockerfile的第4步和第5步在鏡像中設(shè)置了運(yùn)行命令“/sbin/my_init”并暴露端口80和443。

現(xiàn)在是時候構(gòu)建鏡像了:

$ docker build -t="pitrho/nginx-rancher-gen-demo" .

第3步 – 創(chuàng)建并部署nginx服務(wù)

現(xiàn)在我們已有了nginx鏡像,就可以開始向我們在第1步中創(chuàng)建的docker-compose.yml文件中添加nginx服務(wù)了。

ghost:
 image: ghost
 expose:
 - "2368"

nginx:
 image: pitrho/nginx-rancher-gen-demo:latest
 ports:
 - 80:80
 links:
 - ghost
 environment:
 NGINX_RUN_TYPE: rancher-gen
 RANCHER_GEN_HOST: $RANCHER_HOST
 RANCHER_GEN_PORT: $RANCHER_PORT
 RANCHER_GEN_ACCESS_KEY: $RANCHER_ACCESS_KEY
 RANCHER_GEN_SECRET_KEY: $RANCHER_SECRET_KEY
 RANCHER_GEN_PROJECT_ID: $RANCHER_GEN_PROJECT_ID
 RANCHER_GEN_OPTIONS: --stack demo --service ghost

上述可變的RANCHER_GEN_OPTIONS環(huán)境是用于向Rancher-Gen傳遞附加命令行選項(xiàng)的 。你可以在Rancher-Gen文檔中查看這些選項(xiàng)的說明。

現(xiàn)在運(yùn)行rancher-compose來啟動nginx服務(wù):

$ rancher-compose -p demo up -d nginx

此時,ghost和nginx服務(wù)都啟動并運(yùn)行了:

而且,將瀏覽器指向運(yùn)行中的nginx容器中主機(jī)的IP地址,你就可以訪問ghost了:

如果你使用shell來檢查nginx容器,并打開渲染的文件 /etc/nginx/sites-enabled/default,你將會看到以下的輸出:

upstream ghost.backend {
   server 10.42.136.216:2368;
 }

server {
     listen 80;
     server_name ghost_demo;

     location / {
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header HOST $http_host;
         proxy_set_header X-NginX-Proxy true;
         proxy_pass http://ghost.backend;
         proxy_redirect off;
     }
  }

正如預(yù)期的那樣,這是在運(yùn)行rancher-gen命令時的基于指定模板的渲染輸出。此時,如果你要升級ghost服務(wù),并再次查看渲染文件,你會發(fā)現(xiàn)上游部分下的IP地址已經(jīng)改變了。

結(jié)論

總結(jié)來說,Rancher-Gen是一個自動化工具,可用于生成文件,并運(yùn)行通知命令。借助Jinja2的模板表現(xiàn)力,及其整潔的命令行界面,Rancher-Gen可用于生成大多數(shù)配置文件,并自動解決那些對大多數(shù)系統(tǒng)管理員和軟件工程師而言繁瑣和重復(fù)的工作。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28015.html

相關(guān)文章

  • 基于 Nginx 的動態(tài)代理

    摘要:目前最常用的軟件反向代理服務(wù)器有和。基于實(shí)現(xiàn)動態(tài)代理為了實(shí)現(xiàn)動態(tài)代理方案,需要在反向代理服務(wù)器中增加定制的功能。同時,由于反向代理服務(wù)器需要處理大量的代理請求,因此會頻繁的讀取反向代理配置數(shù)據(jù)。 基于 Nginx 的動態(tài)代理 作者:趙波日期:2016 年 8 月 4 日 在實(shí)際應(yīng)用中,遇到了這樣一個場景: 已有一個手機(jī) APP 客戶端,需要在該 APP 客戶端中實(shí)現(xiàn)通過 Web 的形式...

    wean 評論0 收藏0
  • 解決js動態(tài)加載、緩存、更新

    摘要:即在內(nèi)添加版本號的解決方案這樣的做法的確可以達(dá)到清緩存的目的。重新渲染而代理又緩存了的,如果在更新的話就只能繼續(xù)改版本號。 最近項(xiàng)目中出現(xiàn)修改js,線上并沒有實(shí)時更新而是使用的緩存中的js。 當(dāng)然如果你的頁面是單頁面應(yīng)用的話,解決方案就很簡單了,修改index.js后面的版本號就好了。 mudel.export = { //html文件名 不能重名-。- a:{ ...

    mikyou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<