K8S 部署 kong 和 konga


创建目录和命名空间

mkdir -p /data/yaml/kong && cd /data/yaml/kong

kubectl ns create kong

创建 postgres 数据库

mkdir -p /data/yaml/kong/postgres cd /data/yaml/kong/postgres

# 事先创建好 nfs 存储

cat deployment.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgresql
  namespace: kong
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgresql
  template:
    metadata:
      labels:
        app: postgresql
    spec:
      containers:
      - name: postgresql
        image: postgres:9.6
        imagePullPolicy: IfNotPresent
       
        env:
        - name: POSTGRES_USER
          value: "kong"
        - name: POSTGRES_DB
          value: "kong"
        - name: POSTGRES_PASSWORD
          value: "kong"
 
        ports:
        - containerPort: 5432
          protocol: TCP
          name: postgresql-port
 
        volumeMounts:
        - name: postgresql-data
          readOnly: false
          mountPath: /var/lib/postgresql/data    
 
      volumes:
        - name: postgresql-data
          nfs:
            path: /data/nfs/postgresql
            server: 172.16.16.140

kubectl apply -f deployment.yml 

cat svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: postgresql
  namespace: kong
  labels:
    app: postgresql
spec:
  ports:
  - name: postgresql
    port: 5432
    protocol: TCP
  selector:
    app: postgresql

kubectl apply -f svc.yaml

初始化 kong 数据

mkdir -p /data/yaml/kong/kong-migrations && cd /data/yaml/kong/kong-migrations

cat job.yaml 
apiVersion: batch/v1
kind: Job
metadata:
  name: kong-migrations
  namespace: kong
spec:
  template:
    metadata:
      name: kong-migrations
    spec:
      containers:
        - name: kong-migrations
          image: kong:2.0.4
          env:
            - name: KONG_DATABASE
              value: 'postgres'
            - name: KONG_PG_HOST
              value: 'postgresql.kong.svc.cluster.local'
            - name: KONG_PG_PASSWORD
              value: 'kong'
            - name: KONG_PG_USER
              value: 'kong'
          args:
            - /bin/sh
            - -c
            - kong migrations bootstrap
      restartPolicy: Never

kubectl apply -f job.yaml 

部署 kong

mkdir -p /data/yaml/kong/kong && cd /data/yaml/kong/kong

cat deployment.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kong
  namespace: kong
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kong
  template:
    metadata:
      labels:
        app: kong
    spec:
      containers:
        - name: kong
          image: kong:2.0.4
          env:
            - name: KONG_DATABASE
              value: 'postgres'
            - name: KONG_PG_HOST
              value: 'postgresql.kong.svc.cluster.local'
            - name: KONG_PG_PASSWORD
              value: 'kong'
            - name: KONG_PG_USER
              value: 'kong'
            - name: KONG_PROXY_ACCESS_LOG
              value: '/dev/stdout'
            - name: KONG_ADMIN_ACCESS_LOG
              value: '/dev/stdout'
            - name: KONG_PROXY_ERROR_LOG
              value: '/dev/stderr'
            - name: KONG_ADMIN_ERROR_LOG
              value: '/dev/stderr'
            - name: KONG_ADMIN_LISTEN
              value: '0.0.0.0:8001, 0.0.0.0:8444 ssl'
          ports:
            - containerPort: 8000
              name: web
            - containerPort: 8001
              name: admin
            - containerPort: 8443
              name: ssl
            - containerPort: 8444
              name: adminssl
          livenessProbe:
            exec:
              command:
                - kong
                - health
            initialDelaySeconds: 5
            timeoutSeconds: 1
            periodSeconds: 5
            successThreshold: 1
            failureThreshold: 3

kubectl apply -f deployment.yml

cat svc.yml 
kind: Service
apiVersion: v1
metadata:
  name: kong-nodeport
  namespace: kong
spec:
  type: NodePort
  ports:
   - name: http
     protocol: TCP
     port: 8000
     targetPort: 8000
     nodePort: 30081
   - name: https
     protocol: TCP
     port: 8443
     targetPort: 8443
     nodePort: 32443
  selector:
    app: kong
---
kind: Service
apiVersion: v1
metadata:
  name: kong-admin
  namespace: kong
spec:
  ports:
   - name: admin
     protocol: TCP
     port: 8001
     targetPort: 8001
  selector:
    app: kong

kubectl apply -f svc.yml 

部署 konga

mkdir -p /data/yaml/kong/konga && cd /data/yaml/kong/konga

cat deployment.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: konga
  namespace: kong
spec:
  replicas: 1
  selector:
    matchLabels:
      app: konga
  template:
    metadata:
      labels:
        app: konga
    spec:
      containers:
        - name: konga
          image: pantsel/konga
          env:
            - name: DB_ADAPTER
              value: 'postgres'
            - name: DB_HOST
              value: 'postgresql.kong.svc.cluster.local'
            - name: DB_PORT
              value: '5432:5432'
            - name: DB_PASSWORD
              value: 'kong'
            - name: DB_USER
              value: 'kong'
            - name: DB_DATABASE
              value: 'konga'
          ports:
            - containerPort: 1337
              name: web

kubectl apply -f deployment.yml

cat svc.yml 
kind: Service
apiVersion: v1
metadata:
  name: konga-nodeport
  namespace: kong
spec:
  type: NodePort
  ports:
   - name: http
     protocol: TCP
     port: 1337
     targetPort: 1337
     nodePort: 31337
  selector:
    app: konga

kubectl apply -f svc.yml 

访问 http://你的IP:31337/
配置默认的连接: http://kong-admin.kong:8001


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM