日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

阿里云Kubernetes服务 - Service Broker快速入门指南

發(fā)布時(shí)間:2025/6/16 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里云Kubernetes服务 - Service Broker快速入门指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

4月底阿里云容器服務(wù)上線(xiàn)了基于Kubernetes集群的服務(wù)目錄功能。阿里云的容器的服務(wù)目錄遵循Open Service Broker API標(biāo)準(zhǔn),提供了一系列的服務(wù)代理組件,實(shí)現(xiàn)了對(duì)主流開(kāi)源服務(wù)如MySQL、MariaDB、Spark、RabbitMQ等的完美支持,同時(shí)提供了管理阿里云RDS服務(wù)的RDS broker功能。通過(guò)控制臺(tái),用戶(hù)可以瀏覽到各種服務(wù)的broker,通過(guò)簡(jiǎn)單地界面操作,就可以完成創(chuàng)建和銷(xiāo)毀不同規(guī)格的服務(wù)實(shí)例,將目標(biāo)服務(wù)實(shí)例與應(yīng)用綁定,并以安全的方式將服務(wù)實(shí)例的訪(fǎng)問(wèn)信息和秘鑰注入到應(yīng)用容器中,大大降低了云服務(wù)的使用的復(fù)雜度,提高了管理效率。

下面以RDS broker為例來(lái)進(jìn)行說(shuō)明,以幫助大家快速上手。

安裝service catalog

首先,進(jìn)入容器服務(wù),創(chuàng)建一個(gè)Kubernetes集群,然后在控制臺(tái)就可以看到服務(wù)目錄標(biāo)簽

點(diǎn)擊服務(wù)目錄,點(diǎn)擊左上角的“集群”,可以選擇不同的集群。如果選擇的集群還未安裝過(guò)service catalog,點(diǎn)擊“請(qǐng)點(diǎn)擊安裝”,即可以進(jìn)行安裝。

安裝完成后就可以看到目前支持的各個(gè)service broker的標(biāo)簽:

安裝service broker

點(diǎn)擊“rds-broker”,進(jìn)入rds-broker的詳情頁(yè)面,如下所示。詳情頁(yè)面有兩個(gè)標(biāo)簽頁(yè):“說(shuō)明”和“參數(shù)”。“說(shuō)明”標(biāo)簽頁(yè)說(shuō)明了broker的具體使用方法;“參數(shù)”標(biāo)簽頁(yè)是部署該broker的各種參數(shù),可以根據(jù)需要進(jìn)行修改。

broker的部署有兩種方式:

1 通過(guò)控制臺(tái)部署 點(diǎn)擊右側(cè)的“創(chuàng)建”按鈕即可以進(jìn)行部署,service broker會(huì)以指定的名字部署到指定的namespace中,以rds broker為例,會(huì)以“aliacs-rds-broker” 名稱(chēng)部署到名為“catalog”的namespace中。service catalog也安裝在“catalog” namespace中;

2 使用命令行部署,這種部署方式,需要登錄到集群的master節(jié)點(diǎn)上,使用kubectl的命令進(jìn)行部署,“說(shuō)明”標(biāo)簽頁(yè)中有具體的操作步驟。這種方式可以靈活的指定名稱(chēng)和namespace。

下面使用命令行的方式進(jìn)行部署。

首先登錄集群的master節(jié)點(diǎn)(具體方法是:點(diǎn)擊“集群”標(biāo)簽,選擇集群,然后點(diǎn)擊“管理”按鈕,進(jìn)入集群的“基本信息”頁(yè)。查看右側(cè)頁(yè)面中的“Master 節(jié)點(diǎn) SSH 連接地址”,通過(guò)ssh登錄到集群的master節(jié)點(diǎn))。

如果使用rds broker,需要給Kubernetes集群授予rds的訪(fǎng)問(wèn)權(quán)限。

授予的步驟可以參考“說(shuō)明”標(biāo)簽頁(yè)的“Prerequisites”中說(shuō)明方法:

首先點(diǎn)擊“集群”標(biāo)簽,選擇集群,點(diǎn)擊“管理”->選擇“集群資源”中的“資源編排ROS”,點(diǎn)擊ROS的鏈接,跳轉(zhuǎn)到“ROS”控制臺(tái)->在“ROS”控制臺(tái)左側(cè)點(diǎn)擊“資源”標(biāo)簽,右側(cè)下拉到最后面,選擇“KubernetesWorkerRole”資源,然后點(diǎn)擊鏈接,跳轉(zhuǎn)至“訪(fǎng)問(wèn)控制”控制臺(tái)->在“訪(fǎng)問(wèn)控制”控制臺(tái)左側(cè),點(diǎn)擊“角色授權(quán)策略”按鈕,然后在右側(cè)頁(yè)面中點(diǎn)擊“查看權(quán)限”按鈕,在跳轉(zhuǎn)的頁(yè)面,點(diǎn)擊“授權(quán)策略詳情”按鈕,進(jìn)入“策略詳情”頁(yè),在“策略詳情頁(yè)”中點(diǎn)擊“修改授權(quán)策略”按鈕。在彈出的對(duì)話(huà)框中,參考里面的格式增加如下內(nèi)容,點(diǎn)擊“修改策略”按鈕,完成授權(quán)。

