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イメージが存在するか、または認証情報に誤りがないかを確認してください。