云客户?
免费开始>
在MyJFrog中升级>
云的新功能>





概述

本教程解释了如何指定kubecconfigKubernetes集成为动态节点池认证到自托管的Kubernetes集群。您可以使用EKS、GKE或AKS等云提供商解决方案,也可以使用内部部署的Kubernetes解决方案。

本教程假设您具有Docker和Kubernetes的工作知识,并理解以下概念:

页面内容

配置Kubernetes服务帐户

你必须在Kubernetes中配置服务帐户为pipeline将动态控制的构建节点进程提供标识。

本程序将使用您的个人帐户创建服务帐户。确保你的个人账户有权限这样做。

验证对集群的访问

首先,确保您可以对集群进行身份验证。这意味着您有一个使用您的个人帐户的kubecconfig文件。您可以通过在本地机器上运行此命令来验证这一点,您应该会看到列出的文件。

$HOME/.kube

编写服务帐户规范

要在Kubernetes上创建一个服务帐户,您可以使用kubectl创建一个类似于下面的YML文件:

pipelines_k8s_sa.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管理集成,您就可以添加动态节点池这就使用了它。


  • 没有标签
版权所有©2022 JFrog Ltd.