K8Sコンテキストを作成します

  そして、良いビルドK8Sクラスタの後、今で誤って公共K8Sクラスタを防ぐために、開発者のための独自のコンテキストを作成するために、他のコンテナの準備ができたときにこれが発生し、削除。

ディレクトリを作成し、作業ディレクトリを入力します。1.:

ます。mkdir -p /etc/k8s-conf.d/ 共通
 ます。mkdir -p /etc/k8s-conf.d/ テンプレート
CDの /etc/k8s-conf.d

 

2.次のように、名前空間を作成します。

作成kubectl NS k8s- DEV

作成kubectl NS K8S -testing

K8S-devのとK8S-テストも覚えやすいよう、民間のネームスペース、中国のピンインで名前の名前と、K8S-devのとK8S-テスト運転に各現像缶、共通の名前空間として、

名前はLISTS.TXTファイルに書き込まれ、その後、バッチスクリプトを経由して名前空間を作成することができ、グループのメンバーは、例えば、次のスクリプトを実行します。

 LISTS.TXT | gawkの ' {印刷$ 0 "NSを作成kubectl"} ' | SH

 

以下のように、common.shスクリプトによって、コンテキストの公開プロフィールを作成します。3.:

#!/ binに/ bashの

#一般的なユーザーを作成します。
#ユーザー名
USER = $ 1
CLUSTER = K8S-クラスタ
NAMESPACE = $ 2

接頭辞=は/ etc / K8S-conf.d
CA_PATH =の/ etc / kubernetes / PKI

#秘密鍵を作成し、署名しました
機能createKey {

  ます。mkdir -p $接頭辞/ $ 1
  CD $接頭辞/ $ 1
  「現在$ 1に使用を作成する」エコー
  (umaskを077; opensslのgenrsa -out $ 1.key 2048)
  opensslのREQ -new -key $ 1.key -out $ 1.csr -subj "/ CN = $ 1"
  OpenSSLのX509 -req -in $ 1.csr -CA $ {CA_PATH} /ca.crt -CAkey $ {CA_PATH} /ca.key -CAcreateserialアウト$ 1.crt -days 5000
  opensslのX509 -in $ 1.crt -text -noout
}

createKeyの$ USER

#ユーザープロファイルを作成します。
関数のSetCredentials {
  #クラスタを作成します。
  kubectl設定セットクラスタ$ CLUSTER --server = HTTPS://10.254.18.2:6443 --certificate-権限= $ {CA_PATH} /ca.crt --embed-本命=真--kubeconfig =の/ etc / k8s- conf.d /共通/設定 
  #ユーザープロファイル
  kubectl設定セットの資格情報$ 1 --client-証明書= $ 1.crt --clientキー= $ 1.key --embed-本命=真--kubeconfig =の/ etc / K8S-conf.d /共通/設定
  kubectl設定セットのコンテキストctx- $ 1 --namespace = $ NAMESPACE --cluster = $ CLUSTER --user = $ 1 --kubeconfig =の/ etc / K8S-conf.d /共通/設定
}

SetCredentials $ USER

次のスクリプトを実行します。

bashの共通。SHの K8S-devのk8s- DEV

bashの共通。SH K8S-テストK8S-テスト

これはK8S-devを、K8S-テスト、コンテキストのユーザーを作成する共通のディレクトリ下の設定ファイルに記述された設定ファイルのCTX-K8S-devを、CTX-K8S-テスト、ある、そして個人のユーザープロファイルを作成するには、このに基づいて行われます設定ファイルを追加することができます。

 

以下のように、user.shにより、ユーザーのプライベートコンテキストを作成します。4.:

#!/ binに/ bashの

研究室のチームのメンバーとしてアカウントを作成###

#ユーザー名
USER = $ 1 
CLUSTER = k8s- クラスタ
NAMESPACE = $ 1

接頭辞 =は/ etc / k8s- conf.d
CA_PATH =の/ etc / kubernetes / PKI

#初期化
関数のinit {
   CP /etc/k8s-conf.d/common/config /etc/k8s-conf.d/common/ $ USER.conf
   ます。mkdir -p $接頭辞/ $ USER
  CD $接頭辞 / $ USER

}

その中に

#秘密鍵を作成し、署名しました
機能createKey {

  CD $接頭辞 / $ 1 
  エコー " 今$ 1使っ作成" 
  (umaskを077 ; opensslのgenrsa -out $ 1 .KEY 2048 )を
  OpenSSLのREQ -new -key $ 1 .KEYアウト$ 1 .csrです-subj " / CNは、$ = 1 " 
  のOpenSSL X509 - -req  $ 1 -CA $ {CA_PATH} /ca.crt -CAkey $ {CA_PATH} .csrです/ca.key -CAcreateserial -out $ 1 .CRT -days 5000 
  opensslのX509 -  $ 1 - .CRT -text noout
}

createKeyの$ USER

