配置Kubernetes服务帐户
你必须在Kubernetes中配置服务帐户为pipeline将动态控制的构建节点进程提供标识。
本程序将使用您的个人帐户创建服务帐户。确保你的个人账户有权限这样做。
验证对集群的访问
首先,确保您可以对集群进行身份验证。这意味着您有一个使用您的个人帐户的kubecconfig文件。您可以通过在本地机器上运行此命令来验证这一点,您应该会看到列出的文件。
$HOME/.kube
编写服务帐户规范
要在Kubernetes上创建一个服务帐户,您可以使用kubectl
创建一个类似于下面的YML文件:
apiVersion: v1 kind: ServiceAccount元数据:name: pipelines-k8s-pool # <——任何你喜欢的名字命名空间:jfrog # <——集群命名空间
创建服务帐户
创建服务帐户的命令如下:
Kubectl应用-f pipelines_k8s_sa.yaml
从Kubernetes获取token和IP
创建服务帐户后,您需要从Kubernetes检索一些关键信息,以便通过kubecconfig对其进行配置。
获取服务帐户使用的秘密的名称
可以通过运行以下命令来查找:
kubectl描述serviceAccounts管道-k8s-pool
名称:pipelines-k8s-pool命名空间:jfrog标签:注释: 图片拉拔秘密: 挂载秘密:pipelines-k8s-pool-token-h6pdj令牌:pipelines-k8s-pool-token-h6pdj
注意可安装的秘密
字符串。这持有令牌的密钥的名称,将在下一步中使用。
从密钥中获取令牌
使用可安装的秘密
字符串,您可以获得服务帐户使用的令牌。执行如下命令提取该信息:
Kubectl描述秘密管道-k8s-pool-token-h6pdj
名称:pipelines-k8s-pool命名空间:jfrog标签:注释:kubernetes.io/service-account. Name =pipelines-k8s-pool kubernetes.io/service-account. pooluid=c2117d8e-3c2d-11e8-9ccd-42010a8a012f类型:kubernetes。io/service-account-token Data ==== ca.crt: 1115字节命名空间:7字节token:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InNoaXBwYWJsZS1kZXBsb3ktdG9rZW4tN3Nwc2oiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoic2hpcHBhYmxlLWRlcGxveSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImMyMTE3ZDhlLTNjMmQtMTFlOC05Y2NkLTQyMDEwYThhMDEyZiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OnNoaXBwYWJsZS1kZXBsb3kifQ.ZWKrKdpK7aukTRKnB5SJwwov6PjaADT-FqSO9ZgJEg6uUVXuPa03jmqyRB20HmsTvuDabVoK7Ky7Uug7V8J9yK4oOOK5d0aRRdgHXzxZd2yO8C4ggqsr1KQsfdlU4xRWglaZGI4S31ohCApJ0MUHaVnP5WkbC4FiTZAQ5fO_LcCokapzCLQyIuD5Ksdnj5Ad2ymiLQQ71TUNccN7BMX5aM4RHmztpEHOVbElCWXwyhWr3NR1Z1ar9s5ec6iHBqfkp_s8TvxPBLyUdy9OjCWy3iLQ4Lt4qpxsjwE4NE7KioDPX2Snb6NWFK7lvldjYX4tdkpWdQHBNmqaD8CuVCRdEQ
复制并保存令牌
价值。这将在kubecconfig文件中使用。
获取集群的证书信息
每个集群都有一个证书,客户端可以用它来加密流量。获取证书并写入文件(例如,cluster-cert.txt)
通过运行命令:
Kubectl配置视图——flatten——minify > cluster-cert.txt
apiVersion: v1 clusters:—cluster: certificate-authority-data:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURDekNDQWZPZ0F3SUJBZ0lRZmo4VVMxNXpuaGRVbG15a3AvSVFqekFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlSaVl6RTBOelV5WXkwMk9UTTFMVFExWldFdE9HTmlPUzFrWmpSak5tUXlZemd4TVRndwpIaGNOTVRnd05EQTVNVGd6TVRReVdoY05Nak13TkRBNE1Ua3pNVFF5V2pBdk1TMHdLd1lEVlFRREV5UmlZekUwCk56VXlZeTAyT1RNMUxUUTFaV0V0T0dOaU9TMWtaalJqTm1ReVl6Z3hNVGd3Z2dFaU1BMEdDU3FHU0liM0RRRUIKQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURIVHFPV0ZXL09odDFTbDBjeUZXOGl5WUZPZHFON1lrRVFHa3E3enkzMApPUEQydUZyNjRpRXRPOTdVR0Z0SVFyMkpxcGQ2UWdtQVNPMHlNUklkb3c4eUowTE5YcmljT2tvOUtMVy96UTdUClI0ZWp1VDl1cUNwUGR4b0Z1TnRtWGVuQ3g5dFdHNXdBV0JvU05reForTC9RN2ZpSUtWU01SSnhsQVJsWll4TFQKZ1hMamlHMnp3WGVFem5lL0tsdEl4NU5neGs3U1NUQkRvRzhYR1NVRzhpUWZDNGYzTk4zUEt3Wk92SEtRc0MyZAo0ajVyc3IwazNuT1lwWDFwWnBYUmp0cTBRZTF0RzNMVE9nVVlmZjJHQ1BNZ1htVndtejJzd2xPb24wcldlRERKCmpQNGVqdjNrbDRRMXA2WXJBYnQ1RXYzeFVMK1BTT2ROSlhadTFGWWREZHZyQWdNQkFBR2pJekFoTUE0R0ExVWQKRHdFQi93UUVBd0lDQkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCQwpHWWd0R043SHJpV2JLOUZtZFFGWFIxdjNLb0ZMd2o0NmxlTmtMVEphQ0ZUT3dzaVdJcXlIejUrZ2xIa0gwZ1B2ClBDMlF2RmtDMXhieThBUWtlQy9PM2xXOC9IRmpMQVZQS3BtNnFoQytwK0J5R0pFSlBVTzVPbDB0UkRDNjR2K0cKUXdMcTNNYnVPMDdmYVVLbzNMUWxFcXlWUFBiMWYzRUM3QytUamFlM0FZd2VDUDNOdHJMdVBZV2NtU2VSK3F4TQpoaVRTalNpVXdleEY4cVV2SmM3dS9UWTFVVDNUd0hRR1dIQ0J2YktDWHZvaU9VTjBKa0dHZXJ3VmJGd2tKOHdxCkdsZW40Q2RjOXJVU1J1dmlhVGVCaklIYUZZdmIxejMyVWJDVjRTWUowa3dpbHE5RGJxNmNDUEI3NjlwY0o1KzkKb2cxbHVYYXZzQnYySWdNa1EwL24KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo =服务器:https://35.203.181.169名称:gke_j青蛙-200320_us-west1-a_cluster上下文:-上下文:集群:gke_j青蛙-200320_us-west1-a_cluster用户:gke_j青蛙-200320_us-west1-a_cluster名称:gke_j青蛙-200320_us-west1-a_cluster当前上下文:gke_j青蛙-200320_us-west1-a_cluster类型:配置首选项:{}用户:-名称:gke_j青蛙-200320_us-west1-a_cluster用户:auth-provider: Config: access-token: ya29。Gl2YBba5duRR8Zb6DekAdjPtPGepx9Em3gX1LAhJuYzq1G4XpYwXTS_wF4cieZ8qztMhB35lFJC-DJR6xcB02oXXkiZvWk5hH4YAw1FPrfsZWG57x43xCrl6cvHAp40 cmd-args:配置config-helper——格式= json cmd-path: /用户/ ambarish / google-cloud-sdk / bin / gcloud过期:2018 - 04 - 09年t20:35:02z expiry-key: {.credential。{.credential。Access_token}的名称:GCP
从这里复制并保存两条信息:
certificate-authority-data
服务器
配置Kubernetes中的权限
Kubernetes包括许多资源,包括角色和角色绑定,它们可用于2022世界杯阿根廷预选赛赛程将集群划分为多个命名空间,并将对命名空间资源的访问限制为特定帐户。
本节提供有关在Kubernetes中使用角色和角色绑定定义权限的信息。
创建角色
角色可以设置特定命名空间内的权限,在创建角色时必须指定。每个角色都有一个规则
节定义规则应用的资源和允许的操作,这些都是服2022世界杯阿根廷预选赛赛程务帐户用户在Kubernetes中运行构建所必需的。
例如,下面的示例在jfrog
命名空间,允许对命名空间中的所有资源进行读/写访问:2022世界杯阿根廷预选赛赛程
apiVersion: rbac.authorization.k8s。io/v1类型:角色元数据:namespace: jfrog名称:pipelines-builder-role规则:—apiggroups: ["","apps"]资源:[" persistentvolumec2022世界杯阿根廷预选赛赛程lclaims ","secrets","pods","secrets","configmaps", "deployment "," deployment /scale", "services"]动词:—get - list - watch - create - update - patch - delete
创建角色绑定
中创建的服务帐户现在可以被赋予先前使用角色绑定(RoleBinding)创建的角色jfrog
名称空间:
apiVersion: rbac.authorization.k8s。io/v1类型:RoleBinding元数据:名称:jfrog-builder-rb命名空间:jfrog roleRef: apiggroup: rbac.authorization.k8s. io/v1类型:RoleBinding- kind: ServiceAccount: pipelines-k8s-pool namespace: jfrog . io kind:角色名称:pipelines-builder-role subjects: - kind: ServiceAccount名称:pipelines-k8s-pool
添加Kubernetes管理集成
你必须加上Kubernetes集成作为一个管理集成:
- 来自JFrog平台政府模块转到管道|集成.
- 点击添加集成.
- 在结果中添加新的集成显示,点击集成式字段,并从下拉列表中选择Kubernetes。
- 输入一个名字用于Kubernetes集成
- 按照下面的描述粘贴kubecconfig规范
- 点击创建完成Kubernetes集成的添加
指定kubecconfig
通过前面部分的步骤,您应该获得以下信息:
- <标记>
- < certificate-authority-data >
- < server >
将kubecconfig规范粘贴到Kube配置设置应遵循以下格式:
apiVersion: v1 kind:配置用户:- name: pipelines-k8s-pool # <——您的业务帐户名称user: token:clusters: -cluster: certificate- authorization -data: server: name: self-hosted-cluster contexts: -context: cluster: self-hosted-cluster user: pipelines-k8s-pool # <——您的业务帐户名称namespace: jfrog # <——您定义的命名空间name: pipelines_k8s_context current-context: pipelines_k8s_context
创建动态节点池
一旦您成功地添加了Kubernetes管理集成,您就可以添加动态节点池这就使用了它。