{"Action": ["rds:*"],"Resource": ["*"],"Effect": "Allow"},復(fù)制代碼

使用如下命令安裝,“--name”和“--namespace”可以按照,本例中為“rds-broker”和“rds-broker-ns”。

$ helm install --name rds-broker --namespace rds-broker-ns incubator/rds-broker復(fù)制代碼

刪除broker可以使用如下命令:

$ helm delete --purge rds-broker復(fù)制代碼

注冊(cè)broker

安裝完成之后,首先需要通過(guò)kubectl命令注冊(cè)broker。

建立一個(gè)名為rds-broker.yaml的文件,內(nèi)容如下。其中“name”項(xiàng)可以根據(jù)需要進(jìn)行修改,“url”項(xiàng)為service broker的url地址,格式為:broker的service名稱(chēng).broker的namespace名稱(chēng).cluster.local。

apiVersion: servicecatalog.k8s.io/v1beta1 kind: ClusterServiceBroker metadata:name: rds-broker spec:url: http://rds-broker-rds-broker.rds-broker-ns.svc.cluster.local復(fù)制代碼

broker的service名稱(chēng)可以通過(guò):kubectl get svc -n rds-broker-ns查詢(xún)到。

注冊(cè)命令如下:

$ kubectl create -f rds-broker.yaml復(fù)制代碼

注冊(cè)后可以查詢(xún)到clusterservicebroker、clusterserviceclass、clusterserviceplan三種資源。

$ kubectl get clusterservicebroker NAME AGE rds-broker 14s $ kubectl get clusterserviceclass NAME AGE 997b8372-8dac-40ac-ae65-758b4a50111 28s $ kubectl describe clusterserviceclass 997b8372-8dac-40ac-ae65-758b4a50111 ...External Name: rds-servicePlan Updatable: true ... $ kubectl get clusterserviceplan NAME AGE 427559f1-bf2a-45d3-8844-32374a3e1111 39s edc2badc-d93b-4d9c-9d8e-da2f1c8c1111 39s edc2badc-d93b-4d9c-9d8e-da2f1c8c1112 39s $ kubectl describe clusterserviceplan ...External Metadata:Class: rds.mysql.s2.largeCpu: 2Engine: MySQLEngine _ Version: 5.6High _ Availability: falseMemory: 4Storage: 20Type: Vpc ID: Vswitch ID: External Name: mysql-n2-medium-1 ...復(fù)制代碼

其中Clusterserviceclass和Clusterserviceplan的“External Name”需要在創(chuàng)建rds instance是指定。不同的Clusterserviceplan可以創(chuàng)建不同的rds instance,可以根據(jù)需要進(jìn)行選擇。

創(chuàng)建instance

建立一個(gè)名為rds-instance.yaml的文件,內(nèi)容如下。

apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceInstance metadata: name: rds-instance namespace: rds-broker-ns spec: clusterServiceClassExternalName: alibaba-cloud-rds-mysqldb clusterServicePlanExternalName: self-define parameters: Type: VPC Class: rds.mysql.s2.large復(fù)制代碼

中“name”、“namespace”、“clusterServiceClassExternalName”和“clusterServicePlanExternalName”可以根據(jù)需要進(jìn)行指定。本例中因?yàn)檫x擇的是“self-define”的clusterserviceplan,需要在“parameters”中指定rds的數(shù)據(jù)庫(kù)類(lèi)型(可以在rds控制臺(tái)的創(chuàng)建頁(yè)面的“數(shù)據(jù)庫(kù)類(lèi)型”中選擇,目前僅支持mysql)、Class(同樣在rds控制臺(tái)的創(chuàng)建頁(yè)面中的“規(guī)格”中來(lái)選擇,請(qǐng)參考help.aliyun.com/document_de…)和Storage(單位是G,范圍為20~1000,步長(zhǎng)是5)。

創(chuàng)建isntance的命令如下:

$ kubectl create -f rds-instance.yaml復(fù)制代碼

