そして、良いビルド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"、 "horizontalpodautoscalers"、 "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のディレクトリにダウンロードすることができます。