#ユーザープロファイルを作成します。
関数のSetCredentials {
  #クラスタを作成します。
  kubectlコンフィグ設定 -cluster $ CLUSTER --server = HTTPS:// 10.254.18.2:6443 --certificate-権限= $ {} CA_PATH /ca.crt --embed-本命=真--kubeconfig =の/ etc / k8s- conf.d /共通/ $ 1.conf 
  #用户配置
  kubectlの設定セットは $ -credentials 1 --client-証明書= $ 1 .CRT --clientキー= $ 1 .KEY --embed-本命=  --kubeconfig =の/ etc / K8S-conf.d /共通/ $を1つの.conf
  kubectlコンフィグ設定 -context ctx- $ 1   --namespace = $ NAMESPACE --cluster = $ CLUSTER --user = $ 1 --kubeconfig =の/ etc / K8S-conf.d /共通/ $ 1 の.conf
}

SetCredentials $ USER

次のようにバッチは、ユーザーを作成します。

 LISTS.TXT | gawkの ' {印刷"のbash user.sh" $ 0} ' | SH

 

テンプレート、ユーザーのアクセス許可を構成します。は、テンプレートディレクトリをテンプレート

テンプレートrole.yamlファイルを次のように

apiVersion:rbac.authorization.k8s.io/v1
種類:役割
メタデータ:
  名前空間:テンプレート
  名前:テンプレート役割
ルール:
-  apiGroups:[ ""、 "拡張"、 "アプリケーション"、 "バッチ"、 "自動スケーリング"]
  リソース:[ "展開"、 "サービス"、 "仕事"、 "crontabファイル"、 "daemonsets"、 "replicasets"、 "statefulsets"、 "horizo​​ntalpodautoscalers"、 "replicationcontrollers"、 "cronジョブ"]
  動詞:[ "GET"、 "リスト"、 "時計"、 "作成"、 "更新"、 "パッチ"、 "削除"、 "実行"]
-  apiGroups:[ ""]
  リソース:[ "ポッド"、 "ポッド/ログ"、 "ポッド/ EXEC"、 "エンドポイント"、 "秘密"、 "persistentvolumeclaims"、 "configmaps"]
  動詞:[ "GET"、 "リスト"、 "時計"、 "作成"、 "更新"、 "パッチ"、 "削除"、 "実行"]

---
apiVersion:rbac.authorization.k8s.io/v1beta1
種類:RoleBinding
メタデータ:
  名前空間:テンプレート
  名前:K8S-テンプレートrolebinding
roleRef:
  apiGroup:rbac.authorization.k8s.io
  種類:役割
  名前:テンプレート役割
科目:
-  apiGroup:rbac.authorization.k8s.io
  種類:ユーザー
  名前:テンプレート

テンプレートClusterRole.yamlは次のとおりです。

apiVersion:rbac.authorization.k8s.io/v1
種類:ClusterRole
メタデータ:
  名前:テンプレートClusterRole
ルール:
-  apiGroups:[ ""、 "拡張"、 "アプリケーション"、 "バッチ"、 "自動スケーリング"、 "storage.k8s.io"]
  リソース:[ "*"] 
  動詞:[ "GET"、 "リスト"、 "時計"]
-  apiGroups:[ ""]
  リソース:[ "ノード"] 
  動詞:[ "パッチ"]

---
apiVersion:rbac.authorization.k8s.io/v1beta1
種類:ClusterRoleBinding
メタデータ:
  名前:K8S-テンプレートClusterRoleBinding
roleRef:
  apiGroup:rbac.authorization.k8s.io
  種類:ClusterRole
  名前:テンプレートClusterRole
科目:
-  apiGroup:rbac.authorization.k8s.io
  種類:ユーザー
  名前:テンプレート

Clusterroleは、役割と権限の要件を変更clusterrole role-init.shによって役割やスクリプトを作成することができます。

#!/ binに/ bashの
役割clusterroleとバインドを作成します。##

USER = $ 1 
の接頭辞 =は/ etc / k8s- conf.d

この関数は{変更
   CP $接頭辞/テンプレート/テンプレート-role.yaml $接頭辞/ $ USER
   CP $接頭辞/テンプレート/テンプレート-ClusterRole.yaml $接頭辞/ $ USERを
  CD $接頭辞 / $ USER
   のrm -rf $ USER-役割* .yaml
   MVテンプレート-role.yaml $ USER- role.yaml
   MVテンプレート-ClusterRole.yaml $ USER- ClusterRole.yaml
   のsed -i " S /テンプレート/ $ USER / " $ USER- role.yaml
   のsed -i " S /テンプレート/ $ USER / " $ USER- ClusterRole.yaml
  削除kubectl -f $ USER- ClusterRole.yaml
  作成kubectl -f $ USER- ClusterRole.yaml
  削除kubectl -f $ USER- role.yaml
  作成kubectl -f $ USER- role.yaml
}

変更

次のコマンドを実行し、バッチが役割とclusterroleを作成します。

 LISTS.TXT | gawkの ' {印刷"のbash role-init.sh" $ 0} ' | SH

K8S-devののK8S-テストプロセスが別々に必要と特徴と、手動で-f role.yamlを作成kubectlやノートYAMLファイル名と名前空間にClusterRole.yaml -f作成kubectl role.yamlファイルを変更してからClusterRole.yamlを実行しますそれはすることができます。

 

最後に、* .confのは、グループのメンバーに共通のディレクトリをファイルの一般的なカタログの最後に、confファイルの接尾辞できるWebフォームをダウンロードすることにより、開発者が利用できる、nginxのディレクトリにダウンロードすることができます。

 

 

おすすめ

転載: www.cnblogs.com/tiny1987/p/12018080.html