創(chuàng)建的過(guò)程大約需要15分鐘左右,創(chuàng)建完成后,可以再阿里云的rds控制臺(tái)中查看到正在創(chuàng)建的rds實(shí)例,也可以通過(guò)kubectl get serviceinstance -n rds-broker-ns的命令來(lái)查看。kubectl describe serviceinstance -n rds-broker-ns rds-instance(instance的名稱(chēng)) 可以更加詳細(xì)的查看instance創(chuàng)建的狀態(tài)。

創(chuàng)建binding

創(chuàng)建binding會(huì)在kubernetes集群中創(chuàng)建一個(gè)包含rds實(shí)例的host、username、password、port等信息在內(nèi)的secret。

下面開(kāi)始創(chuàng)建binding。

建立一個(gè)名為rds-binding.yaml的文件,內(nèi)容如下:

apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceBinding metadata: name: rds-binding namespace: rds-broker-ns spec: instanceRef: name: rds-instance secretName: rds-instance-credentials parameters: Username: username Password: password復(fù)制代碼

使用如下命令創(chuàng)建servicebinding,該servicebinding會(huì)在kubernetes集群中創(chuàng)建一個(gè)名為“rds-instance-credentials”的secret。其中“parameters”中的“Username”和“Password”可以根據(jù)需要指定。

$ kubectl create -f rds-binding.yaml復(fù)制代碼

Binding完成大約需要10分鐘左右的時(shí)間,可以通過(guò)rds控制臺(tái)中查看相關(guān)實(shí)例的賬號(hào)管理來(lái)查看,也可以通過(guò)kubectl describe serviceisntance -n rds-broker-ns rds-binding(binding的名稱(chēng))來(lái)查看。

使用kubectl get secret -n rds-broker-ns命令可以查看secret的情況:

$ kubectl get secret -n rds-broker-ns NAME TYPE DATA AGE default-token-d9nx6 kubernetes.io/service-account-token 3 1h rds-instance-credentials Opaque 6 2m $ kubectl describe secret rds-instance-credentials -n rds-broker-ns ... Data ==== username: 8 bytes host: 43 bytes password: 8 bytes port: 4 bytes uri: 75 bytes ...復(fù)制代碼

使用kubectl get secret -n rds-broker-ns -o json可以獲取更詳細(xì)的信息。

其中username、host、password、port、uri是經(jīng)過(guò)base64加密的訪(fǎng)問(wèn)instance的信息,解密以后即可用來(lái)訪(fǎng)問(wèn)rds的instance。

binding的使用

對(duì)binding生成的secret中的相關(guān)字段進(jìn)行base64解碼后可以訪(fǎng)問(wèn)rds instance了。

通過(guò)mysql client訪(fǎng)問(wèn):

$ mysql -h host -uusername -ppassword Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 59303 Server version: 5.6.16-log Source distributionCopyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]>復(fù)制代碼

通過(guò)python來(lái)訪(fǎng)問(wèn):

#!/usr/bin/python # -*- coding: UTF-8 -*-import MySQLdbconn = MySQLdb.connect(host='host', user='username', passwd='password') cursor=conn.cursor() cursor.execute("""create database if not exists db_pytest""") conn.select_db('db_pytest') cursor.execute("create table tb_test(id int, info varchar(100))") cursor.close()復(fù)制代碼

通過(guò)deployment來(lái)訪(fǎng)問(wèn):

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: wordpress namespace: mariadb-broker-ns spec: template: metadata: labels: app: wordpress spec: containers: - name: wordpress image: "bitnami/wordpress:latest" env: - name: MARIADB_HOST valueFrom: secretKeyRef: name: rds-instance-credentials key: host - name: MARIADB_PORT valueFrom: secretKeyRef: name: rds-instance-credentials key: port - name: WORDPRESS_DATABASE_USER valueFrom: secretKeyRef: name: rds-instance-credentials key: username - name: WORDPRESS_DATABASE_PASSWORD valueFrom: secretKeyRef: name: rds-instance-credentials key: password - name: WORDPRESS_DATABASE_NAME value: db_pytest ports: - name: http containerPort: 80 livenessProbe: httpGet: path: / port: http initialDelaySeconds: 120 timeoutSeconds: 5 readinessProbe: httpGet: path: / port: http initialDelaySeconds: 5 timeoutSeconds: 5 --- apiVersion: v1 kind: Service metadata: name: wordpress namespace: mariadb-broker-ns spec: type: LoadBalancer ports: - name: http port: 80 targetPort: http selector: app: wordpress復(fù)制代碼

原文鏈接


總結(jié)

以上是生活随笔為你收集整理的阿里云Kubernetes服务 - Service Broker快速入门指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。