以前,我们已经成功创建了第一个由Apache Ignite支持的Spring boot Application。
在此博客上,我们将重点介绍Kubernetes方面需要做的事情,以便能够启动我们的应用程序。
如先前博客所述,我们需要制定我们的Kubernetes RBAC策略。
我们需要一个角色,一个服务帐户和绑定。
apiVersion: rbac.authorization.k8s.io / v1 kind: ClusterRole metadata: name: job - cache rules: - apiGroups: - "" resources: - pods - endpoints verbs: - get - list - watch - - - apiVersion: v1 kind: ServiceAccount metadata: name: job - cache - - - apiVersion: rbac.authorization.k8s.io / v1 kind: ClusterRoleBinding metadata: creationTimestamp: 2020 - 03 - 07T22 : 23 : 50Z name: job - cache roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: job - cache subjects: - kind: ServiceAccount name: job - cache namespace: "default"
我们的服务帐户将是作业缓存。 这意味着我们应该将作业缓存服务帐户用于基于Ignite的工作负载。
下一步是创建部署。 如前一篇文章所述,该配置与statefulset不会有很大不同。
apiVersion: apps / v1 kind: Deployment metadata: name: job - api - deployment labels: app: job - api spec: replicas: 2 selector: matchLabels: app: job - api template: metadata: labels: app: job - api spec: containers: - name: job - api image: job - api: 1.0 env: - name: IGNITE_QUIET value: "false" - name: IGNITE_CACHE_CLIENT value: "false" ports: - containerPort: 11211 protocol: TCP - containerPort: 47100 protocol: TCP - containerPort: 47500 protocol: TCP - containerPort: 49112 protocol: TCP - containerPort: 10800 protocol: TCP - containerPort: 8080 protocol: TCP - containerPort: 10900 protocol: TCP serviceAccount: job - cache serviceAccountName: job - cache
由于Ignite配置已通过Java代码完成,因此这更简单。
您看到的图像应该是我们之前使用的dockerized Java应用程序。
下一步是定义服务。 我不会全部使用一项服务。 相反,我将为缓存创建一个服务,并为我们的api创建一个服务,以便用作api。
apiVersion: v1 kind: Service metadata: labels: app: job - cache name: job - cache spec: ports: - name: jdbc port: 11211 protocol: TCP targetPort: 11211 - name: spi - communication port: 47100 protocol: TCP targetPort: 47100 - name: spi - discovery port: 47500 protocol: TCP targetPort: 47500 - name: jmx port: 49112 protocol: TCP targetPort: 49112 - name: sql port: 10800 protocol: TCP targetPort: 10800 - name: rest port: 8080 protocol: TCP targetPort: 8080 - name: thin - clients port: 10900 protocol: TCP targetPort: 10900 selector: app: job - api type : ClusterIP
在不涉及kubernetes详细信息的情况下,Ignite节点应使用作业缓存内部dns进行同步。 因此,我们将使用kubernetes内部dns功能与Ignite群集进行通信。
下一步是为实际的作业api应用程序创建服务。
apiVersion: v1 kind: Service metadata: labels: app: job - api name: job - api spec: ports: - name: rest - api port: 80 protocol: TCP targetPort: 8080 selector: app: job - api sessionAffinity: None type : ClusterIP
在以下博客中,我们将我们的配置应用于kubernetes并测试我们的代码库。
翻译自: https://www.javacodegeeks.com/2020/04/apache-ignite-and-spring-on-your-kubernetes-cluster-part-2-kubernetes-deployment.html