AKS not creating KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT environment variables

Viewed 529

I've a Deployment and Service in AKS that also has a linked ServiceAccount that enables the pods to get, watch and list services.

In an AKS deployment this used to create the KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT environment variables with the pods. Now, it seems, it doesn't.

The only thing that's changed with that particular service/ deployment was various cluster updates at which some point it seems to have stopped working.

We've tried redeploying/ deleting and recreating the service, but nothing seems to work.

Here is the Deployment yaml:

apiVersion : apps/v1
kind: Deployment
metadata:
  name: open-api 
  labels:
    name: open-api
    app: test-services
spec:
  selector:
    matchLabels:
      name: open-api
      app: test-services
  strategy:
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  minReadySeconds: 60
  replicas: 1
  template:
    metadata:
      labels:
        name: open-api
        app: test-services
    spec:
      serviceAccountName: open-api-account
      containers:
      - name: open-api 
        image: open-api
        terminationMessagePolicy: FallbackToLogsOnError
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "70Mi"
            cpu: "50m"
          limits:
            memory: "150Mi"
            cpu: "100m"
        readinessProbe:
          httpGet:
            path: /pingz
            port: 80
          initialDelaySeconds: 10
          periodSeconds: 3
        env:
        - name: "ASPNETCORE_ENVIRONMENT"
          value: "$ENV_VAR"

Here's the yaml for the Service:

apiVersion: v1
kind: Service
metadata:
  name: open-api
  labels:
    name: open-api
    app: test-services
spec:
  type: ClusterIP
  ports:
  - port: 80 
  selector:
    name: open-api
    app: test-services

Here's the yaml for the ServiceAccount:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: open-api-account
  namespace: test-services
automountServiceAccountToken: false
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: test-services
  name: open-api-service-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["services"]
  verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: open-api-service-reader
  namespace: test-services
subjects:
  - kind: ServiceAccount
    # Reference to ServiceAccount kind's `metadata.name`
    name: open-api-account
    # Reference to ServiceAccount kind's `metadata.namespace`
    namespace: test-services
roleRef:
  kind: ClusterRole
  name: open-api-service-reader
  apiGroup: rbac.authorization.k8s.io
1 Answers

These variables seem to be added automatically for pods that exist in kube-system. Not sure if this can be extended to other namespaces.

Related