日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)kubernetes教程:Kubernetes服務(wù)目錄

服務(wù)目錄

服務(wù)目錄(Service Catalog)是 服務(wù)目錄是一種擴展 API,它能讓 Kubernetes 集群中運行的應(yīng)用易于使用外部托管的的軟件服務(wù),例如云供應(yīng)商提供的數(shù)據(jù)倉庫服務(wù)。

服務(wù)目錄可以檢索、供應(yīng)、和綁定由 服務(wù)代理人(Service Brokers) 提供的外部托管服務(wù)(Managed Services), 而無需知道那些服務(wù)具體是怎樣創(chuàng)建和托管的。

服務(wù)代理(Service Broker)是由Open Service Broker API 規(guī)范定義的一組托管服務(wù)的端點,這些服務(wù)由第三方提供并維護,其中的第三方可以是 AWS、GCP 或 Azure 等云服務(wù)提供商。 托管服務(wù)的一些示例是 Microsoft Azure Cloud Queue、Amazon Simple Queue Service 和 Google Cloud Pub/Sub,但它們可以是應(yīng)用程序能夠使用的任何軟件交付物。

使用服務(wù)目錄,集群操作員 可以瀏覽某服務(wù)代理所提供的托管服務(wù)列表,供應(yīng)托管服務(wù)實例并與之綁定, 以使其可以被 Kubernetes 集群中的應(yīng)用程序使用。

示例用例

應(yīng)用開發(fā)人員, 希望使用消息隊列,作為其在 Kubernetes 集群中運行的應(yīng)用程序的一部分。 但是,他們不想承受構(gòu)造這種服務(wù)的開銷,也不想自行管理。 幸運的是,有一家云服務(wù)提供商通過其服務(wù)代理以托管服務(wù)的形式提供消息隊列服務(wù)。

集群操作員可以設(shè)置服務(wù)目錄并使用它與云服務(wù)提供商的服務(wù)代理通信,進(jìn)而部署消息隊列服務(wù)的實例 并使其對 Kubernetes 中的應(yīng)用程序可用。 應(yīng)用開發(fā)者于是可以不關(guān)心消息隊列的實現(xiàn)細(xì)節(jié),也不用對其進(jìn)行管理。 他們的應(yīng)用程序可以簡單的將其作為服務(wù)使用。

架構(gòu) 

服務(wù)目錄使用Open Service Broker API 與服務(wù)代理進(jìn)行通信,并作為 Kubernetes API 服務(wù)器的中介,以便協(xié)商啟動部署和獲取 應(yīng)用程序使用托管服務(wù)時必須的憑據(jù)。

它是基于 CRDs 架構(gòu)實現(xiàn)的。

API 資源

服務(wù)目錄安裝 ?servicecatalog.K8S.io? API 并提供以下 Kubernetes 資源:

  • ?ClusterServiceBroker?:服務(wù)目錄的集群內(nèi)表現(xiàn)形式,封裝了其服務(wù)連接細(xì)節(jié)。集群運維人員創(chuàng)建和管理這些資源,并希望使用該代理服務(wù)在集群中提供新類型的托管服務(wù)。
  • ?ClusterServiceClass?:由特定服務(wù)代理提供的托管服務(wù)。當(dāng)新的 ?ClusterServiceBroker ?資源被添加到集群時,服務(wù)目錄控制器將連接到服務(wù)代理以獲取可用的托管服務(wù)列表。然后為每個托管服務(wù)創(chuàng)建對應(yīng)的新 ?ClusterServiceClass? 資源。
  • ?ClusterServicePlan?:托管服務(wù)的特定產(chǎn)品。例如托管服務(wù)可能有不同的計劃可用,如免費版本和付費版本,或者可能有不同的配置選項,例如使用 SSD 存儲或擁有更多資源。與 ?ClusterServiceClass ?類似,當(dāng)一個新的 ?ClusterServiceBroker ?被添加到集群時,服務(wù)目錄會為每個托管服務(wù)的每個可用服務(wù)計劃創(chuàng)建對應(yīng)的新 ?ClusterServicePlan ?資源。
  • ?ServiceInstance?:?ClusterServiceClass? 提供的示例。由集群運維人員創(chuàng)建,以使托管服務(wù)的特定實例可供一個或多個集群內(nèi)應(yīng)用程序使用。當(dāng)創(chuàng)建一個新的 ?ServiceInstance ?資源時,服務(wù)目錄控制器將連接到相應(yīng)的服務(wù)代理并指示它調(diào)配服務(wù)實例。
  • ?ServiceBinding?:?ServiceInstance? 的訪問憑據(jù)。由希望其應(yīng)用程序使用服務(wù) ?ServiceInstance ?的集群運維人員創(chuàng)建。創(chuàng)建之后,服務(wù)目錄控制器將創(chuàng)建一個 Kubernetes ?Secret?,其中包含服務(wù)實例的連接細(xì)節(jié)和憑據(jù),可以掛載到 Pod 中。

