Podの作成(起動)は、Kubernetesにコンテナを配備することで行います。
●kubectlコマンドによる配備
Ansibleサーバにログインします。詳細は、「第1章 共通の操作」を参照してください。
■deployments.ymlの設定例(Nginxのコンテナを3つ配備する場合)
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
■service.ymlの設定例(Kubernetesクラスタ外から30036でアクセスする場合)
kind: Service apiVersion: v1 metadata: name: my-service spec: type: NodePort ports: - name: http port: 80 targetPort: 80 nodePort: 30036 protocol: TCP selector: app: nginx
以下のコマンドを実行します。
なお、"--namespace"オプションを指定することで配備する名前空間を指定することが可能です。名前空間"kube-system"と"stagehand"は、製品が予約している名前空間のため、この名前空間には配備しないでください。
>kubectl apply -f deployments.yml >kubectl apply -f service.yml
●GitLab Container RegistryからDockerイメージをプルする方法による配備
Ansibleサーバにログインします。詳細は、「第1章 共通の操作」を参照してください。
以下のコマンドを実行します。
$ kubectl create secret docker-registry <secret名> \ --docker-server=172.16.1.0:4567 \ --docker-username=<製品利用者のGitLabのID> \ --docker-password=<製品利用者のGitLabのパスワード> \ --docker-email=<製品利用者のGitLabに登録されたE-mailアドレス>
・Kubernetesのマニフェストを利用する場合
1) Podを配備するマニフェストを記載します。 以下の例のようにspec.imagePullSecrets.nameに作成した<secret名>を記載します。
apiVersion: v1 kind: Pod metadata: name: foo spec: containers: - name: foo image: stagehand/sampleapp:v1 imagePullSecrets: - name: <secret名>
2) kubectlコマンドによる配備を行い、Dockerイメージがプルされることを確認します。
Podの状態が「ImagePullBackOff」の場合は、Dockerイメージのプルが失敗しています。対象Dockerイメージが存在するか、または認証情報に誤りがないかを確認してください。