zoukankan      html  css  js  c++  java
  • kong kubernetes安装方法

    1.说明

    kong 使用 kubernetes集群外的Cassandra作为db

    2.kong yaml

    1.包含迁移脚本的yaml

    apiVersion: v1
    kind: Namespace
    metadata:
      name: kong
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongclusterplugins.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .plugin
        description: Name of the plugin
        name: Plugin-Type
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      - JSONPath: .disabled
        description: Indicates if the plugin is disabled
        name: Disabled
        priority: 1
        type: boolean
      - JSONPath: .config
        description: Configuration of the plugin
        name: Config
        priority: 1
        type: string
      group: configuration.konghq.com
      names:
        kind: KongClusterPlugin
        plural: kongclusterplugins
        shortNames:
        - kcp
      scope: Cluster
      validation:
        openAPIV3Schema:
          properties:
            config:
              type: object
            configFrom:
              properties:
                secretKeyRef:
                  properties:
                    key:
                      type: string
                    name:
                      type: string
                    namespace:
                      type: string
                  required:
                  - name
                  - namespace
                  - key
                  type: object
              type: object
            disabled:
              type: boolean
            plugin:
              type: string
            protocols:
              items:
                enum:
                - http
                - https
                - grpc
                - grpcs
                - tcp
                - tls
                type: string
              type: array
            run_on:
              enum:
              - first
              - second
              - all
              type: string
          required:
          - plugin
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongconsumers.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .username
        description: Username of a Kong Consumer
        name: Username
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      group: configuration.konghq.com
      names:
        kind: KongConsumer
        plural: kongconsumers
        shortNames:
        - kc
      scope: Namespaced
      validation:
        openAPIV3Schema:
          properties:
            credentials:
              items:
                type: string
              type: array
            custom_id:
              type: string
            username:
              type: string
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongcredentials.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .type
        description: Type of credential
        name: Credential-type
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      - JSONPath: .consumerRef
        description: Owner of the credential
        name: Consumer-Ref
        type: string
      group: configuration.konghq.com
      names:
        kind: KongCredential
        plural: kongcredentials
      scope: Namespaced
      validation:
        openAPIV3Schema:
          properties:
            consumerRef:
              type: string
            type:
              type: string
          required:
          - consumerRef
          - type
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongingresses.configuration.konghq.com
    spec:
      group: configuration.konghq.com
      names:
        kind: KongIngress
        plural: kongingresses
        shortNames:
        - ki
      scope: Namespaced
      validation:
        openAPIV3Schema:
          properties:
            proxy:
              properties:
                connect_timeout:
                  minimum: 0
                  type: integer
                path:
                  pattern: ^/.*$
                  type: string
                protocol:
                  enum:
                  - http
                  - https
                  - grpc
                  - grpcs
                  - tcp
                  - tls
                  type: string
                read_timeout:
                  minimum: 0
                  type: integer
                retries:
                  minimum: 0
                  type: integer
                write_timeout:
                  minimum: 0
                  type: integer
              type: object
            route:
              properties:
                headers:
                  additionalProperties:
                    items:
                      type: string
                    type: array
                  type: object
                https_redirect_status_code:
                  type: integer
                methods:
                  items:
                    type: string
                  type: array
                path_handling:
                  enum:
                  - v0
                  - v1
                  type: string
                preserve_host:
                  type: boolean
                protocols:
                  items:
                    enum:
                    - http
                    - https
                    - grpc
                    - grpcs
                    - tcp
                    - tls
                    type: string
                  type: array
                regex_priority:
                  type: integer
                strip_path:
                  type: boolean
            upstream:
              properties:
                algorithm:
                  enum:
                  - round-robin
                  - consistent-hashing
                  - least-connections
                  type: string
                hash_fallback:
                  type: string
                hash_fallback_header:
                  type: string
                hash_on:
                  type: string
                hash_on_cookie:
                  type: string
                hash_on_cookie_path:
                  type: string
                hash_on_header:
                  type: string
                healthchecks:
                  properties:
                    active:
                      properties:
                        concurrency:
                          minimum: 1
                          type: integer
                        healthy:
                          properties:
                            http_statuses:
                              items:
                                type: integer
                              type: array
                            interval:
                              minimum: 0
                              type: integer
                            successes:
                              minimum: 0
                              type: integer
                          type: object
                        http_path:
                          pattern: ^/.*$
                          type: string
                        timeout:
                          minimum: 0
                          type: integer
                        unhealthy:
                          properties:
                            http_failures:
                              minimum: 0
                              type: integer
                            http_statuses:
                              items:
                                type: integer
                              type: array
                            interval:
                              minimum: 0
                              type: integer
                            tcp_failures:
                              minimum: 0
                              type: integer
                            timeout:
                              minimum: 0
                              type: integer
                          type: object
                      type: object
                    passive:
                      properties:
                        healthy:
                          properties:
                            http_statuses:
                              items:
                                type: integer
                              type: array
                            interval:
                              minimum: 0
                              type: integer
                            successes:
                              minimum: 0
                              type: integer
                          type: object
                        unhealthy:
                          properties:
                            http_failures:
                              minimum: 0
                              type: integer
                            http_statuses:
                              items:
                                type: integer
                              type: array
                            interval:
                              minimum: 0
                              type: integer
                            tcp_failures:
                              minimum: 0
                              type: integer
                            timeout:
                              minimum: 0
                              type: integer
                          type: object
                      type: object
                    threshold:
                      type: integer
                  type: object
                host_header:
                  type: string
                slots:
                  minimum: 10
                  type: integer
              type: object
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongplugins.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .plugin
        description: Name of the plugin
        name: Plugin-Type
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      - JSONPath: .disabled
        description: Indicates if the plugin is disabled
        name: Disabled
        priority: 1
        type: boolean
      - JSONPath: .config
        description: Configuration of the plugin
        name: Config
        priority: 1
        type: string
      group: configuration.konghq.com
      names:
        kind: KongPlugin
        plural: kongplugins
        shortNames:
        - kp
      scope: Namespaced
      validation:
        openAPIV3Schema:
          properties:
            config:
              type: object
            configFrom:
              properties:
                secretKeyRef:
                  properties:
                    key:
                      type: string
                    name:
                      type: string
                  required:
                  - name
                  - key
                  type: object
              type: object
            disabled:
              type: boolean
            plugin:
              type: string
            protocols:
              items:
                enum:
                - http
                - https
                - grpc
                - grpcs
                - tcp
                - tls
                type: string
              type: array
            run_on:
              enum:
              - first
              - second
              - all
              type: string
          required:
          - plugin
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: tcpingresses.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .status.loadBalancer.ingress[*].ip
        description: Address of the load balancer
        name: Address
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      group: configuration.konghq.com
      names:
        kind: TCPIngress
        plural: tcpingresses
      scope: Namespaced
      subresources:
        status: {}
      validation:
        openAPIV3Schema:
          properties:
            apiVersion:
              type: string
            kind:
              type: string
            metadata:
              type: object
            spec:
              properties:
                rules:
                  items:
                    properties:
                      backend:
                        properties:
                          serviceName:
                            type: string
                          servicePort:
                            format: int32
                            type: integer
                        type: object
                      host:
                        type: string
                      port:
                        format: int32
                        type: integer
                    type: object
                  type: array
                tls:
                  items:
                    properties:
                      hosts:
                        items:
                          type: string
                        type: array
                      secretName:
                        type: string
                    type: object
                  type: array
              type: object
            status:
              type: object
      version: v1beta1
    status:
      acceptedNames:
        kind: ""
        plural: ""
      conditions: []
      storedVersions: []
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: kong-serviceaccount
      namespace: kong
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRole
    metadata:
      name: kong-ingress-clusterrole
    rules:
    - apiGroups:
      - ""
      resources:
      - endpoints
      - nodes
      - pods
      - secrets
      verbs:
      - list
      - watch
    - apiGroups:
      - ""
      resources:
      - nodes
      verbs:
      - get
    - apiGroups:
      - ""
      resources:
      - services
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - networking.k8s.io
      - extensions
      - networking.internal.knative.dev
      resources:
      - ingresses
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ""
      resources:
      - events
      verbs:
      - create
      - patch
    - apiGroups:
      - networking.k8s.io
      - extensions
      - networking.internal.knative.dev
      resources:
      - ingresses/status
      verbs:
      - update
    - apiGroups:
      - configuration.konghq.com
      resources:
      - tcpingresses/status
      verbs:
      - update
    - apiGroups:
      - configuration.konghq.com
      resources:
      - kongplugins
      - kongclusterplugins
      - kongcredentials
      - kongconsumers
      - kongingresses
      - tcpingresses
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ""
      resources:
      - configmaps
      verbs:
      - create
      - get
      - update
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: kong-ingress-clusterrole-nisa-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: kong-ingress-clusterrole
    subjects:
    - kind: ServiceAccount
      name: kong-serviceaccount
      namespace: kong
    ---
    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
        service.beta.kubernetes.io/aws-load-balancer-type: nlb
      name: kong-proxy
      namespace: kong
    spec:
      ports:
      - name: proxy
        port: 80
        protocol: TCP
        targetPort: 8000
        nodePort: 30800
      - name: proxy-ssl
        port: 443
        protocol: TCP
        targetPort: 8443
        nodePort: 30843
      selector:
        app: ingress-kong
      type: NodePort
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: kong-admin-ssl
      namespace: kong
    spec:
      ports:
      - name: kong-admin-ssl
        port: 8444
        protocol: TCP
        targetPort: 8444
        nodePort: 30844
      selector:
        app: ingress-kong
      type: NodePort
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: kong-admin
      namespace: kong
    spec:
      ports:
      - name: kong-admin
        port: 8001
        protocol: TCP
        targetPort: 8001
        nodePort: 30801
      selector:
        app: ingress-kong
      type: NodePort
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: kong-validation-webhook
      namespace: kong
    spec:
      ports:
      - name: webhook
        port: 443
        protocol: TCP
        targetPort: 8080
      selector:
        app: ingress-kong
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: ingress-kong
      name: ingress-kong
      namespace: kong
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ingress-kong
      template:
        metadata:
          annotations:
            kuma.io/gateway: enabled
            prometheus.io/port: "8100"
            prometheus.io/scrape: "true"
            traffic.sidecar.istio.io/includeInboundPorts: ""
          labels:
            app: ingress-kong
        spec:
          containers:
          - env:
            - name: KONG_PROXY_LISTEN
              value: 0.0.0.0:8000,0.0.0.0:8443 ssl http2
            - name: KONG_ADMIN_LISTEN
              value: 0.0.0.0:8001,0.0.0.0:8444 ssl
            - name: KONG_STATUS_LISTEN
              value: 0.0.0.0:8100
            - name: KONG_DATABASE
              value: cassandra
            - name: KONG_CASSANDRA_CONTACT_POINTS
              value: 192.168.3.40,192.168.3.41,192.168.3.42
            - name: KONG_CASSANDRA_KEYSPACE
              value: kong
            - name: KONG_CASSANDRA_REPL_FACTOR
              value: "2"
            - name: KONG_NGINX_WORKER_PROCESSES
              value: "1"
            - name: KONG_ADMIN_ACCESS_LOG
              value: /dev/stdout
            - name: KONG_ADMIN_ERROR_LOG
              value: /dev/stderr
            - name: KONG_PROXY_ERROR_LOG
              value: /dev/stderr
            image: kong:2.0
            lifecycle:
              preStop:
                exec:
                  command:
                  - /bin/sh
                  - -c
                  - kong quit
            livenessProbe:
              failureThreshold: 3
              httpGet:
                path: /status
                port: 8100
                scheme: HTTP
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            name: proxy
            ports:
            - containerPort: 8000
              name: proxy
              protocol: TCP
            - containerPort: 8443
              name: proxy-ssl
              protocol: TCP
            - containerPort: 8100
              name: metrics
              protocol: TCP
            - containerPort: 8001
              name: admin
              protocol: TCP
            - containerPort: 8444
              name: admin-ssl
              protocol: TCP
            readinessProbe:
              failureThreshold: 3
              httpGet:
                path: /status
                port: 8100
                scheme: HTTP
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            securityContext:
              runAsUser: 1000
          - env:
            - name: CONTROLLER_KONG_ADMIN_URL
              value: https://127.0.0.1:8444
            - name: CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY
              value: "true"
            - name: CONTROLLER_PUBLISH_SERVICE
              value: kong/kong-proxy
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            image: kong-docker-kubernetes-ingress-controller.bintray.io/kong-ingress-controller:0.9.1
            imagePullPolicy: IfNotPresent
            livenessProbe:
              failureThreshold: 3
              httpGet:
                path: /healthz
                port: 10254
                scheme: HTTP
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            name: ingress-controller
            ports:
            - containerPort: 8080
              name: webhook
              protocol: TCP
            readinessProbe:
              failureThreshold: 3
              httpGet:
                path: /healthz
                port: 10254
                scheme: HTTP
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
          initContainers:
          - command:
            - /bin/sh
            - -c
            - while true; do kong migrations list; if [[ 0 -eq $? ]]; then exit 0; fi;
              sleep 2;  done;
            env:
            - name: KONG_DATABASE
              value: cassandra
            - name: KONG_CASSANDRA_CONTACT_POINTS
              value: 192.168.3.40,192.168.3.41,192.168.3.42
            - name: KONG_CASSANDRA_KEYSPACE
              value: kong
            image: kong:2.0
            name: wait-for-migrations
          serviceAccountName: kong-serviceaccount
    ---
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: kong-migrations
      namespace: kong
    spec:
      template:
        metadata:
          name: kong-migrations
        spec:
          containers:
          - command:
            - /bin/sh
            - -c
            - kong migrations bootstrap
            env:
            - name: KONG_DATABASE
              value: cassandra
            - name: KONG_CASSANDRA_CONTACT_POINTS
              value: 192.168.3.40,192.168.3.41,192.168.3.42
            - name: KONG_CASSANDRA_KEYSPACE
              value: kong
            image: kong:2.0
            name: kong-migrations
          restartPolicy: OnFailure

    2.不包含迁移脚本

    apiVersion: v1
    kind: Namespace
    metadata:
      name: kong
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongclusterplugins.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .plugin
        description: Name of the plugin
        name: Plugin-Type
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      - JSONPath: .disabled
        description: Indicates if the plugin is disabled
        name: Disabled
        priority: 1
        type: boolean
      - JSONPath: .config
        description: Configuration of the plugin
        name: Config
        priority: 1
        type: string
      group: configuration.konghq.com
      names:
        kind: KongClusterPlugin
        plural: kongclusterplugins
        shortNames:
        - kcp
      scope: Cluster
      validation:
        openAPIV3Schema:
          properties:
            config:
              type: object
            configFrom:
              properties:
                secretKeyRef:
                  properties:
                    key:
                      type: string
                    name:
                      type: string
                    namespace:
                      type: string
                  required:
                  - name
                  - namespace
                  - key
                  type: object
              type: object
            disabled:
              type: boolean
            plugin:
              type: string
            protocols:
              items:
                enum:
                - http
                - https
                - grpc
                - grpcs
                - tcp
                - tls
                type: string
              type: array
            run_on:
              enum:
              - first
              - second
              - all
              type: string
          required:
          - plugin
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongconsumers.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .username
        description: Username of a Kong Consumer
        name: Username
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      group: configuration.konghq.com
      names:
        kind: KongConsumer
        plural: kongconsumers
        shortNames:
        - kc
      scope: Namespaced
      validation:
        openAPIV3Schema:
          properties:
            credentials:
              items:
                type: string
              type: array
            custom_id:
              type: string
            username:
              type: string
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongcredentials.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .type
        description: Type of credential
        name: Credential-type
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      - JSONPath: .consumerRef
        description: Owner of the credential
        name: Consumer-Ref
        type: string
      group: configuration.konghq.com
      names:
        kind: KongCredential
        plural: kongcredentials
      scope: Namespaced
      validation:
        openAPIV3Schema:
          properties:
            consumerRef:
              type: string
            type:
              type: string
          required:
          - consumerRef
          - type
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongingresses.configuration.konghq.com
    spec:
      group: configuration.konghq.com
      names:
        kind: KongIngress
        plural: kongingresses
        shortNames:
        - ki
      scope: Namespaced
      validation:
        openAPIV3Schema:
          properties:
            proxy:
              properties:
                connect_timeout:
                  minimum: 0
                  type: integer
                path:
                  pattern: ^/.*$
                  type: string
                protocol:
                  enum:
                  - http
                  - https
                  - grpc
                  - grpcs
                  - tcp
                  - tls
                  type: string
                read_timeout:
                  minimum: 0
                  type: integer
                retries:
                  minimum: 0
                  type: integer
                write_timeout:
                  minimum: 0
                  type: integer
              type: object
            route:
              properties:
                headers:
                  additionalProperties:
                    items:
                      type: string
                    type: array
                  type: object
                https_redirect_status_code:
                  type: integer
                methods:
                  items:
                    type: string
                  type: array
                path_handling:
                  enum:
                  - v0
                  - v1
                  type: string
                preserve_host:
                  type: boolean
                protocols:
                  items:
                    enum:
                    - http
                    - https
                    - grpc
                    - grpcs
                    - tcp
                    - tls
                    type: string
                  type: array
                regex_priority:
                  type: integer
                strip_path:
                  type: boolean
            upstream:
              properties:
                algorithm:
                  enum:
                  - round-robin
                  - consistent-hashing
                  - least-connections
                  type: string
                hash_fallback:
                  type: string
                hash_fallback_header:
                  type: string
                hash_on:
                  type: string
                hash_on_cookie:
                  type: string
                hash_on_cookie_path:
                  type: string
                hash_on_header:
                  type: string
                healthchecks:
                  properties:
                    active:
                      properties:
                        concurrency:
                          minimum: 1
                          type: integer
                        healthy:
                          properties:
                            http_statuses:
                              items:
                                type: integer
                              type: array
                            interval:
                              minimum: 0
                              type: integer
                            successes:
                              minimum: 0
                              type: integer
                          type: object
                        http_path:
                          pattern: ^/.*$
                          type: string
                        timeout:
                          minimum: 0
                          type: integer
                        unhealthy:
                          properties:
                            http_failures:
                              minimum: 0
                              type: integer
                            http_statuses:
                              items:
                                type: integer
                              type: array
                            interval:
                              minimum: 0
                              type: integer
                            tcp_failures:
                              minimum: 0
                              type: integer
                            timeout:
                              minimum: 0
                              type: integer
                          type: object
                      type: object
                    passive:
                      properties:
                        healthy:
                          properties:
                            http_statuses:
                              items:
                                type: integer
                              type: array
                            interval:
                              minimum: 0
                              type: integer
                            successes:
                              minimum: 0
                              type: integer
                          type: object
                        unhealthy:
                          properties:
                            http_failures:
                              minimum: 0
                              type: integer
                            http_statuses:
                              items:
                                type: integer
                              type: array
                            interval:
                              minimum: 0
                              type: integer
                            tcp_failures:
                              minimum: 0
                              type: integer
                            timeout:
                              minimum: 0
                              type: integer
                          type: object
                      type: object
                    threshold:
                      type: integer
                  type: object
                host_header:
                  type: string
                slots:
                  minimum: 10
                  type: integer
              type: object
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: kongplugins.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .plugin
        description: Name of the plugin
        name: Plugin-Type
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      - JSONPath: .disabled
        description: Indicates if the plugin is disabled
        name: Disabled
        priority: 1
        type: boolean
      - JSONPath: .config
        description: Configuration of the plugin
        name: Config
        priority: 1
        type: string
      group: configuration.konghq.com
      names:
        kind: KongPlugin
        plural: kongplugins
        shortNames:
        - kp
      scope: Namespaced
      validation:
        openAPIV3Schema:
          properties:
            config:
              type: object
            configFrom:
              properties:
                secretKeyRef:
                  properties:
                    key:
                      type: string
                    name:
                      type: string
                  required:
                  - name
                  - key
                  type: object
              type: object
            disabled:
              type: boolean
            plugin:
              type: string
            protocols:
              items:
                enum:
                - http
                - https
                - grpc
                - grpcs
                - tcp
                - tls
                type: string
              type: array
            run_on:
              enum:
              - first
              - second
              - all
              type: string
          required:
          - plugin
      version: v1
    ---
    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: tcpingresses.configuration.konghq.com
    spec:
      additionalPrinterColumns:
      - JSONPath: .status.loadBalancer.ingress[*].ip
        description: Address of the load balancer
        name: Address
        type: string
      - JSONPath: .metadata.creationTimestamp
        description: Age
        name: Age
        type: date
      group: configuration.konghq.com
      names:
        kind: TCPIngress
        plural: tcpingresses
      scope: Namespaced
      subresources:
        status: {}
      validation:
        openAPIV3Schema:
          properties:
            apiVersion:
              type: string
            kind:
              type: string
            metadata:
              type: object
            spec:
              properties:
                rules:
                  items:
                    properties:
                      backend:
                        properties:
                          serviceName:
                            type: string
                          servicePort:
                            format: int32
                            type: integer
                        type: object
                      host:
                        type: string
                      port:
                        format: int32
                        type: integer
                    type: object
                  type: array
                tls:
                  items:
                    properties:
                      hosts:
                        items:
                          type: string
                        type: array
                      secretName:
                        type: string
                    type: object
                  type: array
              type: object
            status:
              type: object
      version: v1beta1
    status:
      acceptedNames:
        kind: ""
        plural: ""
      conditions: []
      storedVersions: []
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: kong-serviceaccount
      namespace: kong
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRole
    metadata:
      name: kong-ingress-clusterrole
    rules:
    - apiGroups:
      - ""
      resources:
      - endpoints
      - nodes
      - pods
      - secrets
      verbs:
      - list
      - watch
    - apiGroups:
      - ""
      resources:
      - nodes
      verbs:
      - get
    - apiGroups:
      - ""
      resources:
      - services
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - networking.k8s.io
      - extensions
      - networking.internal.knative.dev
      resources:
      - ingresses
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ""
      resources:
      - events
      verbs:
      - create
      - patch
    - apiGroups:
      - networking.k8s.io
      - extensions
      - networking.internal.knative.dev
      resources:
      - ingresses/status
      verbs:
      - update
    - apiGroups:
      - configuration.konghq.com
      resources:
      - tcpingresses/status
      verbs:
      - update
    - apiGroups:
      - configuration.konghq.com
      resources:
      - kongplugins
      - kongclusterplugins
      - kongcredentials
      - kongconsumers
      - kongingresses
      - tcpingresses
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - ""
      resources:
      - configmaps
      verbs:
      - create
      - get
      - update
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: kong-ingress-clusterrole-nisa-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: kong-ingress-clusterrole
    subjects:
    - kind: ServiceAccount
      name: kong-serviceaccount
      namespace: kong
    ---
    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
        service.beta.kubernetes.io/aws-load-balancer-type: nlb
      name: kong-proxy
      namespace: kong
    spec:
      ports:
      - name: proxy
        port: 80
        protocol: TCP
        targetPort: 8000
        nodePort: 30800
      - name: proxy-ssl
        port: 443
        protocol: TCP
        targetPort: 8443
        nodePort: 30843
      selector:
        app: ingress-kong
      type: NodePort
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: kong-admin-ssl
      namespace: kong
    spec:
      ports:
      - name: kong-admin-ssl
        port: 8444
        protocol: TCP
        targetPort: 8444
        nodePort: 30844
      selector:
        app: ingress-kong
      type: NodePort
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: kong-admin
      namespace: kong
    spec:
      ports:
      - name: kong-admin
        port: 8001
        protocol: TCP
        targetPort: 8001
        nodePort: 30801
      selector:
        app: ingress-kong
      type: NodePort
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: kong-validation-webhook
      namespace: kong
    spec:
      ports:
      - name: webhook
        port: 443
        protocol: TCP
        targetPort: 8080
      selector:
        app: ingress-kong
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: ingress-kong
      name: ingress-kong
      namespace: kong
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ingress-kong
      template:
        metadata:
          annotations:
            kuma.io/gateway: enabled
            prometheus.io/port: "8100"
            prometheus.io/scrape: "true"
            traffic.sidecar.istio.io/includeInboundPorts: ""
          labels:
            app: ingress-kong
        spec:
          containers:
          - env:
            - name: KONG_PROXY_LISTEN
              value: 0.0.0.0:8000,0.0.0.0:8443 ssl http2
            - name: KONG_ADMIN_LISTEN
              value: 0.0.0.0:8001,0.0.0.0:8444 ssl
            - name: KONG_STATUS_LISTEN
              value: 0.0.0.0:8100
            - name: KONG_DATABASE
              value: cassandra
            - name: KONG_CASSANDRA_CONTACT_POINTS
              value: 192.168.3.40,192.168.3.41,192.168.3.42
            - name: KONG_CASSANDRA_KEYSPACE
              value: kong
            - name: KONG_CASSANDRA_REPL_FACTOR
              value: "2"
            - name: KONG_NGINX_WORKER_PROCESSES
              value: "1"
            - name: KONG_ADMIN_ACCESS_LOG
              value: /dev/stdout
            - name: KONG_ADMIN_ERROR_LOG
              value: /dev/stderr
            - name: KONG_PROXY_ERROR_LOG
              value: /dev/stderr
            image: kong:2.0
            lifecycle:
              preStop:
                exec:
                  command:
                  - /bin/sh
                  - -c
                  - kong quit
            livenessProbe:
              failureThreshold: 3
              httpGet:
                path: /status
                port: 8100
                scheme: HTTP
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            name: proxy
            ports:
            - containerPort: 8000
              name: proxy
              protocol: TCP
            - containerPort: 8443
              name: proxy-ssl
              protocol: TCP
            - containerPort: 8100
              name: metrics
              protocol: TCP
            - containerPort: 8001
              name: admin
              protocol: TCP
            - containerPort: 8444
              name: admin-ssl
              protocol: TCP
            readinessProbe:
              failureThreshold: 3
              httpGet:
                path: /status
                port: 8100
                scheme: HTTP
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            securityContext:
              runAsUser: 1000
          - env:
            - name: CONTROLLER_KONG_ADMIN_URL
              value: https://127.0.0.1:8444
            - name: CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY
              value: "true"
            - name: CONTROLLER_PUBLISH_SERVICE
              value: kong/kong-proxy
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            image: kong-docker-kubernetes-ingress-controller.bintray.io/kong-ingress-controller:0.9.1
            imagePullPolicy: IfNotPresent
            livenessProbe:
              failureThreshold: 3
              httpGet:
                path: /healthz
                port: 10254
                scheme: HTTP
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            name: ingress-controller
            ports:
            - containerPort: 8080
              name: webhook
              protocol: TCP
            readinessProbe:
              failureThreshold: 3
              httpGet:
                path: /healthz
                port: 10254
                scheme: HTTP
              initialDelaySeconds: 5
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
          serviceAccountName: kong-serviceaccount

    3 konga yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: konga
      namespace: kong
    spec:
      ports:
      - name: konga
        port: 1337
        targetPort: 1337
        protocol: TCP
        nodePort: 30837
      selector:
        app: konga
      type: NodePort
      
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: konga
      namespace: kong
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: konga
      template:
        metadata:
          labels:
            name: konga
            app: konga
        spec:
          containers:
          - name: konga
            image: pantsel/konga
            env:
              - name: DB_DATABASE
                value: konga
              - name: DB_USER
                value: konga
              - name: DB_PASSWORD
                value: ""
              - name: DB_PORT
                value: "9306"
              - name: DB_ADAPTER
                value: mysql
              - name: DB_HOST
                value: 192.168.3.35
            ports:
            - name: konga
              containerPort: 1337
              protocol: TCP
  • 相关阅读:
    用Total Commander for Android管理应用程序
    我的zsh简单设置
    C# Newtonsoft.Json 使用
    Wireshark 抓包 test
    C# 调用API test
    C# 委托 的语法 之一
    C# 对象初始化器 和数组初始化语法
    C 语言 数据类型长度
    vue 使用 test
    test
  • 原文地址:https://www.cnblogs.com/breg/p/13204576.html
Copyright © 2011-2022 走看看