認(rèn)證 

服務(wù)目錄支持這些認(rèn)證方法:

  • 基本認(rèn)證(用戶名/密碼)
  • OAuth 2.0 不記名令牌

使用方式

集群運維人員可以使用服務(wù)目錄 API 資源來供應(yīng)托管服務(wù)并使其在 Kubernetes 集群內(nèi)可用。涉及的步驟有:

  1. 列出服務(wù)代理提供的托管服務(wù)和服務(wù)計劃。
  2. 配置托管服務(wù)的新實例。
  3. 綁定到托管服務(wù),它將返回連接憑證。
  4. 將連接憑證映射到應(yīng)用程序中。

列出托管服務(wù)和服務(wù)計劃

首先,集群運維人員在 ?servicecatalog.k8s.io? 組內(nèi)創(chuàng)建一個 ?ClusterServiceBroker ?資源。此資源包含訪問服務(wù)代理終結(jié)點所需的 URL 和連接詳細(xì)信息。

這是一個 ?ClusterServiceBroker ?資源的例子:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServiceBroker
metadata:
  name: cloud-broker
spec:
  # 指向服務(wù)代理的末端。(這里的 URL 是無法使用的。)
  url:  https://servicebroker.somecloudprovider.com/v1alpha1/projects/service-catalog/brokers/default
  #####
  # 這里可以添加額外的用來與服務(wù)代理通信的屬性值,
  # 例如持有者令牌信息或者 TLS 的 CA 包。
  #####

下面的時序圖展示了從服務(wù)代理列出可用托管服務(wù)和計劃所涉及的各個步驟:

  1. 一旦 ?ClusterServiceBroker ?資源被添加到了服務(wù)目錄之后,將會觸發(fā)一個到外部服務(wù)代理的 調(diào)用,以列舉所有可用服務(wù);
  2. 服務(wù)代理返回可用的托管服務(wù)和服務(wù)計劃列表,這些列表將本地緩存在 ?ClusterServiceClass ?和 ?ClusterServicePlan ?資源中。
  3. 集群運維人員接下來可以使用以下命令獲取可用托管服務(wù)的列表:
kubectl get clusterserviceclasses \
  -o=custom-columns=SERVICE\ NAME:.metadata.name,EXTERNAL\ NAME:.spec.externalName

它應(yīng)該輸出一個和以下格式類似的服務(wù)名稱列表:

SERVICE NAME                           EXTERNAL NAME
4f6e6cf6-ffdd-425f-a2c7-3c9258ad2468   cloud-provider-service
...                                    ...

他們還可以使用以下命令查看可用的服務(wù)計劃:

kubectl get clusterserviceplans \
   -o=custom-columns=PLAN\ NAME:.metadata.name,EXTERNAL\ NAME:.spec.externalName

它應(yīng)該輸出一個和以下格式類似的服務(wù)計劃列表:

PLAN NAME                              EXTERNAL NAME
86064792-7ea2-467b-af93-ac9694d96d52   service-plan-name
...                                    ...

供應(yīng)一個新實例

