<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 服務目錄(Service Catalog) 服務目錄(Service Catalog)是Kubernetes的擴展API,它使運行在Kubernetes集群中的應用程序可以輕松使用外部托管軟件產品,例如由云提供商提供的數據存儲服務。 它提供列表清單、提供(provision)和綁定(binding)來自服務代理(Service Brokers)的外部托管服務,而不需要關心如何創建或管理這些服務的詳細情況。 由Open Service Broker API規范定義的Service broker是由第三方提供和維護的一組托管服務的端點(endpoint),該第三方可以是AWS,GCP或Azure等云提供商。 托管服務可以是Microsoft Azure Cloud Queue,Amazon Simple Queue Service和Google Cloud Pub/Sub等,它們可以是應用可以使用的提供的各種軟件。 通過Service Catalog,集群運營者可以瀏覽由Service Broker提供的托管服務列表,提供的托管服務實例,并與其綁定,使其可被Kubernetes集群中的應用程序所使用。 ## 場景樣例 應用程序開發人員編寫基于Kubernetes集群的應用程序,他們希望使用消息隊列作為其應用程序的一部分。但是,他們不想自己配置和管理這個服務服務。恰好,有一家云提供商通過其服務代理(Service Broker)提供消息隊列服務。 集群運營商可以設置Service Catalog并使用它與云提供商的Service Broker進行通信,以調配消息排隊服務的實例并使其可用于Kubernetes集群內的應用程序。因此,應用程序開發人員不需要關心消息隊列的實現細節或管理,可以簡單地像服務一樣使用它。 ## 架構 Service Catalog使用[Open Service Broker API](https://github.com/openservicebrokerapi/servicebroker)與Service Broker進行通信,充當Kubernetes API服務器的中介,發起供應并返回應用程序使用托管服務所需的憑據。 Service Catalog通過擴展API服務器和控制器實現,使用etcd進行存儲。它還使用Kubernetes 1.7+中提供的聚合層來呈現其API。 ![Service Catalog Architecture](https://box.kancloud.cn/a0ba41d81ca2ddcdca4f6942435e33c5_1421x772.jpg) ### API資源 Service Catalog安裝servicecatalog.k8s.ioAPI并提供以以下Kubernetes資源: * ClusterServiceBroker:作為service broker的群集內代理,封裝其服務器連接詳細信息。這些由集群運營者創建和管理,希望使用broker服務在其集群中提供新類型的托管服務。 * ClusterServiceClass:由特定service broker提供的托管服務。將新ClusterServiceBroker資源添加到群集時,Service catalog controller將連接到service broker以獲取可用托管服務的列表清單。然后它會創建新的ClusterServiceClass資源,與每個托管服務相對應。 * ClusterServicePlan:托管服務的特定產品。例如,托管服務可能有不同的可用套餐,例如免費套餐或付費套餐,或者可能有不同的配置選項,例如使用SSD存儲或擁有更多資源。同向群集添加ClusterServiceClass一樣,當添加一個新的ClusterServiceBroker時,Service Catalog會創建一個新的ClusterServicePlan資源,與每個托管服務可用的每個服務套餐對應。 * ServiceInstance:一個提供好的ClusterServiceClass實例。這些是由集群運營者創建的托管服務的特定實例,供一個或多個集群內應用程序使用。當創建一個新的ServiceInstance資源時,Service Catalog controller連接到相應的服務代理并指示它提供服務實例。 * ServiceBinding:訪問ServiceInstance的憑據。由想讓他們的應用利用ServiceInstance的集群集運營者創建。創建之后,Service Catalog controller將創建一個與此服務實例對應的Kubernetes的Secret,包含此服務實例的連接詳細信息和憑證 ,可以掛載到Pod中。 ### 鑒權認證 Service Catalog 支持這些認證方法: * Basic (username/password) * [OAuth 2.0 Bearer Token](https://tools.ietf.org/html/rfc6750) ## 用法 群集運營者可以使用Service Catalog API資源來提供托管服務,并使其在Kubernetes群集中可用。涉及的步驟是: 1. 列出Service Broker提供的托管服務清單和服務套餐。 2. 提供托管服務的新實例。 3. 綁定到托管服務,該服務返回連接憑證。 4. 將連接憑證映射到應用程序中。 ### 列出托管服務和服務套餐 首先,群集運營者必須在servicecatalog.k8s.io群組內創建ClusterServiceBroker資源。此資源包含訪問服務代理端點所需的URL和連接詳細信息。 這是一個ClusterServiceBroker資源的例子: ```yaml apiVersion: servicecatalog.k8s.io/v1beta1 kind: ClusterServiceBroker metadata: name: cloud-broker spec: # Points to the endpoint of a service broker. (This example is not a working URL.) url: https://servicebroker.somecloudprovider.com/v1alpha1/projects/service-catalog/brokers/default ##### # Additional values can be added here, which may be used to communicate # with the service broker, such as bearer token info or a caBundle for TLS. ##### ``` 以下是說明從一個service broker列出托管服務和套餐所涉及步驟的順序圖: ![List Services](https://box.kancloud.cn/9bf023a309ac63225686d8978040a59f_1421x772.jpg) 1. 將ClusterServiceBroker資源添加到Service catalog中,它會觸發對外部Service Broker的調用以獲取可用服務的清單。 2. Service Broker返回可用托管服務的清單和服務套餐的列表,它們分別在本地緩存為`ClusterServiceClass`資源和`ClusterServicePlan`資源。 3. 然后,集群運營者可以使用以下命令獲取可用托管服務的清單: kubectl get clusterserviceclasses -o=custom-columns=SERVICE\ NAME:.metadata.name,EXTERNAL\ NAME:.spec.externalName 它應該輸出一個類似于以下格式的服務名稱列表: SERVICE NAME EXTERNAL NAME 4f6e6cf6-ffdd-425f-a2c7-3c9258ad2468 cloud-provider-service ... ... 他們還可以使用以下命令查看可用的服務套餐: kubectl get clusterserviceplans -o=custom-columns=PLAN\ NAME:.metadata.name,EXTERNAL\ NAME:.spec.externalName 它應該輸出一個類似于以下格式的套餐名稱列表: PLAN NAME EXTERNAL NAME 86064792-7ea2-467b-af93-ac9694d96d52 service-plan-name ... ... ### 提供新的實例 集群運營者可以通過創建ServiceInstance資源來啟動新實例的供應。 如下是一個ServiceInstance資源的例子: ```yaml apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceInstance metadata: name: cloud-queue-instance namespace: cloud-apps spec: # References one of the previously returned services clusterServiceClassExternalName: cloud-provider-service clusterServicePlanExternalName: service-plan-name ##### # Additional parameters can be added here, # which may be used by the service broker. ##### ``` 以下序列圖說明了提供一個新的托管服務的實例所涉及的步驟: ![Provision a Service](https://box.kancloud.cn/4b7b47ae0a9def7c28ca8372214fadb4_1421x772.jpg) 1. 當`ServiceInstance`資源創建后,Service Catalog發起到外部service broker來提供服務的一個實例。 2. service broker創建托管服務的新實例并返回HTTP響應。 3. 然后,群集運營者可以檢查實例的狀態,來確認它是否準備就緒。 ### 綁定到托管服務 在提供新實例后,群集運營者必須綁定到托管服務才能獲取到應用程序使用服務所需的連接憑證和服務帳戶詳細信息。這是通過創建`ServiceBinding`資源完成的。 以下是一個`ServiceBinding`資源的例子: ```yaml apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceBinding metadata: name: cloud-queue-binding namespace: cloud-apps spec: instanceRef: name: cloud-queue-instance ##### # Additional information can be added here, such as a secretName or # service account parameters, which may be used by the service broker. ##### ``` 以下序列圖說明了綁定到托管服務實例所涉及的步驟: ![Bind to a managed service](https://box.kancloud.cn/d02dde6eecaa026f0125df0ab81d1cda_1421x772.jpg) 1. 在ServiceBinding創建后,Service Catalog給外部service broker發一個調用請求,獲取與服務實例綁定所需的信息。 2. service broker為相應的服務帳戶啟用應用程序權限/角色。 3. service broker返回連接和訪問托管服務實例所需的信息。根據不同的提供商和不同的服務,返回的信息可能在服務提供商和其管理服務之間有所不同。 ### 映射連接憑證 綁定后,最后一步是將連接憑證和服務特定的信息映射到應用程序中。這些信息存儲在secret中,應用程序可以用來訪問并與托管服務連接。 ![Map connection credentials](https://box.kancloud.cn/ace91f5730449d8fd94517abf9959c6d_1421x772.jpg) #### Pod配置文件 執行此映射的一種方法是使用聲明式Pod配置文件。 以下示例描述了如何將服務帳戶憑證映射到應用程序中。被調用的sa-key密鑰存儲在名為provider-cloud-key的卷中,并且應用程序將此卷掛載到/var/secrets/provider/key.json。環境變量PROVIDER_APPLICATION_CREDENTIALS是從掛載文件的值映射而來的。 ```yaml ... 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值映射到應用程序環境變量。在此示例中,消息傳遞隊列`topic`名稱從名為`provider-queue-credentials`的secret的key topic值映射到環境變量`TOPIC`。 ```yaml ... env: - name: "TOPIC" valueFrom: secretKeyRef: name: provider-queue-credentials key: topic ``` ## 下一步 * 如果熟悉Helm Charts ,使用Helm將Service Catalog安裝到Kubernetes集群中。或者,可以使用SC工具安裝服務目錄。 * 查看 [sample service brokers](https://github.com/openservicebrokerapi/servicebroker/blob/master/gettingStarted.md#sample-service-brokers). * 探索[kubernetes-incubator/service-catalog](https://github.com/kubernetes-incubator/service-catalog) 項目。 以上翻譯自[官方文檔](https://kubernetes.io/docs/concepts/service-catalog/)。 ## Service Catalog的安裝(利用Helm)和交互 以下翻譯自[官方項目文檔](https://github.com/kubernetes-incubator/service-catalog/blob/master/docs/install.md)。與[官方網站文檔](https://kubernetes.io/docs/tasks/service-catalog/install-service-catalog-using-helm/)大致一致。 Kubernetes 1.7或更高版本的集群運行 API Aggregator,它位于core API Server前面的專用proxy服務器。 服務目錄(Service Catalog)提供了一個位于API aggregator后面的API Server,因此可以用kubectl像平常一樣與Service Catalog進行交互。 要了解更多關于API aggregation的信息,請參閱 [Kubernetes文檔](https://kubernetes.io/docs/concepts/api-extension/apiserver-aggregation/)。 本文檔的其余部分詳細介紹了如何: - 在群集上設置Service Catalog - 與Service Catalog API進行交互 ## 前提條件 ### Kubernetes版本 Service Catalog需要Kubernetes v1.7或更高版本。您還需要 在主機上安裝[Kubernetes configuration file](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) 。你需要這個文件,以便可以使用kubectl和 helm與群集通信。許多Kubernetes安裝工具或云提供商會為你設置此配置文件。有關詳細信息,請與您的工具或提供商聯系。 #### `kubectl`版本 大多數與Service Catalog系統的交互都是通過`kubectl`命令行界面實現的。與群集版本一樣,Service Catalog需要kubectl版本1.7或更高版本。 首先,檢查`kubectl`版本: ```bash kubectl version ``` 確保Kubernetes版本和kubectl版本均為1.7或更高。 如果需要升級客戶端,請按照[安裝說明](https://kubernetes.io/docs/tasks/kubectl/install/) 獲取新的`kubectl`二進制文件。 例如,運行以下命令以在Mac OS上獲取最新的二進制文件: ```bash curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl chmod +x ./kubectl ``` ### 群集內DNS 您需要啟用Kubernetes集群內的DNS。大多數常用的安裝方法會為您自動配置群集內DNS: - [Minikube](https://github.com/kubernetes/minikube) - [`hack/local-up-cluster.sh`](https://github.com/kubernetes/kubernetes/blob/master/hack/local-up-cluster.sh) - 大多數云提供商 ### Helm 使用Helm安裝Service Catalog ,需要v2.7.0或更高版本。請參閱以下步驟進行安裝。 #### 如果還沒有安裝Helm 如果尚未安裝Helm,請下載[`helm` CLI](https://github.com/kubernetes/helm#install),然后運行helm init(這會將Helm的服務器端組件Tiller安裝到Kubernetes群集中)。 #### 如果已經安裝了Helm 如果已經安裝了Helm,請運行helm version并確保客戶端和服務器版本均為v2.7.0或更高。 如果不是, 請安裝[更新版本的helm CLI](https://github.com/kubernetes/helm#install)并運行`helm init --upgrade`。 有關安裝的更多詳細信息,請參閱 [Helm安裝說明](https://github.com/kubernetes/helm/blob/master/docs/install.md)。 #### Tiller 權限 Tiller是Helm的服務端組件。默認情況下, helm init將Tiller pod安裝到kube-system名稱空間中,并將Tiller配置為使用default服務帳戶(service account)。 需要對Tiller進行配置`cluster-admin`權限,才能正確安裝Service Catalog: ```bash kubectl create clusterrolebinding tiller-cluster-admin \ --clusterrole=cluster-admin \ --serviceaccount=kube-system:default ``` ### Helm Repository設置 Service Catalog很容易通過[Helm chart](https://github.com/kubernetes/helm/blob/master/docs/charts.md)安裝 。 此chart位于 [chart repository](https://github.com/kubernetes/helm/blob/master/docs/chart_repository.md)中。將此repository添加到本地計算機: ```bash helm repo add svc-cat https://svc-catalog-charts.storage.googleapis.com ``` 然后,確保repository已成功添加: ```bash helm search service-catalog ``` 應該看到以下輸出: ```bash NAME VERSION DESCRIPTION svc-cat/catalog x,y.z service-catalog API server and controller-manag... ``` ### RBAC Kubernetes群集必須啟用[RBAC](https://kubernetes.io/docs/admin/authorization/rbac/) 才能使用Service Catalog。 與群集內DNS一樣,許多安裝方法都有對應啟用RBAC的途徑。 #### Minikube 如果您正在使用Minikube,請使用以下命令啟動群集: ```bash minikube start --extra-config=apiserver.Authorization.Mode=RBAC ``` #### hack/local-cluster-up.sh 如果使用[`hack/local-up-cluster.sh`](https://github.com/kubernetes/kubernetes/blob/master/hack/local-up-cluster.sh)腳本,請使用以下命令啟動群集: ```bash AUTHORIZATION_MODE=Node,RBAC hack/local-up-cluster.sh -O ``` #### 云提供商 許多云提供商為你啟用了RBAC的新集群。有關詳細信息,請查閱你的提供商的文檔。 ## 安裝Service Catalog 集群和Helm配置正確,安裝Service Catalog很簡單: ```bash helm install svc-cat/catalog \ --name catalog --namespace catalog ``` ## 安裝Service Catalog CLI 客戶端 按照適用于操作系統的說明安裝svcat。二進制文件可以單獨使用,也可以作為kubectl插件使用。 ### MacOS ``` curl -sLO https://download.svcat.sh/cli/latest/darwin/amd64/svcat chmod +x ./svcat mv ./svcat /usr/local/bin/ svcat version --client ``` ### Linux ``` curl -sLO https://download.svcat.sh/cli/latest/linux/amd64/svcat chmod +x ./svcat mv ./svcat /usr/local/bin/ svcat version --client ``` ### Windows 下面的片段僅在當前會話的PATH添加一個路徑。后續使用需要將它相應的路徑永久添加到PATH中。 ``` iwr 'https://download.svcat.sh/cli/latest/windows/amd64/svcat.exe' -UseBasicParsing -OutFile svcat.exe mkdir -f ~\bin $env:PATH += ";${pwd}\bin" svcat version --client ``` ### 手動方式 1. 對應操作系統下載相應的二進制文件: * macOS: https://download.svcat.sh/cli/latest/darwin/amd64/svcat * Windows: https://download.svcat.sh/cli/latest/windows/amd64/svcat.exe * Linux: https://download.svcat.sh/cli/latest/linux/amd64/svcat 2. 使二進制文件可執行。 3. 將二進制文件移動到PATH相應的目錄。 ### 插件方式使用客戶端 要將svcat用作插件,請在下載后運行以下命令: ```bash $ ./svcat install plugin Plugin has been installed to ~/.kube/plugins/svcat. Run kubectl plugin svcat --help for help using the plugin. ``` 當作為插件運行時,這些命令與添加全局kubectl配置標志相同。其中一個例外是,在插件模式下運行時不支持布爾標志,所以不要使用`--flag`,必須指定`--flag=true`。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看