4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能。阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如MySQL、MariaDB、Spark、RabbitMQ等的完美支持,同时提供了管理阿里云RDS服务的RDS broker功能。通过控制台,用户可以浏览到各种服务的broker,通过简单地界面操作,就可以完成创建和销毁不同规格的服务实例,将目标服务实例与应用绑定,并以安全的方式将服务实例的访问信息和秘钥注入到应用容器中,大大降低了云服务的使用的复杂度,提高了管理效率。
下面以RDS broker为例来进行说明,以帮助大家快速上手。
安装service catalog
首先,进入容器服务,创建一个Kubernetes集群,然后在控制台就可以看到服务目录标签
点击服务目录,点击左上角的“集群”,可以选择不同的集群。如果选择的集群还未安装过service catalog,点击“请点击安装”,即可以进行安装。
安装完成后就可以看到目前支持的各个service broker的标签:
安装service broker
点击“rds-broker”,进入rds-broker的详情页面,如下所示。详情页面有两个标签页:“说明”和“参数”。“说明”标签页说明了broker的具体使用方法;“参数”标签页是部署该broker的各种参数,可以根据需要进行修改。
broker的部署有两种方式:
1 通过控制台部署 点击右侧的“创建”按钮即可以进行部署,service broker会以指定的名字部署到指定的namespace中,以rds broker为例,会以“aliacs-rds-broker” 名称部署到名为“catalog”的namespace中。service catalog也安装在“catalog” namespace中;
2 使用命令行部署,这种部署方式,需要登录到集群的master节点上,使用kubectl的命令进行部署,“说明”标签页中有具体的操作步骤。这种方式可以灵活的指定名称和namespace。
下面使用命令行的方式进行部署。
首先登录集群的master节点(具体方法是:点击“集群”标签,选择集群,然后点击“管理”按钮,进入集群的“基本信息”页。查看右侧页面中的“Master 节点 SSH 连接地址”,通过ssh登录到集群的master节点)。
如果使用rds broker,需要给Kubernetes集群授予rds的访问权限。
授予的步骤可以参考“说明”标签页的“Prerequisites”中说明方法:
首先点击“集群”标签,选择集群,点击“管理”->选择“集群资源”中的“资源编排ROS”,点击ROS的链接,跳转到“ROS”控制台->在“ROS”控制台左侧点击“资源”标签,右侧下拉到最后面,选择“KubernetesWorkerRole”资源,然后点击链接,跳转至“访问控制”控制台->在“访问控制”控制台左侧,点击“角色授权策略”按钮,然后在右侧页面中点击“查看权限”按钮,在跳转的页面,点击“授权策略详情”按钮,进入“策略详情”页,在“策略详情页”中点击“修改授权策略”按钮。在弹出的对话框中,参考里面的格式增加如下内容,点击“修改策略”按钮,完成授权。
{
"Action": [
"rds:*"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
使用如下命令安装,“--name”和“--namespace”可以按照,本例中为“rds-broker”和“rds-broker-ns”。
$ helm install --name rds-broker --namespace rds-broker-ns incubator/rds-broker
删除broker可以使用如下命令:
$ helm delete --purge rds-broker
注册broker
安装完成之后,首先需要通过kubectl命令注册broker。
建立一个名为rds-broker.yaml的文件,内容如下。其中“name”项可以根据需要进行修改,“url”项为service broker的url地址,格式为:broker的service名称.broker的namespace名称.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
broker的service名称可以通过:kubectl get svc -n rds-broker-ns查询到。
注册命令如下:
$ kubectl create -f rds-broker.yaml
注册后可以查询到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-service
Plan 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.large
Cpu: 2
Engine: MySQL
Engine _ Version: 5.6
High _ Availability: false
Memory: 4
Storage: 20
Type:
Vpc ID:
Vswitch ID:
External Name: mysql-n2-medium-1
...
其中Clusterserviceclass和Clusterserviceplan的“External Name”需要在创建rds instance是指定。不同的Clusterserviceplan可以创建不同的rds instance,可以根据需要进行选择。
创建instance
建立一个名为rds-instance.yaml的文件,内容如下。
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
中“name”、“namespace”、“clusterServiceClassExternalName”和“clusterServicePlanExternalName”可以根据需要进行指定。本例中因为选择的是“self-define”的clusterserviceplan,需要在“parameters”中指定rds的数据库类型(可以在rds控制台的创建页面的“数据库类型”中选择,目前仅支持mysql)、Class(同样在rds控制台的创建页面中的“规格”中来选择,请参考https://help.aliyun.com/document_detail/26312.html?spm=a2c4g.11186623.6.562.Uftgml)和Storage(单位是G,范围为20~1000,步长是5)。
创建isntance的命令如下:
$ kubectl create -f rds-instance.yaml
创建的过程大约需要15分钟左右,创建完成后,可以再阿里云的rds控制台中查看到正在创建的rds实例,也可以通过kubectl get serviceinstance -n rds-broker-ns的命令来查看。kubectl describe serviceinstance -n rds-broker-ns rds-instance(instance的名称) 可以更加详细的查看instance创建的状态。
创建binding
创建binding会在kubernetes集群中创建一个包含rds实例的host、username、password、port等信息在内的secret。
下面开始创建binding。
建立一个名为rds-binding.yaml的文件,内容如下:
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
使用如下命令创建servicebinding,该servicebinding会在kubernetes集群中创建一个名为“rds-instance-credentials”的secret。其中“parameters”中的“Username”和“Password”可以根据需要指定。
$ kubectl create -f rds-binding.yaml
Binding完成大约需要10分钟左右的时间,可以通过rds控制台中查看相关实例的账号管理来查看,也可以通过kubectl describe serviceisntance -n rds-broker-ns rds-binding(binding的名称)来查看。
使用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
...
使用kubectl get secret -n rds-broker-ns -o json可以获取更详细的信息。
其中username、host、password、port、uri是经过base64加密的访问instance的信息,解密以后即可用来访问rds的instance。
binding的使用
对binding生成的secret中的相关字段进行base64解码后可以访问rds instance了。
通过mysql client访问:
$ 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 distribution
Copyright (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)]>
通过python来访问:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
conn = 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()
通过deployment来访问:
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
相关推荐
离线安装包,亲测可用
客户可以使用此实现在或其他Kubernetes集群中安装Open Service Broker。 此实现旨在实现: 简易安装。 易于扩展。 为常见的OCI服务提供OOTB实现。 OCI Service Broker安装。 服务支持 安装 有关OCI Service ...
Kubernetes指南-倪朋飞.pptx 1-唐继元Kubernetes Master High Availability 高级实践.pdf 2、刘淼-基于 DevOps、微服务及...有容云邓绍军-Kubernetes落地实践.pptx 折800如何用Docker&Kubernetes;构建自动化测环境.pdf
Ansible-ansible-service-broker.zip,代理服务,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
了解更多:我们的在上与我们 给我们电子邮件并订阅Ansible Service Broker的我们的重要连结查看项目和我们使您可以更好地控制开发环境Kubernetes入门使您轻松入门Kubernetes。 单独或作为脚本运行以下命令,以启动...
快速开始 克隆仓库 cd进入仓库 执行:./gradlew clean汇编 以您的cf实例为目标 执行:cf推 执行:cf create-service-broker db-broker用户密码 执行:cf enable-service-access db-broker(您可以添加对于哪个组织...
Cloud Service Broker将服务代理功能与其公开的服务目录分离。 开箱即用的Credhub集成CredHub加密和管理与您使用云服务相关的所有秘密。 社区当您通过公开服务时,可以使使用CSB的每个人都可以使用。 使用轻松...
spring-boot-cf-service-broker-sqlserver Spring Boot Cloud Foundry 服务代理公开 Microsoft SQL Server。 这个项目扩展了 。 请阅读该项目的文件,了解有关安全和部署的一般问题...和... 是的,有一个仪表板。...
cf-service-broker-Postgres 提供Postgres服务实例的Cloud Foundry Service Broker。 支持部署到OpenStack和现有的Postgres服务器。 必须添加配置文件和部署脚本。 还原测试:pg_restore -U beuidgjdxi -c -d DD69...
cf-kafka-servicebroker Cloud Foundry 的基本 kafka 服务代理。 该代理连接到外部动物园管理员,应用程序将查找绑定到它的名为 zookeeper.url 的系统属性。 该代理由部署,部署它的作业绑定了正确的 zookeeper url...
有关与此软件兼容的代理服务器的详细信息,请参阅《 Open Service Broker API项目》的《 。 影片连结 项目状态 服务目录最近切换到新体系结构。 上提供了基于API Server的旧实现。 我们通过提供bug修复直到2020年7...
有时候会遇到这样的问题:未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker。
-React性的,基于Spring云开放服务代理3.3和Spring引导2.4示例应用程序的弹簧WebFlux版本。 3.1.x-基于Spring Cloud Open Service Broker 3.1和Spring Boot 2.2的示例应用程序的响应式Spring WebFlux版本。 基于...
概述该示例项目使用Spring Cloud-Cloud Foundry Service Broker来实现MongoDB服务。 MongoDB服务还使用持久化服务实例和绑定。入门您需要在某处安装和运行MongoDB并在配置连接性。 建立它: ./gradlew build 构建...
Molecularr-db-sequelize-mssql-service-broker
AWS RDS 服务代理 一个可配置的 Cloud Foundry Service...服务和计划的目录在文件 config/aws-rds-service-broker.json 中定义。 安全 在 Cloud Foundy 中创建代理时,需要指定要使用的用户名和密码。 凭据被指定为环境
它还包括用于grafana的仪表板和用于log-service-broker的prometheus警报。 Logs-Service-Broker是一个代理服务器,用于进行日志解析(具有由用户或操作员提供的自定义解析模式),并以rfc 5424 syslog格式转发到一...
AWS Service Broker允许通过实现应用程序平台直接公开本机AWS服务,并直接在应用程序平台内提供AWS Services的简单集成。执照该库已根据Apache 2.0许可获得许可。
假设该Pod已部署到名为3scale-broker-poc的OpenShift项目中。 OpenShift Container Platform 3.6中的服务目录的技术预览版不会刷新对代理目录的调用。 要查看更改,请在通过服务目录配置API管理平台之后,或在将新...
MongoDB Atlas服务经纪人使用Atlas Service Broker从任何支持(例如和连接到 。 直接从您选择的平台上在Atlas上配置托管的MongoDB集群。 包括对Atlas上可用的所有群集配置设置和云提供商的支持。 在不离开平台的情况...