集群運維人員 可以通過創(chuàng)建一個 ?ServiceInstance ?資源來啟動一個新實例的配置。

下面是一個 ?ServiceInstance ?資源的例子:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
  name: cloud-queue-instance
  namespace: cloud-apps
spec:
  # 引用之前返回的服務(wù)之一
  clusterServiceClassExternalName: cloud-provider-service
  clusterServicePlanExternalName: service-plan-name
  #####
  # 這里可添加額外的參數(shù),供服務(wù)代理使用
  #####

以下時序圖展示了配置托管服務(wù)新實例所涉及的步驟:

  1. 創(chuàng)建 ?ServiceInstance ?資源時,服務(wù)目錄將啟動一個到外部服務(wù)代理的調(diào)用, 請求供應(yīng)一個實例。
  2. 服務(wù)代理創(chuàng)建一個托管服務(wù)的新實例并返回 HTTP 響應(yīng)。
  3. 接下來,集群運維人員可以檢查實例的狀態(tài)是否就緒。

綁定到托管服務(wù)

在設(shè)置新實例之后,集群運維人員必須綁定到托管服務(wù)才能獲取應(yīng)用程序使用服務(wù)所需的連接憑據(jù)和服務(wù)賬戶的詳細(xì)信息。該操作通過創(chuàng)建一個 ?ServiceBinding ?資源完成。

以下是 ?ServiceBinding ?資源的示例:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: cloud-queue-binding
  namespace: cloud-apps
spec:
  instanceRef:
    name: cloud-queue-instance
  #####
  # 這里可以添加供服務(wù)代理使用的額外信息,例如 Secret 名稱或者服務(wù)賬號參數(shù),
  #####

以下順序圖展示了綁定到托管服務(wù)實例的步驟:

  1. 在創(chuàng)建 ?ServiceBinding ?之后,服務(wù)目錄調(diào)用外部服務(wù)代理,請求綁定服務(wù)實例所需的信息。
  2. 服務(wù)代理為相應(yīng)服務(wù)賬戶啟用應(yīng)用權(quán)限/角色。
  3. 服務(wù)代理返回連接和訪問托管服務(wù)示例所需的信息。這是由提供商和服務(wù)特定的,故返回的信息可能因服務(wù)提供商和其托管服務(wù)而有所不同。

映射連接憑據(jù)

完成綁定之后的最后一步就是將連接憑據(jù)和服務(wù)特定的信息映射到應(yīng)用程序中。這些信息存儲在 secret 中,集群中的應(yīng)用程序可以訪問并使用它們直接與托管服務(wù)進(jìn)行連接。

Pod 配置文件

執(zhí)行此映射的一種方法是使用聲明式 Pod 配置。

以下示例描述了如何將服務(wù)賬戶憑據(jù)映射到應(yīng)用程序中。名為 ?sa-key? 的密鑰保存在一個名為 ?provider-cloud-key? 的卷中,應(yīng)用程序會將該卷掛載在 ?/var/secrets/provider/key.json? 路徑下。環(huán)境變量 ?PROVIDER_APPLICATION_CREDENTIALS ?將映射為掛載文件的路徑。

...
    spec:
      volumes:
        - name: provider-cloud-key
          secret:
            secretName: sa-key
      containers:
...
          volumeMounts:
          - name: provider-cloud-key
            mountPath: /var/secrets/provider
          env:
          - name: PROVIDER_APPLICATION_CREDENTIALS
            value: "/var/secrets/provider/key.json"

以下示例描述了如何將 Secret 值映射為應(yīng)用程序的環(huán)境變量。 在這個示例中,消息隊列的主題名從 Secret ?provider-queue-credentials? 中名為 ?topic ?的主鍵映射到環(huán)境變量 ?TOPIC ?中。

...
          env:
          - name: "TOPIC"
            valueFrom:
                secretKeyRef:
                   name: provider-queue-credentials
                   key: topic

分享文章:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes服務(wù)目錄
本文來源:http://www.5511xx.com/article/cojdohp.html